Skip to content

Commit 77c4660

Browse files
committed
add README-zh.md
1 parent 6555d46 commit 77c4660

File tree

1 file changed

+86
-0
lines changed

1 file changed

+86
-0
lines changed

README-zh.md

Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
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 “bundlers”](#user-content-学习-javascript-打包工具)
26+
* [ES6](#user-content-学习-es6)
27+
* [Routing](#user-content-学习路由-routing)
28+
* [Flux](#user-content-学习-flux)
29+
* [Immutable.js](#user-content-学习-immutablejs)
30+
* [Relay, Falcor 等](#user-content-learning-relay-falcor-等)
31+
32+
并且: **你不需要把这些都学完才去使用 React.** 只需要在你遇到问题需要解决的时候, 才进入下一步的学习.
33+
34+
## 学习 React 本身
35+
36+
有一种常见的误解是: 你需要花费大量时间在配置工具上, 然后才开始学习 React. 在官方文档里, 你可以找到 [copy-paste HTML template](https://facebook.github.io/react/docs/getting-started.html#quick-start-without-npm). 只需要保存为 `.html` 文件, 你就可以马上开始学习了. **这个步骤不需要任何工具, 你也无需额外学习工具使用, 直到你能熟练掌握 React 基础.**
37+
38+
我依然觉得, 学习 React 最简单的方法是通过官方教程 [the official tutorial](https://facebook.github.io/react/docs/tutorial.html).
39+
40+
## 学习 `npm`
41+
42+
`npm` 是 Node.js 包管理工具, 也是前端工程师和设计师分享 JavaScript 代码最流行的方式. 它包含了名为 `CommonJS` (请 Google 一下 -- 它很重要) 的模块系统, 让你可以安装 JavaScript 写的命令行工具.
43+
44+
在 React 生态圈中, 大部分可重用的组件、库和工具遵循 `CommonJS` 模块规范, 可通过 `npm` 来安装.
45+
46+
## 学习 JavaScript 打包工具
47+
48+
出于若干技术原因, `CommonJS` 模块 (也就是 `npm` 里的所有内容) 不能直接用到浏览器. 你需要一个 JavaScript “打包工具(bundler)” 来把这些模块打包成 `.js` 文件, 使你可以在网页中通过 `<script>` 标签引入它们.
49+
50+
JavaScript 打包工具包括有 `webpack``browserify`. 它们都是好的选择, 但我个人更喜欢 `webpack` , 因为它有许多功能简化大型应用开发. 鉴于 webpack 文档可能令人感到困惑, 我也写了两篇文章: [plug-and-play template for getting started](https://github.com/petehunt/react-webpack-template) 和针对更复杂用例的 [how-to guide for webpack](https://github.com/petehunt/webpack-howto).
51+
52+
要记住的一点: `CommonJS` 使用了 `require()` 函数来引入模块, 因此许多人对此感到疑惑, 并认为需要导入 `require.js` 到工程里. 出于若干技术原因, 我建议你避免使用 `require.js`. 它在 React 生态圈并不流行.
53+
54+
## 学习 ES6
55+
56+
在 JSX (你会在 React tutorial 中学习到) 以外, 你可能会注意到 React 例子中一些有趣的语法. 这被称为 ECMAScript6, 是 JavaScript 的最新版本. 由于 ES6 很新, 你可能还没学习到, 浏览器也可能尚未兼容, 但别担心, 你的打包工具会为你自动转换成兼容代码.
57+
58+
如果你只想要使用 React 来把事情做完, **你可以跳过 ES6 的学习,** 或者留到以后再学习.
59+
60+
## 学习路由 (routing)
61+
62+
“单页面应用” 是时下的技术热点. 当网页加载完成, 用户点击链接或者按钮的时候, JavaScript 会更新页面和改变地址栏, 但网页不会刷新. 地址栏的管理就是通过 **路由(router)** 来完成的.
63+
64+
目前 React 生态圈最受欢迎的路由解决方案是 [react-router](https://github.com/rackt/react-router). 如果你正在创建一个单页面应用, 有什么理由不去使用它呢?
65+
66+
**如果你创建的并非单页面应用, 请不要使用路由.** 无论如何, 大部分项目都是从大型应用中的小组件开始的.
67+
68+
## 学习 Flux
69+
70+
你可能听过 Flux, 不过关于 Flux 有大量的错误资讯.
71+
72+
许多人一坐下来刚开始构建应用, 就认为需要用 Flux 来定义他们的数据模型. **这样采用 Flux 是不对的, Flux 应该在大量组件被建立完成以后才被引入.**
73+
74+
React 组件之间存在层级关系. 在很多时候, 你的数据模型也跟随这种层级. 这种情况下, Flux 不会给你很大帮助. 但有些时候, 你的数据模型没有层次, 当你的 React 组件开始接受没有关联的 `props` 的时候, 或者当小部分组件开始变得复杂的时候, 你才可能需要看看 Flux.
75+
76+
**你会知道什么时候需要用 Flux. 如果你不确定是否需要用它, 你就不需要它.**
77+
78+
如果你决定使用 Flux, 现在最流行的、文档最全的 Flux 库是 [Redux](http://redux.js.org/). 当然也有许多其他选择, 你或者会有兴趣尝试使用它们, 但我的建议是只需要用最流行的那一个就足够了.
79+
80+
## 学习 Immutable.js
81+
82+
[Immutable.js](https://facebook.github.io/immutable-js/) 提供了一系列的数据结构, 以帮助解决构造 React 应用时的某些性能问题. 这是一个很棒的库, 你可能会在应用发展的过程里大量用到它, 但直到你在意识到性能问题以前, 它是完全不必要的.
83+
84+
## Learning Relay, Falcor 等
85+
86+
这些技术可以帮你减少 AJAX 请求数, 它们仍然是非常前沿的, 所以如果你没有遇到过多 AJAX 请求的问题, 就不需要用到 Relay 或者 Falcor.

0 commit comments

Comments
 (0)