注意:请不要被“OSGi”这个词吓倒。
我在基于OSGi的Virgo服务器环境中集成RequireJS(虽然细节无关紧要)。使用OSGi配置,我有一个根“OSGi包”,其中包含需要设置主视图的JavaScript。然后有依赖root的子包,每个子包都有自己需要执行的JavaScript。
我让RequireJS在根分发包中运行良好,并使用“主”文件设置主视图。
问题:但是,我不知道如何最好地初始化子包的执行。我应该添加第二个<script data-main="main" src="require.js"></script>
标记,这次是在子包中启动它的JavaScript执行吗?我应该只是在子包中正常导入主JavaScript文件吗?
答案 0 :(得分:0)
我发现的一种可能性,即使它是一个丑陋且不需要的解决方案,也是在根OSGi包中创建一个全局对象,它存储与根相关的路径。然后子包可以将自己的路径扩展到此对象上并重新初始化RequireJS。
root bundle中的示例:
var config = {
paths: {
// root bundle paths go here . . .
}
};
require(config.requirejs);
子包中的示例:
$.extend(true, {
paths: {
// sub-bundle paths go here . . .
}
}, config);
require(config.requirejs);
但我不喜欢(似乎对我而言)重新初始化RequireJS。希望有人知道更好的解决方案。
答案 1 :(得分:0)
我最终在根域中使用以下标记设置了框架的主要JavaScript资源:
<script data-main="js/main" src="<c:url value="require.js" />"></script>
。 。 。与&#34; js / main.js&#34;是:
require(['jquery'], function ($) {
// main script goes here . . .
})
通过根包中的上述内容,子包只需使用以下命令调用自己的JavaScript:
<script>require(['sub-bundle/js/script.js'])</script>
所以我的问题的答案很简单:在子包中使用require
函数!