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库引入的另一个全局,见上文.

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...