常见的js起手势

直接式

var foo = 256;
var bar = 1000;

console.log(foo, bar);

这种方式最基础,也最常见,适用于浏览器和Node.js®,可以通过工具包装成其他模式。
加上'use strict';后变种成严格模式:

'use strict';

var a = 'a';
var b = 'b';

var ab = a + b;
console.log(ab);

IIFE式(立即调用函数表达式)

;(function(var1, var2, var3) { // ';'可以有,也可以没有。
                               // 一般是为了避免合并js文件时出现问题。 
  'use strict';

  // 此处有代码10000行...

}(globalVar1, globalVar2, globalVar3));

或者

;(function(var1, var2, var3) {
  'use strict';

  // 此处有代码100000行...

})(globalVar1, globalVar2, globalVar3);

这种方式的好处是可以简单的避免代码全局污染。适用于浏览器和Node.js®

$式(没想到好的名字zzz)

在使用jQuery的工程中通常也写成:

;$(function() {
  'use strict';

  // 此处有代码100000行...

});

这样写可以使得代码在文档加载完后执行。

CommonJS式

var fs = require('fs');
var path = require('path');

module.exports = function myModule() {
  // 请注意,此处有代码
};

或者

var fs = require('fs');
var path = require('path');

exports.myModule = function myModule() {
  // 请注意,此处有代码
};

AMD式

// 定义
define('myModule', ['jquery'], function($) { // 定义一个叫myModule的模块
    // $ 是 jquery 模块的输出
    $('body').text('hello world');
});

// 使用
define(['myModule'], function(myModule) { // 没有id的匿名模块通常作为应用的启动函数

});

UMD式

(function( root, factory ) {
    if( typeof define === 'function' && define.amd ) {
        // AMD. Register as an anonymous module.
        define( function() {
            root.myModule = factory();
            return root.myModule;
        } );
    } else if( typeof exports === 'object' ) {
        // Node. Does not work with strict CommonJS.
        module.exports = factory();
    } else {
        // Browser globals.
        root.myModule = factory();
    }
}( this, function() {
  'use strict';

  // 此处省略代码1000行

}

这种模式是全局模式、AMD模式、CommonJS模式的混合体,兼容大部分的应用场景。

es6式

import fs from 'fs';
import path from 'path';

export default function defaultModule() {
  // 请注意,此处有代码
};

export function myModule() {
  // 请注意,此处有代码
};

我们通常会使用工具将这种模式下的代码转成AMD、CommonJS或者UMD模式。
这也是当下最流行的写法,很多流行的前端框架,工具库都采用这种写法,比如Angular 2、Reactjs、vue.js、lodash等等。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.几种基本数据类型?复杂数据类型?值类型和引用数据类型?堆栈数据结构? 基本数据类型:Undefined、Nul...
    极乐君阅读 5,932评论 0 106
  • # 模块机制 node采用模块化结构,按照CommonJS规范定义和使用模块,模块与文件是一一对应关系,即加载一个...
    RichRand阅读 2,786评论 0 3
  • publicPath指定了一个在浏览器中被引用的URL地址。 对于使用 和 加载器,当文件路径不同于他们的本地磁盘...
    飞呀飞哥阅读 1,776评论 0 0
  • 亲爱的优优: 爸爸最近看了一本书,书名叫《灰犀牛》,这本书并不是介绍犀牛的,而是说人们往往会对经常出现的情...
    优优bama阅读 175评论 0 0
  • 发朋友圈的时候,常常会听到有人吐槽,加了太多人,很多东西就不敢随便发了,变得不再自由,想发点东西,最后想到这个人在...
    Anitaanina阅读 824评论 10 13

友情链接更多精彩内容