JavaScript模块化开发框架Sea.js快速入门指南

作者:青柠时间:2026-10-30 06:21:43浏览:389

本文详细介绍Sea.js模块化框架的使用,涵盖源码结构、核心配置项如base和alias、模块定义方式define及依赖加载机制。通过hello.html实例演示如何组织代码,解析CMD规范下的模块书写格式,帮助开发者快速上手前端模块化开发。

Sea.js源码结构与目录

Sea.js的全部源代码托管在GitHub仓库中,访问地址为https://github.com/seajs/examples。其目录结构如下所示:


examples/
 |-- sea-modules   存放 seajs、jquery 等文件,这也是模块的部署目录
 |-- static      存放各个项目的 js、css 文件
 |   |-- hello
 |   |-- lucky
 |   `-- todo
 `-- app       存放 html 等文件
    |-- hello.html
    |-- lucky.html
    `-- todo.html

引入Sea.js主文件与配置

在HTML页面中引入Sea.js主文件。


<script src="js/sea.js"></script>
<script type="text/javascript">
  // seajs配置项
  seajs.config({
    //设置基本的JS路径(引用外部文件的根目录)
    base:"./js",
    //设置别名(方便后面引用使用)
    alias:{
      "jQuery":"jquery.js"
    },
    //路径配置(跨目录调用或者目录比较深时使用)
    paths: {
      'jQuery': 'http://libs.baidu.com/jquery/2.0.0/'
    },
    //设置文件编码
    charset:"utf-8",
    //预加载文件
    preload:['jQuery']
  });
  // 引用主入口文件
  seajs.use(['main','jQuery'],function(e,$){
    //回调函数
    alert("全部加载完成");
  });
</script>

Sea.js的主入口文件main.js负责初始化应用逻辑。


define(function(require, exports, module) {
  // 主入口文件引入其他文件依赖
  //var testReQ = require('index');
   var testReQ = require.async('index',function(){
      //异步加载回调
      alert("我是异步加载的index的回调函数");
   });
  // 运行index释放的接口方法
  // testReQ.testInit();

  // 运行index释放的接口方法(module)
  testReQ.textFun();
});

Sea.js的依赖文件index.js用于处理具体的业务依赖。


define(function(require, exports, module) {
  // 对外释放接口
  exports.testInit = function(){
    alert("我是一个接口");
  };
  // 如果需要释放大量接口,可以使用module
  var testObj = {
    name:"qiangck",
    sex:"man",
    textFun:function(){
      alert("我是一个使用module.exports的对象方法");
    }
  }
  // module.exports接收obj对象
  module.exports = testObj;
});

文件加载的顺序遵循Sea.js的异步加载机制,确保依赖正确解析。

Sea.js源码结构与目录

通过hello.html实例加载模块

接下来以hello.html为例,展示如何使用Sea.js组织代码结构。

在页面中加载模块,实现功能模块化。

在hello.html页面的底部,通过script标签引入sea.js后,需要添加一段配置代码以设定模块路径和别名。


// seajs 的简单配置
seajs.config({
 base: "../sea-modules/",
 alias: {
  "jquery": "jquery/jquery/1.10.1/jquery.js"
 }
})

// 加载入口模块
seajs.use("../static/hello/src/main")

sea.js脚本下载并执行完毕后,会自动加载配置的入口模块。整个页面的代码集成过程简洁明了。

模块代码与CMD规范

查看具体的模块代码实现细节。

这个小游戏包含两个模块:spinning.js和main.js,它们均遵循统一的代码书写规范。


// 所有模块都通过 define 来定义
define(function(require, exports, module) {

 // 通过 require 引入依赖
 var $ = require('jquery');
 var Spinning = require('./spinning');

 // 通过 exports 对外提供接口
 exports.doSomething = ...

 // 或者通过 module.exports 提供整个接口
 module.exports = ...

});

上述内容即为Sea.js推荐的CMD模块书写格式。对于熟悉Node.js的开发者而言,这种写法非常自然且易于上手。

作者最新文章