选模块加载器应据项目规模、构建流程和目标环境而定:浏览器小项目用原生ES模块;旧浏览器或动态加载选SystemJS;工程化项目交由Webpack/Vite等打包工具处理;Node.js优先用内置ESM。

选模块加载器关键看项目规模、构建流程和目标环境,不是越新越好,也不是越老越稳。
浏览器端小项目:直接用原生 ES 模块
现代浏览器都支持 ,无需额外加载器。文件后缀保持 .js,路径用相对或绝对 URL,支持 import 和 export 语法。
- 静态导入写法简洁:
import { foo } from './utils.js'; - 动态导入按需加载:
const mod = await import('./feature.js'); - 注意:不支持裸模块名(如
import _ from 'lodash'),需写完整路径或配合构建工具处理
需要兼容旧浏览器或复杂依赖管理:选 SystemJS
SystemJS 是轻量、可配置的通用加载器,支持 AMD、CommonJS、ESM、全局变量等多种模块格式,适合渐进式迁移或运行时动态加载场景。
- 通过
System.import()或import()(在 SystemJS 环境中)加载模块 - 用
System.config()映射模块名到路径,解决裸模块导入问题 - 适合微前端、插件系统等需运行时决定加载内容的架构
工程化项目:交给打包工具处理,不用手选加载器
Webpack、Vite、Rollup 等工具内置模块解析逻辑,它们不是“加载器”,而是“打包时模块处理器”。你写的 import 语句由它们分析、转换、合并、分包,最终输出浏览器可执行的代码。
网上购物商城,它属于BtoC电子商务网站平台,它能够直接绕过中介(如批发商、销售商或经销商)建立与客户的直接关系。该网站可以为用户提供商品的详细信息,用户可以在线购买商品,确定镇定的订单;同时提供关于商品或电子零销商的选择建议等等。网上购物平台使得人们的购买变的更方便、更加容易。 前台功能模块有: 热销商品 订单管理 购物车 结算中心 注册会员 用户登录
立即学习“Java免费学习笔记(深入)”;
- Vite 开发时直接用浏览器原生 ESM,生产构建用 Rollup 打包
- Webpack 默认支持多种模块语法,通过
resolve.alias和resolve.extensions控制解析行为 - 不需要手动引入 RequireJS 或 SystemJS,除非有特殊运行时需求
Node.js 环境:优先用内置 ESM 支持
Node.js 14+ 已稳定支持 ES 模块,只需在 package.json 中设置 "type": "module",或使用 .mjs 后缀。
- 支持顶层
await、动态import()、条件导出(exports字段) - 若需兼容 CommonJS 包,可用
createRequire创建 require 函数桥接 - 避免混用
require()和import在同一文件,易出错
不复杂但容易忽略:模块加载的本质是路径解析 + 代码执行,加载器只是实现方式之一;现代开发中,多数时候该关心的是怎么写 import,而不是怎么装加载器。









