命名空间动态加载的 javascript 文件的内容

Posted

技术标签:

【中文标题】命名空间动态加载的 javascript 文件的内容【英文标题】:Namespace a dynamically loaded javascript file's contents 【发布时间】:2011-10-26 17:33:41 【问题描述】:

是否可以命名动态插入的 javascript 文件?

我知道我可以通过创建 script 标记来动态包含 JavaScript 文件并将其插入 DOM,但是这个包含的文件可以命名空间吗?因此,如果文件有一个名为 bar 的函数,我希望通过命名空间访问它,例如 foo:即 foo.bar()

【问题讨论】:

【参考方案1】:

是的,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。

【讨论】:

CurlJS,requireJS 支持 AMD 模块,这些模块类似并且在浏览器上开箱即用。 browserify 等工具允许您创建 Modules/1.1 包。 我还没有玩这个。不过有一个问题,是否每个包含的 js 文件都需要导出 require 的属性来获取它们?如果是这样,在包含第三方js文件时如何实现命名空间? 那么不使用库怎么办呢?【参考方案2】:

如果您的意思是在动态加载该文件时为该文件中定义的所有内容添加一个命名空间,而不修改文件本身,那么答案是否定的。

【讨论】:

以上是关于命名空间动态加载的 javascript 文件的内容的主要内容,如果未能解决你的问题,请参考以下文章

将 JavaScript 命名空间拆分为多个文件

javascript 记录命名空间加载状态

final,类的自动加载,命名空间

Laravel:如何通过javascript加载带有动态参数的命名路由

python中怎样查看已加载的命名空间中所有变

c# 动态加载dll文件