0

注意:请不要被“OSGi”这个词吓倒。

我在基于 OSGi 的 Virgo 服务器环境中集成了 RequireJS(尽管细节无关紧要)。通过 OSGi 配置,我有一个根“OSGi 包”,其中包含需要设置主视图的 JavaScript。然后是依赖根的子包,每个子包都有自己的 JavaScript 需要执行。

我的 RequireJS 在根包中运行良好,并带有一个设置主视图的“主”文件。

问题:但是,我不知道如何最好地初始化子包的执行。我是否应该添加第二个<script data-main="main" src="require.js"></script>标签,这次是在子包中开始它的 JavaScript 执行?我应该像往常一样在子包中导入主 JavaScript 文件吗?

4

2 回答 2

0

我发现一种可行的可能性,即使它是一个丑陋且不需要的解决方案,是在根 OSGi 包中创建一个全局对象,该对象存储与根相关的路径。然后子包可以将自己的路径扩展到这个对象并重新初始化 RequireJS。

根包中的示例:

var config = {
  paths: {
    // root bundle paths go here . . .
  }
};

require(config.requirejs);

子包中的示例:

$.extend(true, {
  paths: {
    // sub-bundle paths go here . . .
  }
}, config);

require(config.requirejs);

但我不喜欢(在我看来)重新初始化 RequireJS。希望有人会知道更好的解决方案。

于 2013-06-26T19:12:11.553 回答
0

我最终在根包中使用以下标记设置了框架的主要 JavaScript 资源:

<script data-main="js/main" src="<c:url value="require.js" />"></script>

. . . “js/main.js”为:

require(['jquery'], function ($) {
  // main script goes here . . .
})

使用根包中的上述内容,子包只需调用自己的 JavaScript:

<script>require(['sub-bundle/js/script.js'])</script>

所以我的问题的答案很简单:require在子包中使用该功能!

于 2013-07-09T18:17:58.927 回答