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 相关文章推荐
javascript实现捕捉键盘上按下的键
May 05 Javascript
动态加载jQuery的方法
Jun 16 Javascript
使用Raygun来自动追踪AngularJS中的异常
Jun 23 Javascript
5种JavaScript脚本加载的方式
Jan 16 Javascript
node安装--linux下的快速安装教程
Mar 21 Javascript
JavaScript实现无穷滚动加载数据
May 06 Javascript
JavaScript的继承实现小结
May 07 Javascript
node下使用UglifyJS压缩合并JS文件的方法
Mar 07 Javascript
jQuery实现基本淡入淡出效果的方法详解
Sep 05 jQuery
js表达式与运算符简单操作示例
Feb 15 Javascript
微信小程序实现上传多张图片、删除图片
Jul 29 Javascript
分享几个JavaScript运算符的使用技巧
Apr 24 Javascript
使用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开发环境配置(MySQL数据库安装图文教程)
2010/04/28 PHP
php中怎么搜索相关联数组键值及获取之
2013/10/17 PHP
php将数组存储为文本文件方法汇总
2015/10/28 PHP
PHP-FPM实现性能优化
2016/03/31 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
微信支付PHP SDK ―― 公众号支付代码详解
2016/09/13 PHP
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
2009/11/04 Javascript
JavaScript创建一个object对象并操作对象属性的用法
2015/03/23 Javascript
深入浅析Bootstrap列表组组件
2016/05/03 Javascript
阻止表单提交按钮多次提交的完美解决方法
2016/05/16 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
ES2015 Symbol 一种绝不重复的值
2016/12/25 Javascript
Vue.js实现文章评论和回复评论功能
2020/05/30 Javascript
JS实现浏览上传文件的代码
2017/08/23 Javascript
vue2 设置router-view默认路径的实例
2018/09/20 Javascript
vue router的基本使用和配置教程
2018/11/05 Javascript
PostgreSQL Node.js实现函数计算方法示例
2019/02/12 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
node.js中 redis 的安装和基本操作示例
2020/02/10 Javascript
Python中django学习心得
2017/12/06 Python
对Python中class和instance以及self的用法详解
2019/06/26 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
python实现126邮箱发送邮件
2020/05/20 Python
python实现发送带附件的邮件代码分享
2020/09/22 Python
HTML5实现视频弹幕功能
2019/08/09 HTML / CSS
中国排名第一的外贸销售网站:LightInTheBox.com(兰亭集势)
2016/10/28 全球购物
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
巴西备受欢迎的服装和生活方式品牌:FARM Rio
2020/02/04 全球购物
美国在线购买内衣网站:HerRoom
2020/02/22 全球购物
业务员岗位职责
2013/11/16 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
党员弘扬焦裕禄精神思想汇报
2014/09/10 职场文书
2014年内勤工作总结
2014/11/24 职场文书