繁体   English   中英

顶级命名空间和Backbone源代码导出的使用

[英]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的目的是什么,你如何使用它?

什么是Javascript中的导出和原型?

进一步阐述:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM