同样都是异步加载模块,AMD在加载模块完成后就会履行该模块,所有模块都加载履行完后会进入回调函数,履行主逻辑,如许的效不雅就是依附模块的履行次序和书写次序不必定一致,看收集速度,哪个先下载下来,哪个先履行,然则主逻辑必定在所有依附加载完成后才履行。
CMD加载完某个依附模块后并不履行,只是下载罢了,在所有依附模块加载完成落后入主逻辑,碰到require语句的时刻才履行对应的模块,如许模块的履行次序和书写次序是完全一致的。
UMD
同一模块定义(UMD:Universal Module Definition )就是将 AMD 和 CommonJS 合在一路的一种测验测验,常见的做法是将CommonJS 语法担保在兼容 AMD 的代码中。
- (function(define) {
- define(function () {
- return {
- sayHello: function () {
- console.log('hello');
- }
- };
- });
- }(
- typeof module === 'object' && module.exports && typeof define !== 'function' ?
- function (factory) { module.exports = factory(); } :
- define
- ));
该模式的核心思惟在于所谓的 IIFE(Immediately Invoked Function Expression),该函数会根据情况来断定须要的参数类别。
ES6模块(module)
严格模式
ES6 的模块主动采取严格模式,不管有没有在模块头部加上"use strict";。
严格模式重要有以下限制。
- 变量必须声明后再应用
- 函数的参数不克不及有同名属性,不然报错
- 不克不及应用with语句
- 不克不及对只读属性赋值,不然报错
- 不克不及应用前缀0表示八进制数,不然报错
- 不克不及删除弗成删除的属性,不然报错
- 不克不及删除变量delete prop,会报错,只能删除属性delete global[prop]
- eval不会在它的外层感化域惹人变量
- eval和arguments不克不及被从新赋值
- arguments不会主动反竽暌钩函数参数的变更
- 不克不及应用arguments.callee
- 不克不及应用arguments.caller
- 禁止this指向全局对象
- 不克不及应用fn.caller和fn.arguments获取函数调用的客栈
- 增长了保存字(比如protected、static和interface)
模块Module
一个模块,就是一个对其他模块裸露本身的属性或者办法的文件。
导出Export
作为一个模块,它可以选择性地给其他模块裸露(供给)本身的属性和办法,供其他模块应用。
- // profile.js
- export var firstName = 'qiqi';
- export var lastName = 'haobenben';
- export var year = 1992;
- //等价于
- var firstName = 'qiqi';
- var lastName = 'haobenben';
推荐阅读
【限时免费】岁尾最强一次云计算大年夜会,看传统、社区、互联网企业若何碰撞? 在上述课程中,我碰到了 Alon Burg——一名经验丰富的 web 开辟人员,我们刚好趣味相投。所认为了>>>详细阅读
本文标题:很全很全的JavaScript模块讲解,看了绝不后悔!
地址:http://www.17bianji.com/lsqh/40215.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示