摘要:本文学习前端模块化工具SeaJS的核心思想和使用方式,以及与其他模块化工具的对比。
1 简介
1.1 介绍
SeaJS是遵循CMD(Common Module Definition)规范实现的JS模块加载器,由阿里玉伯主导开发,主要用于浏览器环境。
CMD规范采用异步方式加载模块,推崇依赖就近,模块不会提前加载,而是按需加载。
SeaJS解决了传统开发中的依赖管理、命名冲突、文件加载顺序等问题,提供了清晰的模块定义和依赖管理机制。
SeaJS与RequireJS同为早期前端模块化的重要方案,在国内前端社区曾广泛使用,后期随着ESM与构建工具兴起而逐步淡出。
1.2 背景
在传统的JS开发中,代码组织存在以下问题:
- 全局变量污染,命名冲突
- 文件依赖关系难以维护
- 代码复用和测试困难
- 资源加载阻塞页面渲染
模块化开发通过封装和依赖管理,使代码结构更清晰,维护性更高。
1.3 对比
前端模块化规范对比:
| 规范 | 特点描述 |
|---|---|
| AMD | 异步加载,依赖前置,代表实现:RequireJS |
| CMD | 异步加载,依赖就近,代表实现:SeaJS |
| CommonJS | 同步加载,适用于服务端,代表实现:NodeJS |
| ESM | 原生支持,静态编译,浏览器和服务端通用 |
2 快速使用
2.1 引入
下载使用依赖的sea.js文件,官网提供了压缩包:
目录结构:
1 | webapp |
解压后,将dist目录下的sea.js文件放到项目中,在HTML中通过script元素引入:
1 | <script src="js/sea.js"></script> |
2.2 定义模块
使用define()方法定义模块,SeaJS推荐一个JS文件只定义一个模块。
示例:
1 | define(function(require, exports, module) { |
2.3 配置模块
增加配置代码:
1 | <script> |
2.4 入口脚本
通过seajs.use()方法加载入口脚本:
1 | <script> |
在入口脚本中使用模块:
1 | define(function(require, exports, module) { |
条