javascript – 骨干库代码模式我无法理解

我是中级 javascript开发人员,试图了解javascript开发人员如何编写他们的代码,我决定开始寻找Backbone库作为起点.

这里有一些用于骨干初始设置的代码片段,请帮助我理解它.

code1 –

(function(){
   var root = this;
}).call(this);

是否有任何特定的理由使用调用方法而不是简单地使用(),或者它只是一个编码首选项,如果我必须编写相同的代码,我会做这样的事情.

(function(root){

})(this);

代码2 –

var Backbone;
  if (typeof exports !== 'undefined') {
    Backbone = exports;
  } else {
    Backbone = root.Backbone = {};
  }

现在在全局范围内没有导出的定义,也没有在本地范围内的任何地方定义那么如果我正在编写相同的代码,那么if是什么

var Backbone = root.Backbone = {};

代码3

var _ = root._;
if (!_ && (typeof require !== 'undefined')) _ = require('underscore')._;

再次,我无法在本地或全球范围内找到需求的定义

解决方法

代码块1

这取决于开发人员的偏好,您可以用任何一种方式编写代码,实际上,许多库确实更喜欢您建议的样式.

代码块2

这个块是对AMD Boiler Plate的一种看法.AMD库提供了split your JavaScript code into modules所需的钩子.在代码块的情况下,exports对象是CommonJS Module Standard使用的全局.如果导出全局不存在则将Backbone添加到根对象直.

一个有趣的侧面说明是Backbone不支持导出到流行的RequireJS AMD库.

代码块3

require是AMD库引入的另一个全局,见上文.

相关文章

事件冒泡和事件捕获 起因:今天在封装一个bind函数的时候,发现el.addEventListener函数支持第三个参数...
js小数运算会出现精度问题 js number类型 JS 数字类型只有number类型,number类型相当于其他强类型语言...
什么是跨域 跨域 : 广义的跨域包含一下内容 : 1.资源跳转(链接跳转,重定向跳转,表单提交) 2.资源...
@ "TOC" 常见对base64的认知(不完全正确) 首先对base64常见的认知,也是须知的必须有...
搞懂:MVVM模式和Vue中的MVVM模式 MVVM MVVM : 的缩写,说都能直接说出来 :模型, :视图, :视图模...
首先我们需要一个html代码的框架如下: 我们的目的是实现ul中的内容进行横向的一点一点滚动。ul中的内容...