Posts React-boilterplate 설명
Post
Cancel

React-boilterplate 설명

react-boilerplate 설명

  • react-boilerplate 라는, 리액트 프로젝트를 처음 시작할때 create-react-app을 대체하여 사용하기에 아주 좋아보이는 프로젝트가 있다.

    https://github.com/react-boilerplate/react-boilerplate

  • 상당히 많은 초기 설정을 하는데, 너무 많아서 뭐가 뭔지 알아보기가 어렵다.

  • 따라서 이 초기설정들을 설명해놓은 글이 있고, 이 포스트는 이 글을 보고 공부한 내용을 적은 것이다.

    • https://github.com/react-boilerplate/react-boilerplate/blob/master/docs/general/introduction.md

Tech stack

  • Core
    • React
    • React Router
    • Redux
    • Redux Saga
    • Reselect
    • Immer
    • Styled Componentes
  • Unit Testing
    • Jest
    • react-testing-library
  • Linting
    • ESLint
    • Prettier
    • stylelint

Project Structure

app/

  • 앱을 개발하는 곳
  • container, component 구조를 사용
    • container : redux store랑 연결 되어있는 컴포넌트를 포함
    • components : container에 데이터로 종속된 컴포넌트들을 포함
    • 컨테이너는 어떻게 동작하는지를 정의하고, 컴포넌트는 어떻게 보이는지를 정의함

internals/

  • Configuration, generator, template을 포함
  • 앱의 엔진이라고 부를 수도 있음.
  • 우리의 소스코드는, 웹팩을 거쳐 브라우저가 이해할 수 있는 형태로 변환된다.
  • internals/webpack
    • ECMAScript 6 or ECMAScript 7 를 사용할텐데, 웹백이 주요 브라우저와의 호환성을 맞춰준다.
  • internals/generators
    • 새로운 컴포넌트, 컨테이너, 라우트를 스캐폴딩한다
  • internals/mocks
    • jest가 테스팅할때 필요한 mocks를 포함함

server/

  • development and production server configuration 파일을 포함

Basic building Block

app/app.js 설정

  • @babel/polyfill : generator function, Promise 등을 가능하게 함
  • history : 브라우저 히스토리를 기억함. ConnectedRouter에서 사용됨
  • redux store 가 instantiated 됨
  • ReactDOM.render() : <App /> 만이 아니라, <Provider /> <LanguageProvider /> <ConenctedRouter /. 또한 렌더함
  • Hot module replacement 가 vanilla webpack HMR 를 통해 셋업됨.
    • 모든 reducer, injected sagas, componentes, containers, i18n message를 hot reloadable 가능 하게 함
  • i18n internatinalization support setup
  • Offline 플러그인이 포함되어 앱을 offine-first하게 함(https://developers.google.com/web/fundamentals/codelabs/offline)
  • <Provider /> 가 redux store와 앱을 연결시킴
  • <LanguageProvider /> 가 language translation을 지원함

Redux

  • configureStore.js에 store 설정이 있음.
  • 사용중인 middleware
    • Router middleware : route와 redux store의 동기를 담당
    • Redux saga

Reselect

  • redux state를 슬라이싱하고, 컴포넌트와 관련있는 sub-tree만 제공함.
  • Computational power, memoization, composability 라는 세가지 feature를 가지고 있음.
  • 자세히는 관련 문서를 봐야할 거 같음.

Linting

  • ESLint, stylelint, Prettier 가 설정되어있어, 세이브할때마다 자동으로 검사해줌
  • git hook 또한 설정되어있어서 커밋할때마다 자동으로 코드 상의 에러를 분석/수정 해줌.
  • 사용하고 싶지 않으면 package.json의 lint-staged 섹션을 봐라.
This post is licensed under CC BY 4.0 by the author.

9251 LCS

expo 배포

Comments powered by Disqus.