【发布时间】:2012-04-29 03:09:51
【问题描述】:
tl;dr:当我的所有文本依赖项都内联时,如何将 text.js 插件排除在优化文件之外?
我正在使用Require.js optimizer(通过节点)来优化我项目中的一些 JS 文件。我正在使用text plugin 加载文本依赖项(HTML 模板、CSS)。我有一个要优化的模块,包括它的依赖项,如下所示:
define(['text!core/core.css'], function(styles) {
// do setup stuff, return an object
});
Require.js 文档说,当我运行 r.js 优化器时,core/core.css 文件将被内联,我正在像这样调用它:
$ r.js -o baseUrl=./src name=core out=release/test.js
Tracing dependencies for: core
Uglifying file: c:/path/release/test.js
c:/path/release/test.js
----------------
c:/path/src/text.js
text!core/core.css
c:/path/src/core.js
好消息是,这行得通。当我查看优化后的文件时,我可以看到内联文本,如下所示:
define("text!core/core.css",[],function(){return"some CSS text"}),
define("core",["text!core/core.css"],function(a){ ... })
坏消息是,text.js 插件也包括在内 - 它增加了大约 3K,并且由(据我所知)现在完全不需要的用于加载外部文本文件的代码组成。我知道 3K 并不多,但我正在努力保持我的代码高度优化,据我了解,如果我的文本依赖项是内联的,则根本不需要文本插件的代码。我可以通过将exclude=text 添加到我的r.js 调用中来保留文本插件,但是如果这样做,当我尝试在浏览器中使用优化代码时出现错误,提示无法加载 text.js 插件.
所以:
text.js 插件在此处实际需要有什么原因吗?
如果没有,是否有
r.js的配置选项可以解决此问题,或者是否有我可以包含的 text.js 插件的 easy shim 来说服 Require.js 加载了不必要的插件?
【问题讨论】:
标签: javascript optimization requirejs