是否可以在不修改文件的情况下将JS文件包装在func中?

时间:2015-08-13 17:02:11

标签: javascript jquery dojo

我有一个使用Dojo,jQuery和Bootstrap的Web应用程序。这个应用程序有一个"核心"无法以任何方式修改的.js文件的代码库。

我试图向应用程序添加一个与jQuery全局使用$冲突的外部服务。 $在"核心"中被多次使用代码库。有没有办法将这些核心文件包装在一个匿名函数中,以本地定义$ = jQuery,而无需以任何方式实际修改文件?也许是他们在项目中定义/包含的方式?

我知道jquery.noConflict,但这需要我更改' $'引用整个"核心"。

2 个答案:

答案 0 :(得分:2)

您可以将所有jQuery代码包装在IIFE中,允许您将$用作jQuery,但也可以使用noConflict(),这样就不会与其他jQuery冲突图书馆$

(function($){
    // all your `$` code will work fine here and won't conflict with other library `$`    

})(jQuery);

您将看到使用此包装器编写的大多数jQuery插件也是出于完全相同的原因

答案 1 :(得分:0)

我以非常狭隘和尖锐的方式问我的问题。我想要完成的是在不修改文件的情况下,从现有应用程序中的.js库中隔离新的外部服务所需的.js库。

我发现这可以通过将与新服务相关的所有内容包装在<iframe>中来实现,您可以在现有文档中基本上将其自己的命名空间嵌入其他文档中以隔离彼此的图书馆。例如,您可以在页面中添加以下内容:

<iframe>
    <script src="...">
    <script src="...">
    [do stuff with above scripts here]
</iframe>

iframe中的全局命名空间将与父文档的全局命名空间分开。