模块化开发

106 阅读1分钟

模块化开发只是思想

  • 模块化演变过程

  • stage 1-文件划分方式

  • 污染全局作用域

  • 命名冲突问题

  • 无法管理模块依赖关系
    原始方式完全依靠约定

  • stage 2-空间命名方式

  • stage 3 --IIFE
    以上就是早期在没有工具和规范的情况下对模块化的落地方式

模块化规范的出现
模块化规范+模块加载器

  1. CommonJS规范
  • 一个文件就是一个模块
  • 每个模块都有单独的作用域
  • 通过module.exports导出成员
  • 通过require函数导入成员

commonJS是以同步模式加载模块

2. AMD(Asynchronous Module Definition)

  • AMD使用起来相对复杂
  • 模块js文件请求频繁

3. require.js

4. Sea.js + CMD

node.js       CommonJS

Browser      ES Module

ES Module基本特性

  • 自动采用严格模式,忽略’use strict'
  • 每个ESM模块都是单独的私有作用域
  • ESM是通过CORS去请求外部JS模块的
  • _ESM的script标签会延迟执行脚本_

ES Module导入和导出

node环境中

  • ES Modules中可以导入CommonJS模块
  • CommonJS中不能导入ES Modules模块
  • CommonJS模块始终只会导出一个默认成员
  • 注意import不是解构导出对象