2011-08-14 44 views
10

命名空間是否可以命名空間動態插入的JavaScript文件?命名空間動態加載的JavaScript文件的內容

我知道我可以通過創建一個script標籤並將其插入到DOM中來動態包含JavaScript文件,但是這個包含文件是否可以命名空間?因此,如果該文件具有名爲bar的函數,我希望通過命名空間訪問它,例如foo:即foo.bar()

回答

0

如果您的意思是將動態加載的文件中定義的所有內容添加到名稱空間,而不修改文件本身,則答案爲否。

6

是的,CommonJS Modules/1.1只指定了一種方法。

我只在服務器端使用Node.js,但我相信還有其他庫創建用於與CommonJS兼容的瀏覽器。請注意,服務器/瀏覽器有多個模塊規範(尚未深入研究)。

模塊被寫入就像任何其他一段JavaScript代碼,唯一的添加是您導出要公開什麼:

module.exports.bar = Bar; 

function Bar() { 
// code 
} 

和使用:

var foo = require('mymodule'); 

foo.bar(); 

什麼是實際完成背景,整個代碼被封裝到另一個函數中,導出是它的屬性。

另外,Michael Bolin talked about similar problem in his talk about 'with' keyword at JSConf

+0

+1爲教育視頻;很高興能夠學到新的東西:) –

+1

CurlJS,requireJS支持AMD模塊,它們與瀏覽器上的相似和開箱即用。像browserify這樣的工具可以讓你創建Modules/1.1包。 – Raynos

+1

我還沒有玩過這個。有一個問題,每個都包含js文件需要導出'require'的屬性來提取它們嗎?如果是這樣的話,包含第三方js文件時如何實現命名空間? –