前端工程化之:webpack1-3(模块化兼容性)

一、模块化兼容性

由于 webpack 同时支持 CommonJs 和 ES6 module ,因此需要理解它们互操作时 webpack 是如何处理的。

二、同模块化标准

如果导出和导入使用的是同一种模块化标准,打包后的效果和之前所说的模块化没有任何差异。

CommonJS:

javascript 复制代码
// 导出
module.exports = {
  a: 1,
  b: 2,
  c: 3
}

// 导入
require("./a")


// 导入的结果
{
  a: 1,
  b: 2,
  c: 3
}

ES6 Module:

javascript 复制代码
// 导出
export var a = 1;
export var b = 2;
export default 3;

// 导入1
import * as obj from "./a"

// 导入结果1
{
  a:1,
  b:2,
  default:3
}

// 导入2
import c from "./a"

// 导出结果2
3

三、不同模块化标准

不同的模块化标准, webpack 按照如下的方式处理。

ES6 Module export + CommonJS require:

javascript 复制代码
// 导出
export var a = 1;
export var b = 2;
export default 3;

// 导入
require("./a")

// 导入结果
{
  a:1,
  b:2,
  default:3
}

CommonJS export + ES6 Module import:

javascript 复制代码
// 导出
module.exports = {
  a: 1,
  b: 2,
  c: 3
}

// 导入1
import * as obj from "./a"
import c  from "./a"

// 导出结果
{
  a:1,
  b:2,
  c:3
}

四、最佳实践

代码编写最忌讳的是精神分裂,选择一个合适的模块化标准,然后贯彻整个开发阶段。

绝大部分第三方库,使用的是 CommonJS 的方式导出。

相关推荐
excel11 小时前
为什么在 Three.js 中平面能产生“起伏效果”?
前端
excel12 小时前
Node.js 断言与测试框架示例对比
前端
天蓝色的鱼鱼13 小时前
前端开发者的组件设计之痛:为什么我的组件总是难以维护?
前端·react.js
codingandsleeping14 小时前
使用orval自动拉取swagger文档并生成ts接口
前端·javascript
石金龙14 小时前
[译] Composition in CSS
前端·css
白水清风15 小时前
微前端学习记录(qiankun、wujie、micro-app)
前端·javascript·前端工程化
Ticnix15 小时前
函数封装实现Echarts多表渲染/叠加渲染
前端·echarts
用户221520442780015 小时前
new、原型和原型链浅析
前端·javascript
阿星做前端15 小时前
coze源码解读: space develop 页面
前端·javascript
叫我小窝吧15 小时前
Promise 的使用
前端·javascript