前端工程化之: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 的方式导出。

相关推荐
OpenTiny社区3 分钟前
OpenTiny 2025年度贡献者榜单正式公布~
前端·javascript·vue.js
OEC小胖胖7 分钟前
08|Commit 阶段:副作用如何被组织、执行与约束
前端·react.js·前端框架·react·开源库
奋斗的小青年!!14 分钟前
Flutter跨平台开发OpenHarmony应用:个人中心实现
开发语言·前端·flutter·harmonyos·鸿蒙
kkce21 分钟前
域名CDN检测意义
服务器·前端·网络
ZoeLandia25 分钟前
Qiankun 生命周期与数据通信实战
前端·微前端·qiankun
LawrenceLan26 分钟前
Flutter 零基础入门(十五):继承、多态与面向对象三大特性
开发语言·前端·flutter·dart
二川bro33 分钟前
详细解析 cesiumViewer.render() 和 requestAnimationFrame(render)
前端
前端付豪37 分钟前
必知Node应用性能提升及API test 接口测试
前端·react.js·node.js
王同学 学出来1 小时前
vue+nodejs项目在服务器实现docker部署
服务器·前端·vue.js·docker·node.js
一道雷1 小时前
让 Vant 弹出层适配 Uniapp Webview 返回键
前端·vue.js·前端框架