2016-04-13 40 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