2016-04-13 21 views
0

新建browserify:我有一个正常的js文件的一些反应在命名空间分组相似的组件:browserify和巴贝尔命名错误进行响应

var myNameSpace= { 
'reactFunc1': React...., 
'reactFunc2': React...., 
'reactFunc3': React...., 
'nonreactFunc1' function(..) 
} 

而在其他一些js文件我试图使用方法:

myNameSpace.reactFunc1(...); 

当我将jsx转换成使用babel的js时,此工作正常。

但是,当我使用命令browserify -t [ babelify --presets [ react ] ] some.js someOther.js

myNameSpace not defined

我做错了什么在这里的browerify文件。有没有办法让这个工作没有太多的捣鼓/代码改变?

+0

您是否在不同的模块上使用命名空间?你如何导入命名空间? – Tzach

+0

@Tzach我不会导入它。并且这里没有模块..我有2个独立的js文件...当我不浏览文件时...'myNameSpace.reactFunc1'已定义,但是当我浏览'myNameSpace.reactFunc2'时未定义 –

+0

我是不知道如何使这个'var myNameSpace = {'reactFunc1':React ...., 'reactFunc2':React ...., 'reactFunc3':React ...., 'nonreactFunc1'function ..) }作为模块,并将其与名称myNameSpace一起导出并在其他js文件中使用,并执行类似于'myNameSpace.reactFunc1(...);' –

回答

2

这里有两个选择,使用模块或使用全局命名空间。

当使用模块,您需要将命名空间从第一模块导出和require它的另一模块:

module.exports = { 
    'reactFunc1': React...., 
} 

然后在其他文件

var myNameSpace = require('first_module'); 

其他选项(不太优选)是使用全局window对象:

window.myNameSpace = { 
    'reactFunc1': React...., 
} 

然后在另一个文件中:

window.myNameSpace.reactFunc1() 
+0

我做了window.myNameSpace ..它工作了!谢谢大家:) –

+0

@NishanthMatha给你的模块有意义的名字,这样可以更容易记住什么是什么。 – Tzach