在backbone.js的前几行中,我不明白他们为什么要测试出口上的undefined或者需要
很明显,它没有被定义,因为他们没有设置它。如果它是一个全局(窗口)对象,那么他们会明确地说出来。
root.exports // they don't do this
root.require
为什么要检查这个?
typeof exports !== 'undefined'
和这个
if (!_ && (typeof require !== 'undefined'))
从上面
!_
完整代码段
(function(){
var root = this,
previousBackbone = root.Backbone,
slice = Array.prototype.slice,
splice = Array.prototype.splice,
_ = root._,
Backbone;
if (typeof exports !== 'undefined') {
Backbone = exports;
} else {
Backbone = root.Backbone = {};
}
Backbone.VERSION = '0.9.2';
if (!_ && (typeof require !== 'undefined')) {
_ = require('underscore');
}
答案 0 :(得分:4)
允许Backbone.js
用作我认为的Common.js
模块。更多详情:http://wiki.commonjs.org/wiki/Modules/1.1
特别是这一点:
在一个模块中,有一个名为“exports”的自由变量,它是模块在执行时可以添加其API的对象。
此外,此位还包含有关require
的问题:
在模块中,有一个自由变量“require”,即一个Function。 “require”函数接受模块标识符。 “require”返回外部模块的导出API。