前言
学习 Webpack/Vue2 升级 Vite/Vue3 时,发现以下不同:
-
新建的
Vitepress项目默认创建了config.mjs文件; -
新建的
Vite/Vue3项目,package.json中默认加上type: 'module'配置; -
新建的
Vite/Vue3项目,postcss.config.cjs文件后缀必须是.cjs,否则报错;
其实它们是一个问题,Node.js 对 .js 文件的模块加载方式!
分析
先理清几个概念!!!
Node.js 的模块加载方法有两种:CommonJS 和 ES Modules(ES6/ESM,接下来都用简称 ESM )
CommonJS 和 ESM 区别
| 功能 | CommonJS | ESM |
|---|---|---|
| 导入/导出接口 | require() 和 exports/module.exports |
import 和 export |
| 输出 | 值的拷贝 | 值的引用 |
| 动态导入 | 不支持 | 支持 |
| 作用域 | 全局作用域 | 局部作用域 |
| 加载 | 运行时加载 | 编译时输出接口 |
| 同步/异步 | require() 是同步加载模块 |
import 命令是异步加载模块 |
| 循环依赖 | 程序复杂时容易崩溃 | 可处理循环依赖,因为是静态作用域 |
| 浏览器兼容 | 支持现代浏览器,旧版不支持 | 更适用于早期 Node.js 环境 |
Node.js 支持 |
Node.js打包 JS 代码的原始方式 |
v8.5.0(2017.9.12) 开始支持 v13.2.0(2019.11.21) 开始默认支持 |
值得学习的参考链接

本文介绍了在从Webpack/Vue2升级到Vite/Vue3过程中遇到的三个主要差异:Vitepress的config.mjs、Vite/Vue3项目的postcss.config.cjs后缀要求和package.json的type属性。这些差异主要围绕Node.js的CommonJS和ESM模块加载方式展开。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



