我正在尝试使用 RequireJS 优化大量 javascript 文件,但我无法思考如何使用优化器正确构建脚本并以所需方式将它们加载到浏览器中。
虽然下面的描述相当具体,但我想很多其他人都遇到了同样的挑战。 (或者他们在需求中做出了更明智的选择!)
我正在使用 bower下载脚本目录,我想将这些脚本(或其中的一部分)包含在我的网页中。
此外,在测试时,我基本上不想让浏览器检索各个 Bower 脚本。本地测试框架串行响应请求,所以这很慢。我想使用 RequireJS 优化器或其他一些方法,将所有下载的 Bower 脚本合并到一个文件中。
相比之下,我自己的代码被分解成一长串 Coffeescript 文件,我想使用 RequireJS CS plugin为浏览器编译它们。
然后在开发时,我希望我的浏览器加载如下内容:
components.js
main.js
csmain.coffee
my_module.coffee
components.js
将由 bower 的 components
目录中的以下文件组成,例如
- jquery:jquery/jquery
- jqueryui:
- jquery-ui/ui/jquery.ui.core
- jquery-ui/ui/jquery.ui.datepicker
- 放大:
- 放大/核心/放大核心
- 放大/请求/放大.请求
- Bootstrap :
- bootstrap/js/bootstrap-transition
- bootstrap/js/bootstrap-alert
- bootstrap/js/bootstrap-button
- bootstrap/js/bootstrap-carousel
- bootstrap/js/bootstrap-collapse
- lodash:lodash/lodash
在生产环境中,浏览器会加载一个文件,比如 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
实现上述目标有哪些选项可用,或者可能存在哪些合适的替代优化解决方案,我将不胜感激。
最佳答案
没有找到答案,我写了 YAMDO解决这个问题 编辑 从那以后我就弃用了那个项目并开始依赖令人敬畏的Browserify项目。
关于javascript - 使用 RequireJS 优化器进行局部优化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14094966/