当前位置: 首页 > news >正文

seajs

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

所有源码都存放在 GitHub 上:seajs/examples,目录结构为:

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

spm(static package manager)致力于提供一个开放、通用、完善、集成化的基于浏览器模块生命周期的包管理工具,包括初始化、编码、本地化调试、文档生成、发布、依赖管理、单元测试、构建、源服务等等功能。

dist      -- sea.js 等压缩好的文件,直接可用
docs      -- 使用文档
lib       -- 给 Node.js 用的版本
src       -- 源码
tests     -- 测试集
Makefile  -- 可执行构建、测试等命令

推荐使用 spm 安装:

$ npm install spm -g
$ spm install seajs

seajs.config

用来对 Sea.js 进行配置。

seajs.config({

  // 设置路径,方便跨目录调用
  paths: {
    'arale': 'https://a.alipayobjects.com/arale',
    'jquery': 'https://a.alipayobjects.com/jquery'
  },

  // 设置别名,方便调用
  alias: {
    'class': 'arale/class/1.0.0/class',
    'jquery': 'jquery/jquery/1.10.1/jquery'
  }

});

更多配置项请参考:#262

seajs.use

用来在页面中加载一个或多个模块。

// 加载一个模块
seajs.use('./a');

// 加载一个模块,在加载完成时,执行回调
seajs.use('./a', function(a) {
  a.doSomething();
});

// 加载多个模块,在加载完成时,执行回调
seajs.use(['./a', './b'], function(a, b) {
  a.doSomething();
  b.doSomething();
});

更多用法请参考:#260

define

用来定义模块。Sea.js 推崇一个模块一个文件,遵循统一的写法:

define(function(require, exports, module) {

  // 模块代码

});

也可以手动指定模块 id 和依赖,详情请参考:#242
requireexports 和 module 三个参数可酌情省略,具体用法如下。

require

require 用来获取指定模块的接口。

define(function(require) {

  // 获取模块 a 的接口
  var a = require('./a');

  // 调用模块 a 的方法
  a.doSomething();
});

注意,require 只接受字符串直接量作为参数,详细约定请阅读:#259

require.async

用来在模块内部异步加载一个或多个模块。

define(function(require) {

  // 异步加载一个模块,在加载完成时,执行回调
  require.async('./b', function(b) {
    b.doSomething();
  });

  // 异步加载多个模块,在加载完成时,执行回调
  require.async(['./c', './d'], function(c, d) {
    c.doSomething();
    d.doSomething();
  });

});

详细说明请参考:#242

exports

用来在模块内部对外提供接口。

define(function(require, exports) {

  // 对外提供 foo 属性
  exports.foo = 'bar';

  // 对外提供 doSomething 方法
  exports.doSomething = function() {};

});

详细说明请参考:#242

module.exports

与 exports 类似,用来在模块内部对外提供接口。

define(function(require, exports, module) {

  // 对外提供接口
  module.exports = {
    name: 'a',
    doSomething: function() {};
  };

});

module.exports 与 exports 的区别,以及详细说明请参考:#242

转载于:https://my.oschina.net/u/3150996/blog/858438

相关文章:

  • 完成数据的打通-豌豆荚被阿里巴巴收购后的168天
  • 神奇的模块--谷歌开源 Python Fire:自动生成命令行接口
  • PHP快速入门 如何操作MySQL
  • 【Java基础】5、java中的匿名内部类
  • Android textview及其子类
  • 正则表达式匹配IP和月日
  • Oracle 快速插入1000万条数据的实现方式
  • Fedora 25上安装微软SQL Server过程
  • Nginx 和 PHP 的两种部署方式比较
  • MVVM 简介
  • Android支付宝SDK开发笔记
  • Future模式-多任务并行汇总 or 同步任务回调
  • mysql组内排序取最大值
  • 科学家制作“更绿”香草
  • Advanced Auto Layout:Programmatically Creating Constraints
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 2018一半小结一波
  • FineReport中如何实现自动滚屏效果
  • HTTP中GET与POST的区别 99%的错误认识
  • java2019面试题北京
  • JavaScript 一些 DOM 的知识点
  • Java编程基础24——递归练习
  • Magento 1.x 中文订单打印乱码
  • spring-boot List转Page
  • Twitter赢在开放,三年创造奇迹
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • XForms - 更强大的Form
  • 百度小程序遇到的问题
  • 不上全站https的网站你们就等着被恶心死吧
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 七牛云假注销小指南
  • 前端工程化(Gulp、Webpack)-webpack
  • 数据结构java版之冒泡排序及优化
  • 微信如何实现自动跳转到用其他浏览器打开指定页面下载APP
  • 系统认识JavaScript正则表达式
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 如何通过报表单元格右键控制报表跳转到不同链接地址 ...
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • %check_box% in rails :coditions={:has_many , :through}
  • (2)(2.10) LTM telemetry
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (四)汇编语言——简单程序
  • (一)Mocha源码阅读: 项目结构及命令行启动
  • (转)Spring4.2.5+Hibernate4.3.11+Struts1.3.8集成方案一
  • (转)负载均衡,回话保持,cookie
  • .aanva
  • .htaccess配置重写url引擎
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net 桌面开发 运行一阵子就自动关闭_聊城旋转门家用价格大约是多少,全自动旋转门,期待合作...
  • .NET/C# 使用 #if 和 Conditional 特性来按条件编译代码的不同原理和适用场景
  • .NET6 开发一个检查某些状态持续多长时间的类