2021. 4. 3. 20:19ㆍReact, Javascript
React 설치
이 글에서는 무작정 리액트를 시작하는 법을 포스팅 하겠다.
윈도우라면 cmd창을, 맥이라면 터미널 앱을 연다
아래와 같이 설치를 진행한다.
npm install -g create-react-app
create-react-app my-app
cd my-app
npm start
create-react-app 은 리엑트 프로젝를 만들기 위해
따로 설정해야할 기본 세팅을 자동으로 해주는 세트아이템 정도로 생각하면 된다.
프로그래밍을 배우기 위해 컴퓨터를 사는데 메인보드, 그래픽카드, 램 등을 따로 사서 조립해도 되지만
편리함을 위해 조립 PC를 살 수도 있다.
create-react-app는 리액트를 하기위해 필요한 여러 라이브러리를 편리하게 세팅해주는
조립PC라고 생각하자.
npm start를 실행하면 아래와 같은 화면에 브라우저에 나온다.
자 이제 반은 끝났다.
필수 라이브러리 설치
리액트 어플리케이션을 만들때 필요한 라이브러리는 요구사항에 따라 많아질 수 있겠지만
몇가지 필수 라이브러리는 설치하고 개발을 시작하는 것이 좋다
1. react-router-dom
우리가 웹 어플리케이션을 만들게 되면 페이지가 하나인 어플리케이션을 만들지 않을 것이다.
여러 페이지를 만들고 그것이 유기적으로 왔다갔다 하는 어플리케이션을 구성할 확률이 높다.
그럴때 리액트 어플리케이션의 이동을 담당하게 될 라이브러리가 react-router-dom 이다
npm install react-router-dom
설치 후 소스에 라우팅 세팅을 해준다.
보통 page 소스를 다 모아두는 pages 폴더를 만들고 아래에 페이지 소스들을 만든다.
위처럼 구성한 이후 App.js로 들어가보자
import './App.css';
import { BrowserRouter as Router, Switch, Route } from "react-router-dom"; //router모듈 import
import Home from './pages/Home' //만든 Home 페이지 소스 import
function App() {
return (
<Router>
<Switch>
<Route exact path="/" component={Home}/> {/* 경로에 따른 페이지 구성 */}
{/* <Route path="/a" component={Home}/> */}
{/* <Route path="/b" component={Home}/> */}
</Switch>
</Router>
);
}
export default App;
위와 같이 라우트 세팅을 해주면 된다.
이제 프로젝트에 필요한 페이지 소스를 pages 아래 만들면 '/이름' 형태로 만든 페이지의 주소를 정해주고
route에 추가해주면 된다.
2. axios
다음은 axios이다. 이것은 ajax 통신을 통해 서버의 데이터들을 받아오는 통신 모듈이다.
웹 어플리케이션 내부에서 모든 데이터를 가지고 기능을 수행하는 프로젝트는 아예 없을 것이다.
대부분 백엔드가 따로 있고 그곳에서 데이터를 받아서 페이지를 구성하는 방식으로
진행될 것이다.
그럴때 꼭 통신 모듈이 필요하기 때문에 axios를 설치해 준다.
npm install axios
pages 폴더 아래 통신 모듈을 관리할 service 폴더를 만들어 주고
BaseService.js 파일을 생성해 준다.
여기에 기본적으로 필요한 통신 모듈을 정의해 둘 것이다.
import axios from "axios";
export default class BaseService {
static getInstance() {
if (!BaseService.instance) {
BaseService.instance = new BaseService();
}
return BaseService.instance;
}
config={
method: '',
url: '',
headers: {'Content-Type':'application/json'},
data: {}
}
async fnRest(method, url, requestBody){
this.config.method = method
this.config.url = 'https://exampleURL.com/' + url //뒤에 붙여서 필요한 호출
this.config.data = requestBody
try {
console.log("axios request url : " + url + ", requestBody : " + requestBody)
const response = await axios.request(this.config)
console.log(response)
if (response.status === 200) {
return response.data
} else {
const noResponseError = {
successOrNot: 'N',
statusCode: 'NO.RESPONSE',
data: {}
}
throw noResponseError
}
} catch (errorResponse) {
if (errorResponse && (errorResponse).error) {
const errors = {
successOrNot: 'N',
statusCode: 'ERROR.RESPONSE',
data: errorResponse.data
}
throw errors
} else {
const unknownError= {
successOrNot: 'N',
statusCode: 'UNKNOWN.SERVER',
data: {}
}
throw unknownError
}
}
}
}
위와 같이 통신 모듈을 정의해 둔다. 기본적인 에러처리와 해더 세팅, POST인지 GET인지 등을 구분하는
메소드 세팅 등을 기본적으로 해준다.
그리고 통신이 필요한 순간 이 클레스의 인스턴스를 가져와 호출에 사용하도록 한다.
3. Material-UI
다음은 Material-UI 다. 이것은 자주 쓰이는 html 화면 및 그에 맞는 기능을 만들어 놓은
라이브러리이다.
체크박스를 만들려면 input 태그를 시작으로 타입을 체크박스로 두고 이것을 체크했을때의 이벤트 등을
새로 정의해야한다. 또한 스타일도 CSS를 활용해 체크가 됬을때와 안됬을때를 나눠 적용해야한다.
Material-UI를 쓰면 이 작업이 반 이상 줄어든다.
설치해 두고
npm install @material-ui/core
npm install @material-ui/icons
아래 공식문서를 보면서 필요한 화면과 기능을 가져다 쓰면 된다.
Installation - Material-UI
Install Material-UI, the world's most popular React UI framework.
material-ui.com
이렇게 무작정 시작하는 리액트 환경 구성을 해보았다.
다음 포스트 부터는 화면들을 하나씩 만들어 보며
리액트의 감을 익혀보겠다.
'React, Javascript' 카테고리의 다른 글
[React-Typescript] form 지옥에서 벗어나기 (formik) (0) | 2021.12.30 |
---|---|
[React] 상대경로 지옥에서 벗어나기 (craco) (1) | 2021.06.14 |
TypeScript로 Stack 구현하기 (feat. 배열Array 사용하지 않기) (0) | 2021.01.24 |
nest js란? 기초 설치, 설계, 특징 (0) | 2021.01.16 |
[React]별점(Star Rating) 기능 구현 (React + Typescript) (1) | 2021.01.08 |