Explorar el Código

chinese docs edits

Evan You hace 9 años
padre
commit
2ef58fb99a
Se han modificado 3 ficheros con 20 adiciones y 20 borrados
  1. 5 5
      docs/zh-cn/concepts.md
  2. 5 5
      docs/zh-cn/intro.md
  3. 10 10
      docs/zh-cn/state.md

+ 5 - 5
docs/zh-cn/concepts.md

@@ -1,6 +1,6 @@
 # 核心概念
 
-和 Vue 一样,Vuex 暴露一个 `Vuex` 构造,你可以实例化一个 `Vuex 实例`。一般情况下,一个应用中只需要一个 Vuex 实例。你可以把它当成一个『额外的 store』来管理应用状态
+和 Vue 一样,Vuex 暴露一个 `Vuex` 构造函数,你可以实例化一个 `Vuex 实例`。一般情况下,一个应用中只需要一个 Vuex 实例。你可以把它当成一个『强化版的 store』
 
 每个 Vuex 实例由三个部分组成:
 
@@ -8,15 +8,15 @@
 
 - **Mutations**: 一些用于改变状态的函数。Mutations **一定是同步的**。
 
-- **Actions**: 一些用于dispatch mutations 的函数。一个 action 可以包含异步操作,并且可以 dispatch 多个 mutations.
+- **Actions**: 一些用于触发 (dispatch) mutations 的函数。一个 action 可以包含异步操作,并且可以触发多个 mutations.
 
-我们把 *mutations* 和 *actions* 分开而不是直接用函数去操作 state,原因是我们希望把 mutation 和异步操作分离。许多应用之所以复杂,正是犹豫这两者的耦合。我们解耦两者后,它们都会变得清晰和易于测试。
+我们把 *mutations* 和 *actions* 分开而不是直接用函数去操作 state,原因是我们希望把 mutation 和异步操作分离。许多应用之所以复杂,正是源自于这两者的耦合。我们解耦两者后,它们都会变得清晰和易于测试。
 
 > 如果你熟悉 Flux,在这里要注意两者的一些差异:Vuex mutations 相当于 Flux 的 **actions**, 而 Vuex 的 actions 相当于 Flux 的 **action creators**.
 
 ### 创建一个 Vuex 实例
 
