1

我想获得一些关于将子模块组合成更大项目的最佳实践建议。在开发模式下,它可以正常工作,因为 require 可以即时解析所有 deps - 但是现在需要为 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 被定义为一个需要包装并在完成时触发一个事件。组件是define()包装中的模块集合。

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

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

即做:

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

如果 app.js 创建为:

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

});

然后它工作。

有没有人有生产这种组件构建/模块模式的经验?您是否会包含 main-lib 构建配置中的所有模块,modules: []以便它们相互等待?如果您希望客户端(即 html 文件)成为添加模块的那个人怎么办?

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

4

0 回答 0