目前,我使用YUI-compressor来连接和压缩我的所有JavaScript文件。但是,出于各种原因,我想开始使用Require.js。
在开发中,文件没有连接,所以我可以使用默认的require(filepath)
和define(modulename)
和Require.js。但是我如何处理这样一个事实:在生产中,YUI会压缩所有文件,从而使requires
中的所有文件路径无效?
假设我有一个main.js
需要module1.js
。这就是我想要做的事情:
开发
require('path-to-module1')... // main.js
define('module1', function()})... // module1.js
生产
require('module1')... // main.js. here though, module1 and main.js are combined.
define('module1')... // yeah, still same file.
答案 0 :(得分:1)
最好使用和AMD优化器(例如r.js)来连接文件。然后你也可以用r.js缩小,或者你可以用YUI-comressor来缩小。
在此处了解有关r.js优化器的更多信息http://requirejs.org/docs/optimization.html。
并查看此repo以获取有关如何使用Require.js以及如何优化它https://github.com/volojs/create-template的良好示例项目。克隆该repo后可以运行node tools/r.js -o tools/build.js
以查看优化程序的运行情况 - 它会将www中的所有js文件合并到一个文件中。
最后,你永远不应该命名你的模块,比如
define('module1', [], function () {});
始终使用这样的匿名模块:
define(["jquery"], function ($) {});
或
define(function (require) { var $ = require("jquery"); });
AMD优化器将为您使用您的模块名称,以便它们都可以存放在一个文件中,但您不必担心这一点。
希望这有帮助。