我正在尝试使用RequireJS优化大量的javascript文件,但是我无法解决如何使用优化器正确构建脚本并以所需方式将它们加载到浏览器中。
虽然下面的描述比较具体,但我想其他很多人都会遇到同样的挑战。 (或者他们在他们的要求中做出了更明智的选择!)
我正在使用bower下载脚本目录,我想在我的网页中包含这些脚本(或部分脚本)。
此外,在测试时我基本上不想让浏览器检索单独的凉亭脚本。本地测试框架以串行方式响应请求,因此速度非常慢。我想使用RequireJS优化器或其他方法将所有下载的bower脚本合并到一个文件中。
相比之下,我自己的代码被分解为一长串的Coffeescript文件,我想使用RequireJS CS plugin为浏览器编译它们。
当开发时,我希望我的浏览器加载如下内容:
components.js
main.js
csmain.coffee
my_module.coffee
components.js
将包含来自bower components
目录的以下文件,例如
在制作中,浏览器会加载一个文件,比如all.js
。
所以我的问题是:如果我使用RequireJS进入浏览器main.js
并构建脚本以实现部分和完全优化的构建。我在这个问题上度过了不成比例的时间,而且来自RequireJS的无法解释和神秘错误的数量已经悲惨地冗长 - 到了我无法识别可分离的禁止问题的程度。它似乎不是工作的工具,但我很乐意纠正。
我对优化脚本所拥有的内容类似于以下内容(使用YAML表示法):
baseUrl: "../media/my-scripts/"
optimize: none
out: build/all.js
stubModules:
- cs
- coffee-script
paths:
cs: "../../scripts/components/require-cs/cs"
'coffee-script': "../../scripts/components/require-cs/coffee-script"
usf: "./main"
components: "../compiled/components"
name: usf
logLevel: 0
shim: # ...
我希望解决的问题似乎相当简单,但解决方案尚未解决。 RequireJS虽然很棒,但却比我需要的要复杂得多。 Almond.js是加载模块的替代方案 - 但问题在于缺少其他合适的优化器。
如果您有任何关于使用r.js
来实现上述目标的选项的任何想法,或者可能存在合适的替代优化解决方案,我将不胜感激。