requirejs r.js在主库上优化了组件构建

时间:2012-12-03 17:56:10

标签: javascript gwt requirejs js-amd r.js

我想获得一些关于将子模块组装成更大项目的最佳实践建议。在开发模式下,它可以正常工作,因为需要动态解决所有代表 - 但它需要为GWT应用程序生成,现在显然难以通过回调消耗异步内容。

结构如下(这可以单独构建并根据需要创建文件):

  • main(构建所有共享库资源等)
    • 组件A(要求main在那里,但在自己的构建中排除)
    • ...组件N

要在像这样加载的应用中使用:

<script src='require.js'></script>
<script src='main-lib-min.js'></script>
<script src='component-a-min.js'></script>
<script src='component-n-min.js'></script>

<!-- client to all these files is a single app to kick off: -->
<script src='app.js'></script>

main被定义为require wrap并在完成时触发事件。 组件是define()包装中的模块集合。

问题是,app.js在所有引用都已解决之前不应引用任何内容。并且component-A可能引用main-lib的导出,因此在上一个脚本加载之前不应对其进行评估。

在chrome中,我们看到并行下载和引用错误。需要阻止而不是。由于r.js构建已预先打包所有内容,因此工厂应该能够返回上面定义的任何模块。

即。这样做的:

var foo = require('foo');应该没问题。

如果app.js创建为:

require(['foo'], function(foo){

});

然后它的工作原理。

有没有人有过制作这种组件构建/模块模式的经验?你会将main-lib build config中的所有模块都包含在modules: []中,以便它们彼此等待吗?如果你想让客户端(即html文件)成为添加模块的客户端怎么办?

你能改变加载吗?是否有一个GWT加载器更适合确保类似同步的行为?表现不是问题。

0 个答案:

没有答案