假设这是我的config.js或main.js文件:
require.config({
// paths are analogous to old-school <script> tags, in order to reference js scripts
paths: {
jquery: "libs/jquery-1.7.2.min",
underscore: "libs/underscore-min",
backbone: "libs/backbone-min",
jquerymobile: "libs/jquery.mobile-1.1.0.min",
jquerymobilerouter: "libs/jquery.mobile.router.min"
},
// configure dependencies and export value aliases for old-school js scripts
shim: {
jquery: ["require"],
underscore: {
deps: ["jquery"],
exports: "_"
},
backbone: {
deps: ["underscore", "jquery"],
exports: "Backbone"
},
jquerymobilerouter: ["jquery", "backbone", "underscore"],
jquerymobile: ["jquery", "jquerymobilerouter", "backbone", "underscore"]
}
});
require(["jquery", "backbone", "underscore", "app/app.min", "jquerymobilerouter", "jquerymobile"], function ($, Backbone, _, App) {
console.log($);
console.log(Backbone);
console.log(_);
$("body").fadeIn(function () {
App.init();
});
});
如果我理解正确,
paths
配置选项允许您引用脚本,就像 HTML 中的<script>
标签一样。假设这是正确的,那么在我的实际 require 语句下,我是否仍然需要使用$
或_
别名来别名化像 jQuery 这样的脚本?如果您使用标准的<script>
标签引用 jQuery,则可以自动在整个脚本中使用$
。那么使用paths
不应该也是一样吗?我对
shim
配置选项比较陌生,我了解到它已经替换了不再使用的order!
插件。但是,exports
属性实际上是用来做什么的呢?它似乎并没有为脚本创建一个别名;例如,如果我将 underscore 的exports
设置为"whatever"
,然后尝试console.log(whatever)
,它的值为 undefined。那么它的作用是什么呢?像 jQuery 这样的脚本应该如何正确地在“全局”中使用?也就是说,使用
$
别名在我的 App.js 模块或任何其他模块中能否使用?我是否必须在每个单独的模块中 require jQuery 并且每次都需要别名化$
?还是我在这里的做法是正确的?
我非常感谢对这个特定脚本的任何其他批评;我认为 Require.js 的文档还有很大的提升空间;一些我想更多了解的事情似乎被忽略了,让我很困惑。