反应中导入和导出模块

时间:2015-09-24 00:10:56

标签: javascript node.js module reactjs require

我正在React.js项目中工作,我需要在其他项目中导入一些JavaScript,还有一些我必须导出它。

例如我有A.js需要一些库:

var EventEmitter = require('EventEmitter');
var React = require('react');
//some code here
//some function definition
var fun = function(){...}
module.exports = fun;

然后我有另一个B.js,它不仅需要库,还需要我自己的JavaScript。例如B.js(我想两者都在同一个文件夹中):

var fun = require('./B.js');
var React = require('react');
//some other code here

我尝试使用库requirejs并尝试使用npm和nodejs,但我不确定它是如何工作的。 我正在使用flux-chat example

2 个答案:

答案 0 :(得分:0)

RequireJS和npm是解决模块的两种不同方法。人们经常使用bower下载支持AMD / UMD的库,并添加RequireJS配置文件的路径。 RequireJS为您解析依赖项。

我建议你使用npm和webpack来管理你的模块。那里还有很多文件。

假设您要创建单页应用程序。当您使用npm安装lib时,它会从npm注册表下载到本地磁盘的node_modules中。你如何在你的HTML中指出node_modules/文件夹的路径?答案是你不能。 Webpack为您完成任务。

Webpack将所有javascript文件和必要的依赖项(本地node_modules中的文件)捆绑到一个大文件中。然后,您可以在html中设置<script src="...">的路径。

答案 1 :(得分:0)

首先,如果您为A.jsB.js指定的代码不适合您,那将是因为您正在尝试在{x 1}}内部使用B.js本身......我认为你要做的就是A.js需要B.js,如下所示:

B.js修正:

var fun = require('./A.js');
var React = require('react');
//some other code here

注意fun现在需要A.js

如果我上面注意到的拼写错误并不能解决您的问题,请继续阅读......

当您A.js B.js需要A.js时,您到底想要做什么?

如果我不了解您正在尝试完成的内容(或者直到我看到B.jsA.js文件中的实际代码),我的最佳答案就是:< / p>

module.exports = function(){ fun: function(param){...logic here...} } 看起来像是:

B.js

var React = require('react'); var A = require('./B.js'); var Whatever = React.createClass({ render: function() { return ( <div> {A.fun('param value')} </div> ); } }); 看起来像这样:

A.js

如果另一方面,您尝试将B.js导出为可以要求的React组件,并添加到另一个(SELECT t2.site, t2.statusname AS statusname, COALESCE(t1.total,0) AS total FROM ( SELECT site, status, COUNT(*) AS total FROM participant GROUP BY site, status ) AS t1 RIGHT JOIN ( SELECT DISTINCT participant_status.id AS status, participant_status.name AS statusname, participant.site FROM participant CROSS JOIN participant_status ORDER BY status, site ) AS t2 ON t1.site = t2.site AND t1.status = t2.status )React组件......我的回答是与众不同。