我一直在研究John Papa关于SPA的复数课程。
在他的main.js
中,他给每个js库命名了一个名字。
(function () {
var root = this;
define3rdPartyModules();
function define3rdPartyModules() {
// These are already loaded via bundles.
// We define them and put them in the root object.
define('jquery', [], function () { return root.jQuery; });
define('ko', [], function () { return root.ko; });
define('amplify', [], function () { return root.amplify; });
define('infuser', [], function () { return root.infuser; });
define('moment', [], function () { return root.moment; });
define('sammy', [], function () { return root.Sammy; });
define('toastr', [], function () { return root.toastr; });
define('underscore', [], function () { return root._; });
}
})();
但这里的root
是什么?
通过这样做,我们可以在define
语句中调用这些短名称:
define('vm.session',
['ko', 'datacontext', 'config', 'router', 'messenger', 'sort'],
function (ko, datacontext, config, router, messenger, sort) {
目前,我不知道该怎么做。所以我的工作define
陈述很难看:
define('vm.admin.outfitters',
['/Scripts/lib/jquery-1.8.1.js', '/Scripts/lib/jsrender.js', ...], function(){...
我知道必须有更好的方法。所有这些js文件已经包含在脚本包中。我该如何引用这些脚本?
答案 0 :(得分:4)
RE:root
RequireJS和AMD ready库从全局范围中移除对象(如ko)。有些插件希望它们在全局范围内,因此我们可以在全局范围内对这些插件进行填充或弹回对象。后者是此代码中发生的事情。它主要用于Knockout的插件。
RE:您的定义语句
第一个参数是模块的名称,所以你在那里很好。第二个参数是RequireJS知道的模块列表。第3个参数是表示它的匹配变量。所以在你的代码中你可能会有这样的东西......
define('vm.admin.outfitters',
['jquery', 'jsrender'], function($, jsrender) {