Javascript 是否可以在不修改文件的情况下将JS文件包装到func中?
我有一个使用Dojo、jQuery和引导的web应用程序。这个应用程序有一个.js文件的“核心”代码库,不能以任何方式修改 我试图向应用程序添加一个与jQuery的全局使用$冲突的外部服务在“核心”代码库中多次使用。有没有一种方法可以将这些核心文件包装在匿名函数中,以便在本地定义$=jQuery,而不以任何方式实际修改文件?也许是在项目中定义/包含它们的方式Javascript 是否可以在不修改文件的情况下将JS文件包装到func中?,javascript,jquery,dojo,Javascript,Jquery,Dojo,我有一个使用Dojo、jQuery和引导的web应用程序。这个应用程序有一个.js文件的“核心”代码库,不能以任何方式修改 我试图向应用程序添加一个与jQuery的全局使用$冲突的外部服务在“核心”代码库中多次使用。有没有一种方法可以将这些核心文件包装在匿名函数中,以便在本地定义$=jQuery,而不以任何方式实际修改文件?也许是在项目中定义/包含它们的方式 我知道jquery.noConflict,但这需要我在整个“核心”中更改“$”引用。您可以将所有jquery代码包装在一个允许您在内部使用
我知道jquery.noConflict,但这需要我在整个“核心”中更改“$”引用。您可以将所有jquery代码包装在一个允许您在内部使用
$
作为jquery,但也使用noConflict()
,这样它就不会与其他库发生冲突$
(function($){
// all your `$` code will work fine here and won't conflict with other library `$`
})(jQuery);
您将看到大多数使用此包装器编写的jQuery插件也是出于完全相同的原因我以一种非常狭隘和尖锐的方式提出了我的问题。我试图实现的是在不修改文件的情况下,将新外部服务所需的.js库与现有应用程序中的.js库隔离开来 我发现,这可以通过将与新服务相关的所有内容包装在
中来实现,基本上是在现有文档中嵌入另一个具有自己名称空间的文档,以将库彼此隔离。例如,您可以在页面中添加以下内容:
<iframe>
<script src="...">
<script src="...">
[do stuff with above scripts here]
</iframe>
[在此处使用上述脚本进行操作]
iframe中的全局名称空间将与父文档的名称空间分开。是的,但我实际上无法修改“core”中的.js文件。我需要打开每个文件并附上生活中的所有东西,对吗?是的,你会的。替代方法是修改其他库以使用除
$