模块化

模块化的定义:

模块化就是一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计方法。

AMD

AMD是”Asynchronous Module Definition”的缩写,即”异步模块定义”。它采用异步方式加载模块,模块的加载不影响它后面语句的运行。

require(['math'], function(math) {

  math.add(2, 3);

})

require.js

requireJS加载模块,采用的是AMD规范。也就是说,模块必须按照AMD规定的方式来写

define(id?, dependencies?, factory);12

CMD

CMD(同步模块定义)是SeaJS在推广过程中对模块定义的规范化产出,SeaJS是CMD这个概念的实现

define(function(require, exports, module) {

  var a = require('./a');

  a.doSomething();

  var b = require('./b');

  b.doSomething();

})

sea.js

sea.js通过sea.use()来加载模块,特点是就近依赖,即哪里用到依赖就在哪里引入,即用即返回。

seajs.use(id, callback?)

common.js

CommonJs规范通过module.exports定义,前端浏览器并不支持,推荐在后端nodeJs中使用
CommonJS定义的模块分为: 模块引用(require) 模块输出(exports) 模块标识(module)
CommonJS是一个更偏向于服务器端的规范。NodeJS采用了这个规范。CommonJS的一个模块就是一个脚本文件。require命令第一次加载该脚本时就会执行整个脚本,然后在内存中生成一个对象。

{

  id: '...',

  exports: { ... },

  loaded: true,

  ...

}

ES6

模块功能主要由两个命令构成:exportimport。

export

export命令用于规定模块的对外接口
输出变量:

// profile.js
export var firstName = 'Michael';
export var lastName = 'Jackson';
export var year = 1958;

输出函数:

export function multiply(x, y) {
  return x * y;
};

import

import命令用于输入其他模块提供的功能
使用export命令定义了模块的对外接口以后,其他 JS 文件就可以通过import命令加载这个模块。

// main.js
import { firstName, lastName, year } from './profile.js';

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

友情链接更多精彩内容