命名空间可以动态插入
JavaScript文件吗?
我知道我可以通过创建一个脚本标签并将其插入到DOM中来动态地包含一个JavaScript文件,但是这个包含的文件可以命名空间吗?所以,如果文件有一个名为bar的函数,那么我想通过命名空间来访问它,比如foo:foo.bar().
解决方法
是的,CommonJS Modules/1.1指定了一种方法.
我仅在服务器端使用Node.js,但我相信还有其他库可以使用符合CommonJS的浏览器.请注意,服务器/浏览器有多个模块规格(目前还没有涉及到).
模块就像任何其他的JavaScript一样,唯一的另外一个就是输出你想要暴露的内容:
module.exports.bar = Bar; function Bar() { // code }
和用法:
var foo = require('mymodule'); foo.bar();
实际上在后台做了什么,整个代码被包装成另一个函数,而export是它的属性.
另外,Michael Bolin talked about similar problem in his talk about ‘with’ keyword at JSConf.