假设我有两个React组件,A和B,其中B依赖于(利用)A。假设A在a.js中,B在b.js中。
React有没有办法安全地解决从B到A的依赖?从而保证无论我实际包含a.js和b.js的顺序如何,事情仍然会正确解决?
我相信Google Closure编译器在开发和生产模式下都有效地伪造了一个依赖系统。这使得不同代码包含在源中的顺序无关紧要; React有这样的东西吗?
答案 0 :(得分:5)
注意:下面的答案已经过时了。
我很久以前就停止使用RequireJS,因为它在开发过程中变得相当慢,因为它没有将JS捆绑在开发中的单个文件中。
这些天我大多是using Webpack 您还可以考虑其他捆绑包,例如Browserify和Rollup。
我使用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以正确的顺序连接文件,因此它们总是同步加载一个文件。