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 相关文章推荐
JSuggest自动匹配下拉框使用方法(示例代码)
Dec 27 Javascript
Bootstrap自动适应PC、平板、手机的Bootstrap栅格系统
May 27 Javascript
基于Javascript倒计时效果
Dec 22 Javascript
深入理解vue中的$set
Jun 01 Javascript
vue父组件中获取子组件中的数据(实例讲解)
Sep 27 Javascript
微信小程序button组件使用详解
Jan 31 Javascript
详解JS取出两个数组中的不同或相同元素
Mar 20 Javascript
vue中echarts引入中国地图的案例
Jul 28 Javascript
three.js 利用uv和ThreeBSP制作一个快递柜功能
Aug 18 Javascript
JS变量提升及函数提升实例解析
Sep 03 Javascript
js实现磁性吸附的示例
Oct 26 Javascript
jQuery实现鼠标拖动图片功能
Mar 04 jQuery
使用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
全国FM电台频率大全 - 21 海南省
2020/03/11 无线电
基于文本的搜索
2006/10/09 PHP
php生成短网址示例
2014/05/05 PHP
浅谈本地WAMP环境的搭建
2015/05/13 PHP
PHP中error_reporting()用法详解
2015/08/31 PHP
thinkPHP批量删除的实现方法分析
2016/11/09 PHP
PHP程序员简单的开展服务治理架构操作详解(一)
2020/05/14 PHP
分别用marquee和div+js实现首尾相连循环滚动效果,仅3行代码
2011/09/21 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
JavaScript程序开发之JS代码放置的位置
2016/01/15 Javascript
canvas知识总结
2017/01/25 Javascript
Vue单页式应用(Hash模式下)实现微信分享的实例
2017/07/21 Javascript
jquery tmpl模板(实例讲解)
2017/09/02 jQuery
JavaScript数组push方法使用注意事项
2017/10/30 Javascript
vue 解决文本框被键盘遮住的问题
2019/11/06 Javascript
vue router 传参获取不到的解决方式
2019/11/13 Javascript
python实现在目录中查找指定文件的方法
2014/11/11 Python
python查找指定具有相同内容文件的方法
2015/06/28 Python
python+opencv实现动态物体识别
2018/01/09 Python
python爬取网易云音乐评论
2018/11/16 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
提升Python效率之使用循环机制代替递归函数
2019/07/23 Python
python urllib爬虫模块使用解析
2019/09/05 Python
Python docutils文档编译过程方法解析
2020/06/23 Python
美国知名日用品连锁超市:Dollar General(多来店)
2017/01/14 全球购物
法律专业应届生自荐信范文
2014/01/06 职场文书
行政助理工作职责范本
2014/03/04 职场文书
教师岗位聘任书范文
2014/03/29 职场文书
敬老院活动总结
2014/04/28 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
党的群众路线教育实践活动心得体会(企业)
2014/11/03 职场文书
2014年街道办事处工作总结
2014/12/11 职场文书
新年祝酒词大全
2015/08/11 职场文书
《窃读记》教学反思
2016/02/18 职场文书
Python的flask接收前台的ajax的post数据和get数据的方法
2021/04/12 Python
我家女友可不止可爱呢 公开OP主题曲无字幕动画MV
2022/04/11 日漫