使用Browserify创建React Bundle

时间:2016-01-23 18:55:18

标签: reactjs browserify

问题与here相同,但我不明白答案。所以,我的问题是答案。

答案是

  

您的react.js文件/模块未公开变量React和   ReactDOM你实例化。在节点中,您将这些方法公之于众   像这样修改module.exports对象:

     

let chans = results.channels.electricity.chan; let total = chans.reduce((sum, { day: [ { _ } ] }) => (sum + Number(_)), 0);

最后,我的问题是:“你将这些方法公之于众”?

1 个答案:

答案 0 :(得分:1)

您通过在module.exports属性上定义这些方法来公开这些方法。例如,假设您有一个带有

的文件reactExports.js
var iWontGetThere = 'I am in this module only';
module.exports = { React: React, ReactDOM: ReactDOM } 

现在在另一个文件中,您可以使用这些方法并使用它们,如下所示:

var React = require('reactExports').React;
var SweetComponent = React.createClass({
   render: function() {
     return (
        <div>React is cool and I can use it in here!</div>
     );
   }
});
module.exports = SweetComponent;

现在想象你想在另一个组件中渲染SweetComponent。如果我没有写module.exports = SweetComponent,那么在另一个组件中要求此模块将不会像导入空对象{}那样生效。 让我们说我试图console.log(React.iWontGetThere);会发生什么?我会得到一个引用错误,因为它没有与reactExports.js的内容一起导出 - 它只存在于该模块中,但它没有公开。

这是一个人为的例子,但这里有趣的故事是引入封装模块的能力。我建议阅读有关节点模块的更多信息here 并查看this answer。 并举一些例子来解决它。

tl; dr:定义变量并且没有module.exports = some_value语句,然后要求相同的文件将默认为空对象。