ES6从入门到精通:模块化

ES6 模块化基础概念

ES6 模块化是 JavaScript 官方标准,通过 importexport 语法实现代码拆分与复用。模块化特点包括:

  • 每个文件是一个独立模块,作用域隔离。
  • 支持静态分析,依赖关系在编译时确定。
  • 输出的是值的引用(动态绑定)。

导出模块(export)

导出方式分为 命名导出默认导出

javascript 复制代码
// 命名导出(可多个)
export const name = 'Module';
export function calculate() { /* ... */ }

// 批量命名导出
const data = { value: 1 };
export { data };

// 默认导出(仅一个)
export default class MainComponent { /* ... */ }

导入模块(import)

根据导出方式选择对应导入语法:

javascript 复制代码
// 导入命名导出
import { name, calculate } from './module.js';

// 导入时重命名
import { data as dataset } from './module.js';

// 导入默认导出(无需花括号)
import MainComponent from './module.js';

// 混合导入
import DefaultExport, { namedExport } from './module.js';

// 动态导入(按需加载)
const module = await import('./module.js');

模块路径规则

  • 相对路径./../ 开头,如 './utils.js'
  • 绝对路径:基于项目根目录的完整路径(需工具配置支持)。
  • 第三方模块 :直接写包名,如 'lodash'

模块化高级用法

重新导出:在入口文件整合多个模块

javascript 复制代码
export { Button } from './components/Button.js';
export * as utils from './utils.js';

聚合模块 :使用 import * as 导入全部命名导出

javascript 复制代码
import * as math from './math.js';
math.sum(1, 2);

注意事项

  • 模块脚本需在 HTML 中声明 type="module"

    html 复制代码
    <script type="module" src="main.js"></script>
  • 浏览器环境需通过服务器访问(本地文件协议不支持 CORS)。

  • Node.js 需在 package.json 设置 "type": "module" 或使用 .mjs 后缀。

常见工具链支持

  • Babel:将 ES6 模块转译为 CommonJS 格式。
  • Webpack/Rollup:打包模块并处理依赖树。
  • ESLint:检查模块化语法规范。

通过系统化实践,ES6 模块化能显著提升代码可维护性和协作效率。

相关推荐
子兮曰2 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰2 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万2 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝2 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋2 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁2 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95272 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大2 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师2 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学2 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端