【发布时间】:2011-10-26 17:33:41
【问题描述】:
是否可以命名动态插入的 JavaScript 文件?
我知道我可以通过创建 script 标记来动态包含 JavaScript 文件并将其插入 DOM,但是这个包含的文件可以命名空间吗?因此,如果文件有一个名为 bar 的函数,我希望通过命名空间访问它,例如 foo:即 foo.bar()。
【问题讨论】:
标签: javascript namespaces javascript-namespaces
是否可以命名动态插入的 JavaScript 文件?
我知道我可以通过创建 script 标记来动态包含 JavaScript 文件并将其插入 DOM,但是这个包含的文件可以命名空间吗?因此,如果文件有一个名为 bar 的函数,我希望通过命名空间访问它,例如 foo:即 foo.bar()。
【问题讨论】:
标签: javascript namespaces javascript-namespaces
是的,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。
【讨论】:
require 的属性来获取它们?如果是这样,在包含第三方js文件时如何实现命名空间?
如果您的意思是在动态加载该文件时为该文件中定义的所有内容添加一个命名空间,而不修改文件本身,那么答案是否定的。
【讨论】: