ES模块是现代JavaScript标准,浏览器需用type="module"且路径须带.js后缀;Node.js需package.json设"type":"module"或用.mjs后缀;命名导出用{}导入,默认导出不用{};裸导入等属构建工具非原生能力。

ES 模块(ESM)不是“可选特性”,而是现代 JavaScript 的标准模块系统;用 require() 或 module.exports 是 CommonJS,只在 Node.js 环境默认支持,浏览器原生不认。
浏览器里直接用 import 报错:Failed to resolve module specifier
这是最常见的起步卡点:浏览器要求模块路径必须是完整 URL 或以 ./、../ 开头的相对路径,不能省略扩展名,也不能用裸包名(如 import { foo } from 'lodash')。
- ✅ 正确写法:
import { helper } from './utils.js'(注意.js后缀不可省) - ❌ 错误写法:
import { helper } from './utils'(报错)、import { helper } from 'utils.js'(不是相对/绝对路径) - HTML 中 script 标签必须加
type="module",否则import语法直接被忽略或报错
export default 和 export 混用时的导入差异
命名导出(export const a = 1)和默认导出(export default class X)在导入时语法不同,且不能互换。混淆会导致 undefined 或 Unexpected token。
- 命名导出 → 必须用大括号:
import { a, b } from './mod.js' - 默认导出 → 不能加大括号,名字可自定:
import MyX from './mod.js'或import X from './mod.js' - 同时有两者 → 可组合:
import X, { a, b } from './mod.js'(默认导出在前,大括号在后)
Node.js 里启用 ESM 需要两个硬性条件
即使你写了正确的 import/export,Node.js 默认仍按 CommonJS 解析,必须显式开启 ESM 支持。
淘宝客打折系统,集成了jssdk模块,增加了seo优化功能,更有利于搜索引擎收录 1程序上传到服务器空间 2开启服务器 3打开安装地址:http://您的域名/install.php 4如果不能安装请确保数据库里的表全部删除 5进入后台地址:http://您的域名/main.php 默认用户名和密码都是admin 6测试数据时可以导入 test文件夹里的test.sql文件 到数据库,或者
立即学习“Java免费学习笔记(深入)”;
- 方式一:在
package.json中加"type": "module"(整个包视为 ESM) - 方式二:用
.mjs后缀命名文件(优先级高于type字段) - ⚠️ 注意:
require()在 ESM 文件中不可用,反之亦然;跨类型调用需用createRequire或dynamic import()
路径别名、裸导入、热更新这些看似便利的功能,在原生 ESM 里都不存在——它们是构建工具(如 Vite、Webpack)或运行时(如 Deno)补上的,不是语言本身能力。别把打包器行为当成 ESM 标准。