-> **NOTE:** 我们将用 ES2015 语法写接下来的例代码。如果你还没开始接触 ES2015,那么你应该[现在就开始用](https://babeljs.io/docs/learn-es2015/)! 我们还默认你已经熟悉 [Building Large-Scale Apps with Vue.js](http://vuejs.org/guide/application.html) 中所提到的概念。
+> **NOTE:** 我们将用 ES2015 语法写接下来的例代码。如果你还没开始接触 ES2015,那么你应该[现在就开始用](https://babeljs.io/docs/learn-es2015/)! 我们还默认你已经熟悉 [Building Large-Scale Apps with Vue.js](http://vuejs.org/guide/application.html) 中所提到的概念。
 
 创建一个 Vuex 实例非常简单——只需要把以上提到的三个部分放到一起:
 
@@ -30,4 +30,4 @@ const vuex = new Vuex({
 })
 ```
 
-实例化后,你就能通过 `vuex.state` 访问 state, 通过 `vuex.actions` 访问 actions。你不能直接访问 mutation functions——你只能通过 actions 或执行 `vuex.disptach()` 访问。接下来我们会更详细地讨论这几个概念。
+实例化后,你就能通过 `vuex.state` 访问 state, 通过 `vuex.actions` 访问 actions 函数。你不能直接访问 mutation 函数 —— 你只能通过调用 actions 或是 `vuex.disptach()` 来触发 mutations。接下来我们会更详细地讨论这几个概念。

+ 5 - 5
docs/zh-cn/intro.md

@@ -1,13 +1,13 @@
 ## 什么是 Vuex?
 
-Vuex 是 Vue.js 应用的 state 管理结构。它受启发于 [Flux](https://facebook.github.io/flux/) 和 [Redux](https://github.com/rackt/redux),但 Vuex 的设计更加符合 Vue.js 的响应系统(reactivity system)。
+Vuex 是一个专门为 Vue.js 应用设计的状态管理架构。它借鉴了 [Flux](https://facebook.github.io/flux/) 和 [Redux](https://github.com/rackt/redux) 的设计思想,但简化了概念和 API,并且采用了一种更加符合 Vue.js 的数据响应系统(reactivity system)的实现
 
 ## 我为什么需要它?
 
-当你的应用还很简单的时候,你可能并不需要 Vuex,也不建议在过早地去用它。相反,如果你正在构建一个规模越来越大的 SPA 时,你会开始考虑如何管理好 Vue 组件之外的东西。这就是 Vuex 要做的事
+当你的应用还很简单的时候,你可能并不需要 Vuex。我也并不建议在所有的场合都使用 Vuex。但是,如果你正在构建一个较大规模的 SPA,你可能已经开始思考应该如何处理 Vue 组件之外的应用结构。这就是 Vuex 要解决的问题
 
-我们在用 Vue.js 的时候,通常会把 state 储存在组件的内部。也就是说,每一个组件都拥有自己单独的状态。然而有时候我们需要把一部分的 state 共享给其它组件,通常我们都是使用第三方的事件系统去达到这个目的。这个模式的问题在于,事件流会在逐渐增长的组件树中变得复杂,并且在出现问题的时候很难去发现问题的所在。
+我们在用 Vue.js 的时候,通常会把状态储存在组件的内部。也就是说,每一个组件都拥有一部分状态,整个应用的状态是分散在多个地方的。然而我们经常遇到的一个需求就是需要把一部分的状态共享给其它组件。通常我们会使用 Vue 或是第三方的事件系统去达到这个目的。但基于事件的问题在于,事件流会在逐渐增长的组件树中变得复杂,并且在出现问题的时候很难去发现问题的所在(典型的如事件 ping-pong,即子组件 dispatch 到父组件,再由父组件 broadcast)
 
-为了更好的解决在大型应用中共享 state 的问题,我们需要把组件 state(component local state)和应用级 state(application level state)区分开来。应用级的 state 不属于任何特定的组件,但每一个组件仍然可以观察到 state 变化从而自动更新 DOM。通过把 state 管理逻辑放在同一个地方,我们就不需要在各个地方去处理各种事件,因为任何牵扯到多个组件的东西,都会放在这个地方。这样做也能使记录和检查 state 的改变成为可能,甚至可以做些像 time-travel 这样的调试
+为了更好的解决在大型应用中共享状态的问题,我们需要把组件的本地状态 (component local state) 和应用状态 (application level state) 区分开来。应用级的状态不属于任何特定的组件,但每一个组件仍然可以通过 Vue 的响应系统去侦听其变化从而自动更新 DOM。通过把应用的状态管理逻辑放在同一个地方,我们就不需要在各个地方去处理各种事件,因为任何牵扯到多个组件的东西,都会放在这个地方。这样做也能使记录和检查状态的改变成为可能,甚至可以做出像 time-travel 这样的调试功能
 
-即使 Vuex 对状态管理的分离有一些约束,但不会影响你实际代码结构的灵活性。
+Vuex 也对状态管理的代码分离有一定程度的约束,但不会影响你实际代码结构的灵活性。

+ 10 - 10
docs/zh-cn/state.md

@@ -2,13 +2,13 @@
 
 ### 单状态树
 
-Vuex 使用 **单状态树(single state tree)** —— 也就是单个对象包含整个应用的 state。这使得我们在 debugging 的过程中能直接定位相关的 state,快速地取得当前应用的 state 快照(snapshots)。
+Vuex 使用 **单状态树(single state tree)** —— 也就是单个对象包含整个应用的状态。这使得我们能够方便地定位某一部分特定的状态,在 debugging 的过程中也能轻易地取得当前应用的状态快照(snapshots)。
 
-单状态树和模块化不冲突——在往后的章节里我们会讨论如何将状态管理分离到各个子模块中。
+单状态树和模块化不冲突 —— 在往后的章节里我们会讨论如何将状态管理分离到各个子模块中。
 
 ### 在 Vue 组件中获得 Vuex State
 
-和 Vue 实例中的 `data` 对像一样,`state` 对象一旦进入 Vuex 实例,就会变成响应的(powered by [Vue.js 响应系统](http://vuejs.org/guide/reactivity.html))。也就是说,要将 Vuex state 和 Vue 组件联系在一起,只需要简单地将前者返回给后者的 computed 属性。
+和 Vue 实例中的 `data` 对像一样,`state` 对象一旦进入 Vuex 实例,就会被 Vue.js 改造成响应式对象(参见 [Vue.js 响应系统](http://vuejs.org/guide/reactivity.html))。因此,要让 Vuex state 来驱动 Vue 组件的渲染,只需要简单地在一个计算属性中返回 Vuex state 中需要的部分即可:
 
 ``` js
 // 一个 Vue 组件模块内部
@@ -25,11 +25,11 @@ export default {
 }
 ```
 
-不需要建立任何监听器或者建立组件和 store 之间的联系,你唯一要记住的是,**在 computed 属性里,必须通过 `vuex.state.xxx` 引用 state**。不能在 computed 属性外部存放 state 的引用。
+我们并不需要建立任何监听器或者用一个 API 去建立组件和 store 之间的联系 - Vue 的响应式系统会确保界面的自动更新。唯一要记住的是,**在计算属性里,必须通过 `vuex.state.xxx` 引用 state**。不要在计算属性外部存放 state 的引用。
 
-> Flux reference: this can be roughly compared to [`mapStateToProps`](https://github.com/rackt/react-redux/blob/master/docs/api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options) in Redux and [getters](https://optimizely.github.io/nuclear-js/docs/04-getters.html) in NuclearJS.
+> Flux 相关:这里计算属性的用法可以和 Redux 的 [`mapStateToProps`](https://github.com/rackt/react-redux/blob/master/docs/api.md#connectmapstatetoprops-mapdispatchtoprops-mergeprops-options) 以及 NuclearJS 的 [getters](https://optimizely.github.io/nuclear-js/docs/04-getters.html) 做类比。
 
-你会问为什么我们不直接用 `data` 去绑定 vuex state,我们看以下例子:
+你可能会问为什么我们不直接用 `data` 去绑定 vuex state,我们看以下例子:
 
 ``` js
 export default {
@@ -41,12 +41,12 @@ export default {
 }
 ```
 
-因为 `data` 函数不追踪任何 reactive dependencies, 仅仅是一个对 `vuex.state.message` 的静态引用。即使之后 Vuex state 被改变,组件也无法知道它的改变。而 computed 属性不同,它在 state 改变的时候会跟踪所有 reactive dependencies
+因为 `data` 函数不追踪任何响应式依赖, 我们得到的仅仅是一个对 `vuex.state.message` 的静态引用。即使之后 Vuex state 被改变,组件也无法知道它的改变。而计算属性则不同,它在求值时会自动跟踪依赖,因此当状态改变时会自动触发更新
 
 ### 组件不允许直接改变 state
 
-使用只读的 computed 属性有一个好处就是,能更好的遵守 **组件永远不能直接改变 Vuex state** 的准则。由于我们希望每一个 state 都意图清晰且可被跟踪,所有的 vuex state mutations 都必须在 vuex mutation handlers 当中
+使用只读的计算属性有一个好处就是,能更好的遵守 **组件永远不能直接改变 Vuex state** 的准则。由于我们希望每一次状态的变动都意图清晰且可被跟踪,因此所有的全局状态变动都必须在 vuex 的 mutation handlers 当中执行
 
-为了践行这条准则,当你在 [Debug 模式](debug.md) 中在 mutation handlers 外部改变 Vuex state 时,Vuex 会抛出错误。
+为了践行这条准则,在 [严格模式](strict.md) 中如果在 mutation handlers 外部改变 Vuex state,Vuex 会抛出错误。
 
-根据这条准则,我们的 Vue 组件处理的事情就很少了:只需要通过只读的 computed 属性和 Vuex state 建立联系,改变 state 的唯一方法是调用 **actions**. 它们照样能在必要时对 state 进行操作,但我们再也不需要在组件里做任何数据获取和 state 相关的逻辑了。
+根据这条准则,我们的 Vue 组件处理的事情就很少了:它们只需要通过只读的计算属性和 Vuex state 建立联系,而改变 state 的唯一方法就是调用 **actions**. 组件依然能在必要时拥有和操作自己的本地状态,但我们再也不需要在组件里包含任何与全局状态相关的逻辑了。