一些 javascript 库作为完全连接的文件分发,包括所有依赖库。如果正在使用多个版本的库,一些库(如 JQuery)提供了一种处理冲突的方法。但是,如果编译/连接的 javascript 文件包含一个没有内置处理冲突的库,并且我使用的是同一个库(但版本不同),那么是否有一种通用方法来包装我正在使用的版本和向它添加自定义命名空间?或者这取决于正在使用的库?
问问题
213 次
1 回答
2
这取决于图书馆。如果它在一个命名空间下提供所有函数,您可以首先包含您的版本,将对其的引用存储在不同的变量/名称下(如果可能发生冲突,请取消设置原始版本),然后再包含另一个库。
它看起来像这样:
<script src="MyLibraryV1.js"></script>
<script>
// Assuming all functions are available under `$`
var MyLibraryV1 = $;
// Now the next script can overwrite `$`.
// Optionally we can also delete/undefine this symbol:
delete window.$;
</script>
<script src="OtherLibraryWithDependencies.js"></script>
<script>
// For easy access, you can use an immediate function to still let `$`
// refer to your library version. It should not affect the other code
// (but if it does you obviously have to use the other name)
(function($) {
// put all code that needs `MyLibraryV1` here
}(MyLibraryV1));
</script>
当然,更好的事情是如果OtherLibraryWithDependencies
能够正确封装所有依赖项,以便它们不会泄漏到全局范围内。
于 2013-01-14T23:33:08.810 回答