将RequireJS集成到OSGi服务器中

将RequireJS集成到OSGi服务器中,osgi,requirejs,amd,js-amd,eclipse-virgo,Osgi,Requirejs,Amd,Js Amd,Eclipse Virgo,注意:请不要被“OSGi”这个词吓倒。 我正在一个基于OSGi的Virgo服务器环境上集成RequireJS(尽管细节无关紧要)。对于OSGi配置,我有一个根“OSGibundle”,其中包含需要设置主视图的JavaScript。然后是依赖于根的子包,每个子包都有自己需要执行的JavaScript 我的RequireJS在根包中运行良好,有一个设置主视图的“main”文件 问题:但是,我不知道如何最好地初始化子包的执行。我是否应该在子包中添加第二个标记来启动JavaScript执行?我是否应该像

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

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

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


问题:但是,我不知道如何最好地初始化子包的执行。我是否应该在子包中添加第二个
标记来启动JavaScript执行?我是否应该像平常一样在子捆绑包中导入主JavaScript文件?

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

根束中的示例:

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

require(config.requirejs);
<script data-main="js/main" src="<c:url value="require.js" />"></script>
子包中的示例:

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

require(config.requirejs);

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

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

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

require(config.requirejs);
<script data-main="js/main" src="<c:url value="require.js" />"></script>
通过根捆绑包中的上述内容,子捆绑包只需通过以下方式调用自己的JavaScript:

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

所以我的问题的答案很简单:在子包中使用
require
函数

当您需要对象时,是否可以添加路径;子文件夹/myobject?根路径为“resources/js/main.js”,特定子包的示例为“sub bundle/resources/js/main.js”。您所说的“初始化子包的执行”是什么意思?从你下面的回答来看,你的意思是“初始化路径配置”?我并没有被OSGi吓倒。让我害怕的是JavaScript代码@explunt需要启动两个执行:主框架和子捆绑包(它们是框架的使用者)。