|
| 1 | +# React 개발자 로드맵 |
| 2 | + |
| 3 | +[README in Chinese](README-CN.md) |
| 4 | + |
| 5 | +[README in English](README.md) |
| 6 | + |
| 7 | +[README in Japanese](README-JA.md) |
| 8 | + |
| 9 | +[README in Portuguese (Brazil)](README-PTBR.md) |
| 10 | + |
| 11 | +[README in Russian](README-RU.md) |
| 12 | + |
| 13 | +[README in Spanish](README-ES.md) |
| 14 | + |
| 15 | +> 2019년 React 개발자 로드맵: |
| 16 | +
|
| 17 | +아래에는 React 개발자가 되기 위한 학습 로드맵과 관련 라이브러리들이 적혀있는 차트가 있습니다. React 개발자로서 다음에 무엇을 배워야하는지 묻는 모든 사람들을 위한 팁으로 이 차트를 만들었습니다. |
| 18 | + |
| 19 | +## 주의사항 |
| 20 | + |
| 21 | +> 이 로드맵의 목적은 전체에 대한 윤곽을 제공하는 것입니다. 여러분이 무조건 힙하고 트렌디한 것을 선택하기보단, 앞으로 무엇을 배워야할지 혼란스러울때 이 로드맵이 좋은 가이드가 될 것입니다. 기술을 선택함에 있어 하나의 도구가 다른 도구보다 어떤 경우에 적합한지 이해해야하며, 힙하고 트렌디한 기술들이 항상 모든 업무에 적합하진 않다는 것을 염두에 두시기 바랍니다. |
| 22 | +
|
| 23 | +## 로드맵 |
| 24 | + |
| 25 | + |
| 26 | + |
| 27 | +## 학습 리소스 |
| 28 | + |
| 29 | +1. 기본기 |
| 30 | + 1. HTML |
| 31 | + - HTML의 기본기를 다져주세요. |
| 32 | + - 연습삼아 몇 개의 페이지를 만들어보세요. |
| 33 | + 2. CSS |
| 34 | + - CSS의 기본기를 다져주세요. |
| 35 | + - 이전 단계에서 만들었던 페이지들을 꾸며보세요. |
| 36 | + - Grid와 flexbox를 활용해 페이지를 만들어보세요. |
| 37 | + 3. JS 기본 |
| 38 | + - 문법에 익숙해지세요. |
| 39 | + - DOM을 활용한 기본적인 작업들을 배우세요. |
| 40 | + - JS에 대한 일반적인 메커니즘을 배우세요. (호이스팅, 이벤트 버블링, 프로토타입) |
| 41 | + - AJAX (XHR) 요청을 해보세요. |
| 42 | + - 새로운 기능을 배우세요. (ECMA Script 6+) |
| 43 | + - 선택적으로, jQuery 라이브러리에 익숙해지면 좋습니다. |
| 44 | +2. 기본적인 개발 스킬 |
| 45 | + 1. GIT에 대해 공부하고, GitHub에 몇 개의 Repository를 만들어도 보고, 다른 사람들에게 여러분의 코드를 공유해보세요. |
| 46 | + 2. Request 메소드 (GET, POST, PUT, PATCH, DELETE, OPTIONS)와 더불어 HTTP(S) 프로토콜에 대해 공부하세요. |
| 47 | + 3. 구글링을 겁내지 마세요. [구글로 파워서칭 해보기](http://www.powersearchingwithgoogle.com/) |
| 48 | + 4. 터미널에 익숙해지시고, 여러분만의 shell (bash, zsh, fish)을 설정해보세요. |
| 49 | + 5. 알고리즘과 자료구조에 대한 몇 개의 책을 읽어보세요. |
| 50 | + 6. 디자인 패턴에 대한 몇 개의 책을 읽어보세요. |
| 51 | +3. [공식 홈페이지](https://reactjs.org/tutorial/tutorial.html)에서 튜토리얼을 읽어보거나 몇 개의 [코스들](https://egghead.io/courses/the-beginner-s-guide-to-react)을 수강해보세요. |
| 52 | +4. 여러분이 사용할 도구들에 익숙해지세요. |
| 53 | + 1. 패키지 관리 |
| 54 | + - [npm](https://www.npmjs.com/) |
| 55 | + - [yarn](https://yarnpkg.com/lang/en/) |
| 56 | + - [pnpm](https://pnpm.js.org/) |
| 57 | + 2. 태스크 러너 |
| 58 | + - [npm scripts](https://docs.npmjs.com/misc/scripts) |
| 59 | + - [gulp](https://gulpjs.com/) |
| 60 | + - [Webpack](https://webpack.js.org/) |
| 61 | + - [Rollup](https://rollupjs.org/guide/en) |
| 62 | + - [Parcel](https://parceljs.org/) |
| 63 | +5. 스타일링 |
| 64 | + 1. CSS 전처리기 |
| 65 | + - [Sass/CSS](https://sass-lang.com/) |
| 66 | + - [PostCSS](https://postcss.org/) |
| 67 | + - [Less](http://lesscss.org/) |
| 68 | + - [Stylus](http://stylus-lang.com/) |
| 69 | + 2. CSS 프레임워크 |
| 70 | + - [Bootstrap](https://getbootstrap.com/) |
| 71 | + - [Materialize](https://materializecss.com/), [Material UI](https://material-ui.com/), [Material Design Lite](https://getmdl.io/) |
| 72 | + - [Bulma](https://bulma.io/) |
| 73 | + - [Semantic UI](https://semantic-ui.com/) |
| 74 | + 3. CSS 설계 |
| 75 | + - [BEM](http://getbem.com/) |
| 76 | + - [CSS Modules](https://github.com/css-modules/css-modules) |
| 77 | + - [Atomic](https://acss.io/) |
| 78 | + - [OOCSS](https://github.com/stubbornella/oocss/wiki) |
| 79 | + - [SMACSS](https://smacss.com/) |
| 80 | + - [SUITCSS](https://suitcss.github.io/) |
| 81 | + 4. CSS in JS |
| 82 | + - [Styled Components](https://www.styled-components.com/) |
| 83 | + - [Radium](https://formidable.com/open-source/radium/) |
| 84 | + - [Emotion](https://emotion.sh/) |
| 85 | + - [JSS](http://cssinjs.org/) |
| 86 | + - [Aphrodite](https://github.com/Khan/aphrodite) |
| 87 | +6. 상태관리 |
| 88 | + 1. [컴포넌트 상태관리](https://reactjs.org/docs/faq-state.html)/[Context API](https://reactjs.org/docs/context.html) |
| 89 | + 2. [Redux](https://redux.js.org/) |
| 90 | + 1. 비동기 액션 (사이드 이펙트) |
| 91 | + - [Redux Thunk](https://github.com/reduxjs/redux-thunk) |
| 92 | + - [Redux Better Promise](https://github.com/Lukasz-pluszczewski/redux-better-promise) |
| 93 | + - [Redux Saga](https://redux-saga.js.org/) |
| 94 | + - [Redux Observable](https://redux-observable.js.org) |
| 95 | + 2. 헬퍼 라이브러리 |
| 96 | + - [Rematch](https://rematch.gitbooks.io/rematch/) |
| 97 | + - [Reselect](https://github.com/reduxjs/reselect) |
| 98 | + 3. 데이터 지속성 |
| 99 | + - [Redux Persist](https://github.com/rt2zz/redux-persist) |
| 100 | + - [Redux Phoenix](https://github.com/adam-golab/redux-phoenix) |
| 101 | + 4. [Redux Form](https://redux-form.com) |
| 102 | + 3. [MobX](https://mobx.js.org/) |
| 103 | +7. 정적 타입 체킹 |
| 104 | + - [PropTypes](https://reactjs.org/docs/typechecking-with-proptypes.html) |
| 105 | + - [TypeScript](https://www.typescriptlang.org/) |
| 106 | + - [Flow](https://flow.org/en/) |
| 107 | +8. 폼(Form) 헬퍼 |
| 108 | + - [Redux Form](https://redux-form.com) |
| 109 | + - [Formik](https://github.com/jaredpalmer/formik) |
| 110 | + - [Formsy](https://github.com/formsy/formsy-react) |
| 111 | + - [Final Form](https://github.com/final-form/final-form) |
| 112 | +9. 라우팅 |
| 113 | + - [React-Router](https://reacttraining.com/react-router/) |
| 114 | + - [Router5](https://router5.js.org/) |
| 115 | + - [Redux-First Router](https://github.com/faceyspacey/redux-first-router) |
| 116 | + - [Reach Router](https://reach.tech/router/) |
| 117 | +10. API 클라이언트 |
| 118 | + 1. REST |
| 119 | + - [Fetch](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) |
| 120 | + - [SuperAgent](https://visionmedia.github.io/superagent/) |
| 121 | + - [axios](https://github.com/axios/axios) |
| 122 | + 2. GraphQL |
| 123 | + - [Apollo](https://www.apollographql.com/docs/react/) |
| 124 | + - [Relay](https://facebook.github.io/relay/) |
| 125 | + - [urql](https://github.com/FormidableLabs/urql) |
| 126 | +11. 유틸리티 라이브러리 |
| 127 | + - [Lodash](https://lodash.com/) |
| 128 | + - [Moment](https://momentjs.com/) |
| 129 | + - [classnames](https://github.com/JedWatson/classnames) |
| 130 | + - [Numeral](http://numeraljs.com/) |
| 131 | + - [RxJS](http://reactivex.io/) |
| 132 | + - [ImmutableJS](https://facebook.github.io/immutable-js/) |
| 133 | + - [Ramda](https://ramdajs.com/) |
| 134 | +12. 테스팅 |
| 135 | + 1. 유닛 테스팅 |
| 136 | + - [Jest](https://facebook.github.io/jest/) |
| 137 | + - [Enzyme](http://airbnb.io/enzyme/) |
| 138 | + - [Sinon](http://sinonjs.org/) |
| 139 | + - [Mocha](https://mochajs.org/) |
| 140 | + - [Chai](http://www.chaijs.com/) |
| 141 | + - [AVA](https://github.com/avajs/ava) |
| 142 | + - [Tape](https://github.com/substack/tape) |
| 143 | + 2. End to End 테스팅 |
| 144 | + - [Selenium](https://www.seleniumhq.org/), [Webdriver](http://webdriver.io/) |
| 145 | + - [Cypress](https://cypress.io/) |
| 146 | + - [Puppeteer](https://pptr.dev/) |
| 147 | + - [Cucumber.js](https://github.com/cucumber/cucumber-js) |
| 148 | + - [Nightwatch.js](http://nightwatchjs.org/) |
| 149 | + 3. 통합 테스팅 |
| 150 | + - [Karma](https://karma-runner.github.io/) |
| 151 | +13. 국제화 |
| 152 | + - [React Intl](https://github.com/yahoo/react-intl) |
| 153 | + - [React i18next](https://react.i18next.com/) |
| 154 | +14. 서버사이드 렌더링 |
| 155 | + - [Next.js](https://nextjs.org/) |
| 156 | + - [After.js](https://github.com/jaredpalmer/after.js) |
| 157 | + - [Rogue](https://github.com/alidcastano/rogue.js) |
| 158 | +15. 정적 사이트 생성기 |
| 159 | + - [Gatsby](https://www.gatsbyjs.org/) |
| 160 | +16. 백엔드 프레임워크 통합 |
| 161 | + - [React on Rails](https://shakacode.gitbooks.io/react-on-rails/content/) |
| 162 | +17. 모바일 |
| 163 | + - [React Native](https://facebook.github.io/react-native/) |
| 164 | + - [Cordova](https://cordova.apache.org/)/[Phonegap](https://phonegap.com/) |
| 165 | +18. 데스크탑 |
| 166 | + - [Proton Native](https://proton-native.js.org/) |
| 167 | + - [Electron](https://electronjs.org/) |
| 168 | + - [React Native Windows](https://github.com/Microsoft/react-native-windows) |
| 169 | +19. 가상현실 (VR) |
| 170 | + - [React 360](https://facebook.github.io/react-360/) |
| 171 | + |
| 172 | +## 마무리 |
| 173 | + |
| 174 | +이 로드맵에 개선이 필요하면 수정사항을 포함한 PR을 보내주시거나 이슈에 의견을 남겨주세요. 저 또한 이것을 계속 개선하려고 노력 중에 있으니, 여러분께서도 다시 찾아오시기 쉽도록 Star을 부탁드립니다. |
| 175 | + |
| 176 | +## 컨트리뷰션 |
| 177 | + |
| 178 | +이 로드맵은 [Draw.io](https://www.draw.io/)를 사용하여 작성되었습니다. 프로젝트 파일들은 `/src` 디렉토리에 있습니다. 수정하기 위해선 draw.io를 열어서, **Open Existing Diagram** 를 누르시고 프로젝트 내의 `xml` 파일을 선택해주세요. 로드맵 파일이 열릴 것입니다. 수정하시고, readme의 image 파일을 변경해주시고 PR을 만들어주세요. (png 파일로 내보내기 해주세요). |
| 179 | + |
| 180 | +- 수정 / 개선사항과 함께 Pull Request를 남겨주세요. |
| 181 | +- Issues에서 의견을 나눠주세요. |
| 182 | +- 다른 사람들에게도 알려주세요. |
| 183 | + |
| 184 | +## 라이센스 |
| 185 | + |
| 186 | +[](https://creativecommons.org/licenses/by-nc-sa/4.0/) |
0 commit comments