[译] Flux 入门

原文链接:The Flux Quick Start Guide

本文将概括性的介绍如何使用 Flux 架构开发 JavaScript 应用,用尽可能少的篇幅带你熟悉 Flux 的核心概念。你也可以结合 starter kit 一起学习。你最好先对 React 有基本的了解,并且有一些开发 React 组件的经验。如果不熟悉也没关系,可以先读一读这篇文章 The React Quick Start Guide (译注:中文版本 React 入门)。

概念

Flux 是用来构建用户端 Web 应用的架构,它包含三个核心概念:Views, StoresDispatcher,还有一些次级概念:Actions, Action Types, Action CreatorsWeb Utils

请耐心学习以下概念定义然后再看后面的教程。当你准备开始开发 Flux 应用之前,建议你再回过头来看一遍基本概念。

核心概念

  • Views 即 React 组件。它们负责渲染界面,捕获用户事件,从 Stores 获取数据。

  • Stores 用于管理数据。 一个 Store 管理一个区域的数据,当数据变化时它负责通知 Views。

  • Dispatcher 接收新数据然后传递给 Stores,Stores 更新数据并通知 Views。

次级概念

  • Actions 是传递给 Dispatcher 的对象,包含新数据和 Action Type。

  • Action Types 指定了可以创建哪些 Actions,Stores 只会更新特定 Action Type 的 Actions 触发的数据。

  • Action Creators 是 Actions 的创建者,并将其传递给 Dispatcher 或 Web Utils。

  • Web Utils 是用于与外部 API's 通信的对象。例如 Actions Creator 可能需要从服务器请求数据。

是不是一次给的信息量太多啦?强烈建议你们结合 starter kit 边看文章边敲代码,可以达到更好的学习效果。

提示:这里省略了 constants 和 Web Utils,是为了更快速简单地理解 Flux。更深入阅读 官方示例 能很好地补充这些知识。

Views

部署好 starter kit 后,你会看到在 src 目录下有个 app.js 文件。

var React = require('react');
var Comments = require('./views/comments');
var CommentForm = require('./views/comment-form');

var App = React.createClass({
  
  render: function() {
    return (
      
); } }); React.render(, document.getElementById('app'));

上面代码把 Views 渲染到 DOM 中。先忽略 Comments,看一下 CommentFrom 的实现。

var React = require('react');

var CommentActionCreators = require('../actions/comment-action-creators');

var CommentForm = React.creatClass({
  
  onSubmit: function(e) {
    var textNode = this.refs.text.getDOMNode();
    var text = textNode.value;

    textNode.value = '';

    CommentActionCreators.createComment({
      text: text
    });
  },

  render: function() {
    return (