我正在开发一个javascript模块化框架,我正在寻找一种方法来自动优化/组合一组javascripts作为预编译步骤。
我已经在使用grunt了,所以一个笨蛋任务可能会有意义。
框架由他们自己的文件中的模块组成(如我们都习惯的矩形'小部件'),反过来可能需要其他javascripts。
所有这些都是使用Require.js进行连接,效果很好。 但是,在尝试使用require.js附带的 r.js 时,我遇到了以下约束
优化器只会组合数组中指定的模块 传递给顶级需求和定义的字符串文字 调用,或require('name')字符串文字调用的简化 CommonJS包装。因此,它不会找到通过a加载的模块 变量名称:
事情是:模块可以互相继承,甚至可以通过配置组合其他模块(技术需要加载引用的模块,这些模块位于自己的js文件中)。
这不适用于上面提到的约束。 我确信我可以用足够的时间自己做饭,但也许有人已经做过这样的事情了。 (r.js但更灵活)。
一个可行的解决方案imho将:
include
将其交给r.js,r.js从那里处理它。这听起来有道理吗?有人试过这样的事吗?
答案 0 :(得分:1)
这似乎过于复杂。在r.js构建中有选项onBuildRead,您可以在其中修改源,以便优化器可以接受。您也可以查看Internal API: onResourceLoad。您可以捕获所有已加载的依赖项,然后调用以执行自定义生成。
要加载页面,您必须使用PhantomJS,以便它充当浏览器并执行JS。然后发信号节点为该页面生成自定义构建。但是,然后需要切换该页面上的资源以使用自定义构建。我想你可以让它可以配置,并在生产时这样做。
听起来确实有可能,不确定它是否可行。