Javascript 如何在同一页面中处理两个不同的数据主属性?
我正在为web应用程序开发一个插件,它使用许多外部JS,如JStree、bootstrap和jquery。我还使用require动态加载所有这些Javascript 如何在同一页面中处理两个不同的数据主属性?,javascript,requirejs,Javascript,Requirejs,我正在为web应用程序开发一个插件,它使用许多外部JS,如JStree、bootstrap和jquery。我还使用require动态加载所有这些 所以最终用户要使用这个插件所要做的就是在HTML中包含这一行 <script data-main="http://host.name/pathto/main" src="http://hostname/path.to/require.js"></script> 因此,当有两个不同的RequireJS实例时,它总是加载第一个实
所以最终用户要使用这个插件所要做的就是在HTML中包含这一行
<script data-main="http://host.name/pathto/main" src="http://hostname/path.to/require.js"></script>
因此,当有两个不同的RequireJS实例时,它总是加载第一个实例的文件,而不包括其他实例。当我们使用RequireJS开发插件时,这种情况下的解决方案是什么?正如您所发现的,您不能在同一页面上有两个
data main
。加载RequireJS的第一个
标记将加载并执行它,RequireJS将负责在相应的数据主节点中加载代码。第二个
标记将再次加载并执行RequireJS,但RequireJS将检测到它已经加载,并立即停止执行
您应该通过require
或define
调用或通过配置选项加载插件
如果您的代码需要添加配置,它可以再次调用require.config()
。RequireJS将传递给require.config()
的多个配置组合在一起。根据您的用例场景,您可能希望使用该选项将代码使用的配置与主应用程序完全分开。如果您最终不得不使用一个单独的上下文,它将如下所示:
<!-- Load the app. -->
<script data-main="app/lib/main" src="app/lib/require.js"></script>
<!-- Load the plugin. -->
<script>
var my_require = require.config({
context: "plugin_context",
baseUrl:...
});
my_require(["main"]);
</script>
var my_require=require.config({
上下文:“插件上下文”,
baseUrl:。。。
});
我的需求([“主”]);
附加模块应通过main.app JS加载。同一页面上不能有两个数据主属性。是的,这是真的,但我不想为了添加额外功能而在apps代码(main.JS)上乱动。是否有一种方法可以获取require的当前配置对象并附加一些我自己的配置对象(如path和dep)?据我所知,require.config()将始终附加参数,并找到与现有参数匹配的参数,然后将其替换为较新的参数,对吗?顺便说一句,我的问题现在解决了。谢谢尽管你可能已经理解了,我还是要解释一下。如果调用require.config()
时使用path
设置映射foo
到“/x/foo”
。然后调用require.config()。2个路径
设置组合在最终配置中。并不是第二个取代了第一个。这适用于复杂设置(对象和数组),如路径
和垫片
(以及其他一些)。对于原子值的设置,如baseUrl
(字符串),则只能替换。当您使用上下文时
,这两个配置完全分开。
<!-- Load the app. -->
<script data-main="app/lib/main" src="app/lib/require.js"></script>
<!-- Load the plugin. -->
<script>
var my_require = require.config({
context: "plugin_context",
baseUrl:...
});
my_require(["main"]);
</script>