如何使用Facebook React管理组件依赖顺序?

时间:2014-02-17 06:45:56

标签: javascript facebook reactjs

假设我有两个React组件,A和B,其中B依赖于(利用)A。假设A在a.js中,B在b.js中。

React有没有办法安全地解决从B到A的依赖?从而保证无论我实际包含a.js和b.js的顺序如何,事情仍然会正确解决?

我相信Google Closure编译器在开发和生产模式下都有效地伪造了一个依赖系统。这使得不同代码包含在源中的顺序无关紧要; React有这样的东西吗?

1 个答案:

答案 0 :(得分:5)

  

注意:下面的答案已经过时了。

     

我很久以前就停止使用RequireJS,因为它在开发过程中变得相当慢,因为它没有将JS捆绑在开发中的单个文件中。

     

这些天我大多是using Webpack   您还可以考虑其他捆绑包,例如BrowserifyRollup

     

我使用ES modules作为模块系统transpiled Babel进入CommonJS。最终我计划完全转向ES模块,因为更多的捆绑商及其一流的支持,如Rollup和Webpack 2,成为主流。


旧答案

据我所知,React本身并没有提供任何依赖管理系统;如果您需要,您必须使用适合您工作流程的现有工具。

就个人而言,我很高兴RequireJS使用AMD sugar syntax,所以我的模块看起来像这样:

/** @jsx React.DOM */
/* jshint trailing:false, quotmark:false, newcap:false */
define(function (require) {

  'use strict';

  var React = require('react'),
      _ = require('underscore'),
      JoinWidget = require('common/views/join_widget');

  var LoginWidget = React.createClass({
    // ...
  });
});

每个React视图和其他任何类一样,都有自己的文件。

这在开发环境中很好但我不想在生产中动态加载脚本,因此我使用grunt-requirejs任务与almond以正确的顺序连接文件,因此它们总是同步加载一个文件。