在反应中导入和导出模块

Posted

技术标签:

【中文标题】在反应中导入和导出模块【英文标题】:importing and exporting modules in react 【发布时间】:2015-12-21 11:16:13 【问题描述】:

我在一个 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

【问题讨论】:

你的问题是你如何构建你的 JavaScript 服务? 【参考方案1】:

首先,如果您为 A.jsB.js 指定的代码对您不起作用,那是因为您试图在其内部要求 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.jsB.js 时,您到底想做什么?

如果我不知道更多你想要完成的事情(或者直到我看到你的 A.jsB.js 文件中的实际代码),我最好的答案是:

A.js 看起来像:

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 导出为 React 组件,您可以要求并添加到另一个 (B.js) React 组件中......我的答案会有所不同。

【讨论】:

【参考方案2】:

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

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

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

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

【讨论】:

以上是关于在反应中导入和导出模块的主要内容,如果未能解决你的问题,请参考以下文章

如何在Chrome中导入和导出密码

我们可以从 dll 中导入和导出函数吗

如何使用 Blazor 框架在前端浏览器中导入和导出 Excel

如何在 django 项目中导入和显示 csv 文件

为啥在导入模块时会显示此错误?

PyQt QListView 拖放问题,用于在一个列表中导入和重新排列