[英]top-level namespace and usage of exports of Backbone source code
我正在尝试阅读Backbone.js的源代码。 我对以下代码感到非常困惑,它应该声明Backbone的顶级命名空间。 任何人都可以帮忙提供一些线索或解释? 一些有用的链接,以启发这一点也非常欢迎!
// The top-level namespace. All public Backbone classes and modules will
// be attached to this. Exported for both CommonJS and the browser.
var Backbone;
if (typeof exports !== 'undefined') {
Backbone = exports;
} else {
Backbone = root.Backbone = {};
}
exports
是一个CommonJS模式的全局(想想require.js和node.js),用于模块化地提供代码。 最重要的是检查exports
是否可用。 如果是,则Backbone全局被赋予导出参考,因此可以模块化地正确导出。
如果您没有通过AMD样式加载器加载Backbone,则它由标准对象文字定义。
进一步阅读此事:
http://dailyjs.com/2010/10/18/modules/
Node.js module.exports的目的是什么,你如何使用它?
进一步阐述:
exports
本身带来了一些超出正常对象字面的“强度”。 CommonJS模块化模式需要这种“强健”。 请注意Node.js源代码:
function Module(id, parent) {
this.id = id;
this.exports = {};
this.parent = parent;
if (parent && parent.children) {
parent.children.push(this);
}
this.filename = null;
this.loaded = false;
this.children = [];
}
module.exports = Module;
Backbone
全局可以访问模块化模式所需的所有三级深度。 否则, Backbone
将以一个无聊的旧空object
定义开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.