JavaScript的模块化开发框架Sea.js上手指南


Posted in Javascript onMay 12, 2016

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

引入seajs主文件

<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>

seajs主入口文件(main)

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

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

seajs依赖文件(index)

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;
});

文件的加载顺序

JavaScript的模块化开发框架Sea.js上手指南

下面我们从 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 在下载完成后,会自动加载入口模块。页面中的代码就这么简单。

模块代码

这个小游戏有两个模块 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,一切都很自然。

Javascript 相关文章推荐
Jquery选中或取消radio示例
Sep 29 Javascript
框架页面高度自动刷新的Javascript脚本
Nov 01 Javascript
JavaScript声明变量时为什么要加var关键字
Sep 29 Javascript
省市区三级联动下拉框菜单javascript版
Aug 11 Javascript
js实现左侧网页tab滑动门效果代码
Sep 06 Javascript
JS实现根据用户输入分钟进行倒计时功能
Nov 14 Javascript
javaScript语法总结
Nov 25 Javascript
js时间戳与日期格式之间转换详解
Dec 11 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
使用Angular CLI进行Build(构建)和Serve详解
Mar 24 Javascript
ES2020 新特性(种草)
Jan 12 Javascript
vue使用exif获取图片经纬度的示例代码
Dec 11 Vue.js
使用jQuery.form.js/springmvc框架实现文件上传功能
May 12 #Javascript
jQuery CSS3自定义美化Checkbox实现代码
May 12 #Javascript
深入浅析JavaScript中with语句的理解
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【九】实现Web页面内容的打印预览和保存操作
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【八】框架功能总体界面介绍
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【七】数据的导入、导出及附件的查看处理
May 12 #Javascript
基于BootStrap Metronic开发框架经验小结【六】对话框及提示框的处理和优化
May 12 #Javascript
You might like
PHP新手上路(六)
2006/10/09 PHP
剖析 PHP 中的输出缓冲
2006/12/21 PHP
php checkbox复选框值的获取与checkbox默认值输出方法
2010/05/15 PHP
php join函数应用
2011/05/04 PHP
详细解读php的命名空间(一)
2018/02/21 PHP
jquery怎样实现ajax联动框(二)
2013/03/08 Javascript
jquery给图片添加鼠标经过时的边框效果
2013/11/12 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
jQuery基于图层模仿五星星评价功能的方法
2015/05/07 Javascript
jquery实现仿Flash的横向滑动菜单效果代码
2015/09/17 Javascript
浅析js中substring和substr的方法
2015/11/09 Javascript
vue实现个人信息查看和密码修改功能
2018/05/06 Javascript
React 路由懒加载的几种实现方案
2018/10/23 Javascript
在Vant的基础上封装下拉日期控件的代码示例
2018/12/05 Javascript
实例讲解vue源码架构
2019/01/24 Javascript
jQuery实现的分页插件完整示例
2020/05/26 jQuery
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
js+canvas实现转盘效果(两个版本)
2020/09/13 Javascript
vue项目中js-cookie的使用存储token操作
2020/11/13 Javascript
Python函数式编程指南(一):函数式编程概述
2015/06/24 Python
使用Python对Access读写操作
2017/03/30 Python
Python中按值来获取指定的键
2019/03/04 Python
对YOLOv3模型调用时候的python接口详解
2019/08/26 Python
python爬虫 requests-html的使用
2020/11/30 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
毕业生物理教师求职信
2013/10/17 职场文书
信息服务专业毕业生求职信
2014/03/02 职场文书
爱国演讲稿400字
2014/05/07 职场文书
法院干警四风问题自我剖析材料
2014/09/29 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
设备技术员岗位职责
2015/04/11 职场文书
2015年党小组工作总结
2015/05/26 职场文书
搞笑的婚礼主持词
2015/06/29 职场文书
Python批量解压&压缩文件夹的示例代码
2022/04/04 Python
Win11黑色桌面背景怎么办?Win11黑色壁纸解决方法汇总
2022/04/05 数码科技