├── README-zh.md ├── README-cs.md ├── README.md ├── README-ru.md ├── README-vi.md └── README-es.md /README-zh.md: -------------------------------------------------------------------------------- 1 | # 如何学习React 2 | 3 | 如果你是一个 React (或者前端) 新手, 出于以下的原因, 你可能会对这个生态圈感到困惑: 4 | 5 | * React 的目标群体历来是喜欢尝试新事物的开发者和前端专家. 6 | * Facebook 开源的内容是应用在他们的实际应用中, 因此他们没有关注那些比 Facebook 小的工程需求. 7 | * 现有的 React 指引水平参差不齐. 8 | 9 | 在本文中, 我会假设你已有使用 HTML, CSS 和 JavaScript 开发网页的基础. 10 | 11 | ## 为什么要听我的? 12 | 13 | 关于 React, 现在已经有大量的相互冲突的建议了, 为什么要听我的? 14 | 15 | 因为我是在 Facebook 构建并开源 React 的最初成员之一. 现在我离开了 Facebook 并加入了一家初创公司, 所以我也不会站在 Facebook 的立场上来表态. 16 | 17 | ## 如何踏入 React 生态圈 18 | 19 | 所有的软件都是建立在某个技术栈之上的, 你需要对整个技术栈有足够深入的理解, 才能建造你的应用. 为什么 React 生态圈的工具似乎总让人感觉压力山大呢, 因为它总是以错误的顺序被解释: 20 | 21 | 你应该按照以下的顺序进行学习, **而不是跳着学或者同时学习**: 22 | 23 | * [React](#user-content-学习-react-本身) 24 | * [`npm`](#user-content-学习-npm) 25 | * [JavaScript “打包工具”](#user-content-学习-javascript-打包工具) 26 | * [ES6](#user-content-学习-es6) 27 | * [Routing](#user-content-学习路由-routing) 28 | * [Flux](#user-content-学习-flux) 29 | 30 | 31 | **你不需要把这些都学完才去使用 React.** 只需要在你遇到问题需要解决的时候, 才进入下一步的学习. 32 | 33 | 另外, 在 React 社区中, 有一些前沿主题是经常被提及到的, 以下的这些主题很有意思, 但也很难弄懂, 所以它们远没有上面的主题流行, **大多数应用也不需要用到这些.** 34 | 35 | * [内联样式](#user-content-学习内联样式) 36 | * [服务器端渲染](#user-content-学习服务器端渲染) 37 | * [Immutable.js](#user-content-学习-immutablejs) 38 | * [Relay, Falcor 等](#user-content-学习-relay-falcor-等) 39 | 40 | ## 学习 React 本身 41 | 42 | 有一种常见的误解是: 你需要花费大量时间在配置工具上, 然后才开始学习 React. 在官方文档里, 你可以找到 [copy-paste HTML template](https://facebook.github.io/react/docs/getting-started.html#quick-start-without-npm). 只需要保存为 `.html` 文件, 你就可以马上开始学习了. **这个步骤不需要任何工具, 你也无需额外学习工具使用, 直到你能熟练掌握 React 基础.** 43 | 44 | 我依然觉得, 学习 React 最简单的方法是通过官方教程 [the official tutorial](https://facebook.github.io/react/docs/tutorial.html). 45 | 46 | ## 学习 `npm` 47 | 48 | `npm` 是 Node.js 包管理工具, 也是前端工程师和设计师分享 JavaScript 代码最流行的方式. 它包含了名为 `CommonJS` 的模块系统, 让你可以安装 JavaScript 写的命令行工具. 作为背景知识, 可以阅读 [这篇文章](http://0fps.net/2013/01/22/commonjs-why-and-how/) 了解 `CommonJS` 对于浏览器的重要性, 阅读 [CommonJS Spec Wiki](http://wiki.commonjs.org/wiki/Introduction) 了解关于 `CommonJS` API 的更多内容 49 | 50 | 在 React 生态圈中, 大部分可重用的组件、库和工具遵循 `CommonJS` 模块规范, 可通过 `npm` 来安装. 51 | 52 | ## 学习 JavaScript 打包工具 53 | 54 | 出于若干技术原因, `CommonJS` 模块 (也就是 `npm` 里的所有内容) 不能直接用到浏览器. 你需要一个 JavaScript “打包工具(bundler)” 来把这些模块打包成 `.js` 文件, 使你可以在网页中通过 `