常用的模块化几种方式

文章类型:ES6

发布者:hp

发布时间:2023-05-20

一:定义

1:模块化是指将代码按照功能和责任划分为独立的模块,以实现代码的组织、复用和维护的一种方式

2:在过去,常使用全局变量和命名空间来组织代码,但这种方式存在命名冲突、依赖管理困难等问题

二:类别

1:立即执行函数,来实现模块化,通过函数作用域解决命名冲突,污染全局作用域问题

(function(globalVariable){
		 globalVariable.test = function() {}
		 // ... 声明各种变量、函数都不会污染全局作用域
	  })(globalVariable)

2:AMD 和 CMD:

A:相同点:

是一种异步加载模块的规范,适用于浏览器端的模块化开发。它使用 define 函数来定义模块,使用 require 函数来异步加载模块

都是异步加载,可以按需加载模块,提高性能

支持模块依赖声明和导出,明确模块之间的关系

B:不同点:

AMD模块依赖关系需要在定义时声明,而CMD不需要,是动态声明

AMD模块加载和执行是异步的,需要加载完成后执行,而 CMD是延迟执行,需要的时候才执行,是按需加载

AMD依赖模块和顺序都是提前定义好的,而CMD是动态的,根据实际情况加载

// 定义模块
define(['moduleA', 'moduleB'], function(moduleA, moduleB) {
  // ...
  return {
    // ...
  };
});

// 异步加载模块
require(['moduleA', 'moduleB'], function(moduleA, moduleB) {
  // ...
});

3:CommonJS:使用 require 和 module.exports 来导入和导出模块。在 Node.js 环境中,可以直接使用 CommonJS 模块化

支持动态导入

是一种同步导入

导出值是拷贝,如果需要更新,则重新导入一次

// 导入模块
const moduleA = require('./moduleA');
// 导出模块
module.exports = {
  // ...
};

4:ES Module:原生实现的模块化方案

使用 import 和 export 关键字来导入和导出模块

是一种异步导入

采用实时绑定方式,导入导出值指向内存同一地址,会实时变化

在编译时进行静态分析,有助于优化代码的加载和执行

// 导入模块
import { moduleA, moduleB } from './module';
// 导出模块
export default {
  // ...
};

三:总结

1:可以解决命令冲突,提供复用性

2:提高代码可维护性

评论
0条评论遵守法律,文明用语,共同建设文明评论区

暂无评论,快来发表第一条评论吧~