是否可以在不修改文件的情况下将 JS 文件包装在 func 中?
Is it possible to wrap a JS file in a func without modifying the file?
我有一个使用 Dojo、jQuery 和 Bootstrap 的 Web 应用程序。此应用程序有一个 "core" 无法以任何方式修改的 .js 文件代码库。
我正在尝试向与 jQuery 对 $ 的全局使用冲突的应用程序添加外部服务。 $ 在 "core" 代码库中多次使用。有没有办法将这些核心文件包装在匿名函数中以在本地定义 $ = jQuery 而无需以任何方式实际修改文件?也许是他们 defined/included 在项目中的方式?
我知道 jquery.noConflict,但这需要我更改整个 "core" 中的“$”引用。
您可以将所有 jQuery 代码包装在一个 IIFE 中,这样您就可以在内部使用 $
作为 jQuery,但也可以使用 noConflict()
所以它不与其他库冲突 $
(function($){
// all your `$` code will work fine here and won't conflict with other library `$`
})(jQuery);
出于完全相同的原因,您会看到大多数 jQuery 使用此包装器编写的插件
我以非常狭隘和尖锐的方式提出了我的问题。我试图完成的是在不修改文件的情况下,将新外部服务所需的 .js 库与现有应用程序中的 .js 库隔离开来。
我发现这可以通过将与新服务相关的所有内容包装在 <iframe>
中来实现,您基本上是在现有文档中嵌入另一个具有自己的命名空间的文档以隔离库从彼此。例如,您可以在页面中添加以下内容:
<iframe>
<script src="...">
<script src="...">
[do stuff with above scripts here]
</iframe>
iframe 中的全局命名空间将与父文档的全局命名空间分开。
我有一个使用 Dojo、jQuery 和 Bootstrap 的 Web 应用程序。此应用程序有一个 "core" 无法以任何方式修改的 .js 文件代码库。
我正在尝试向与 jQuery 对 $ 的全局使用冲突的应用程序添加外部服务。 $ 在 "core" 代码库中多次使用。有没有办法将这些核心文件包装在匿名函数中以在本地定义 $ = jQuery 而无需以任何方式实际修改文件?也许是他们 defined/included 在项目中的方式?
我知道 jquery.noConflict,但这需要我更改整个 "core" 中的“$”引用。
您可以将所有 jQuery 代码包装在一个 IIFE 中,这样您就可以在内部使用 $
作为 jQuery,但也可以使用 noConflict()
所以它不与其他库冲突 $
(function($){
// all your `$` code will work fine here and won't conflict with other library `$`
})(jQuery);
出于完全相同的原因,您会看到大多数 jQuery 使用此包装器编写的插件
我以非常狭隘和尖锐的方式提出了我的问题。我试图完成的是在不修改文件的情况下,将新外部服务所需的 .js 库与现有应用程序中的 .js 库隔离开来。
我发现这可以通过将与新服务相关的所有内容包装在 <iframe>
中来实现,您基本上是在现有文档中嵌入另一个具有自己的命名空间的文档以隔离库从彼此。例如,您可以在页面中添加以下内容:
<iframe>
<script src="...">
<script src="...">
[do stuff with above scripts here]
</iframe>
iframe 中的全局命名空间将与父文档的全局命名空间分开。