假设这是我的 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
配置选项允许您引用脚本,即<script>
HTML 中的标记。假设是这种情况,我是否仍然需要在下面的实际 require 语句中为 jQuery 之类的脚本加上 a$
或下划线 a的别名?_
我不得不这样做似乎很奇怪,因为如果您使用标准<script>
标签引用 jQuery,$
则可以在整个脚本中自动使用。使用 不应该是一样的paths
吗?我是
shim
config 选项的新手,我知道它已经取代了不推荐使用的order!
插件。exports
该物业实际上是做什么的?它似乎没有为脚本创建别名;例如,如果我将exports
for 下划线设置为"whatever"
,然后尝试设置为console.log(whatever)
,则它是未定义的。那么有什么意义呢?如何“全局”正确使用 jQuery 之类的脚本?也就是说,能够
$
在我的 App.js 模块或我的“app”文件夹中的任何其他模块中使用别名的正确方法是什么?我每次都必须在每个单独的模块和别名中都需要 jQuery$
吗?或者我在这里做的方式是否正确?
我也非常感谢对这个特定脚本的任何其他批评;在我看来,Require.js 的文档还有很多不足之处;我真正想了解更多的事情似乎被掩盖了,让我摸不着头脑。