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

相关推荐
じòぴé南冸じょうげん3 小时前
若依框架favicon.ico缓存更新问题解决方案:本地生效但线上未更新
前端·javascript·前端框架·html
狮子座的男孩3 小时前
js基础高级:01、数据类型(typeof、instanceof、===的使用)、数据与变量与内存(定义、赋值与内存关系、引用变量赋值、js调函数传参)
前端·javascript·经验分享·数据类型·数据与变量与内存·赋值与内存关系·引用变量赋值
Cyclo-6 小时前
PDFJS 在React中的引入 使用组件打开文件流PDF
前端·react.js·pdf
椒盐螺丝钉8 小时前
Vue Router应用:组件跳转
前端·javascript·vue.js
顾安r8 小时前
11.20 开源APP
服务器·前端·javascript·python·css3
敲敲了个代码9 小时前
CSS 像素≠物理像素:0.5px 效果的核心密码是什么?
前端·javascript·css·学习·面试
少云清9 小时前
【软件测试】5_基础知识 _CSS
前端·css·tensorflow
倔强青铜三9 小时前
AI编程革命:React + shadcn/ui 将终结前端框架之战
前端·人工智能·ai编程
天外飞雨道沧桑10 小时前
前端开发 Cursor MCP 提效工具配置
前端·vscode·ai编程·开发工具·cursor
朱哈哈O_o10 小时前
前端通用包的作用——jquery篇
前端