seajs配置

seajs.config({
//别名配置
  alias:{
    'es5-safe':'gallery/es5-safe/0.9.3/es5-safe',
    'jquery':'jquery/jquery/1.10.1/jquery',
    'json':'gallery/json/1.0.2/json',
  },
  //配置路径
  path:{
    'gallery':'https://a.alipayobjects.com/gallery'
  },
  //变量配置
  vars:{
    'locale':'zh-cn'
  },
  //映射配置
  map:[
    ['http://example.com/js/app','http://localhost/js/app/']
  ],
  //预加载
  preload:[
    Function.prototype.bind?'':'es5-safe',
    this.JSON?'','json'
  ],
  //调试模式
  debug:true,
  //seajs的基础路径
  base:'http:example.com/path/to/base',
  //文件编码
  charset:'utf-8'
})

 seajs使用

1.当模块标识很长时,可以使用alias来简化。

seajs.config({
alias:{
    'jquery':'jquery/jquery/1.10.1/jquery',
    'app/biz':'http://path/to/app/biz.js',
  }
}) define(function(require,exports,module){
  var $=require('jquery');
  //加载的是http://path/to/base/jquery/jquery/1.10.1/jquery.js
  var biz=require('app/biz');
  //加载的是http://path/to/app/biz.js
})

2.当目录比较深,或需要跨目录调用模块时,可以使用paths来简化。

seajs.config({
  path:{
    'gallery':'https://a.alipayobjects.com/gallery',
    'app':'path/to/app',
  }
}) define(function(require,exports,module){
  var underscore=require('gallery/underscore');
  //加载的是https://a.alipayobjects.com/gallery/underscore.js
  var biz=require('app/biz');
  //加载的是path/to/app/biz.js
})

3.有些场景下,模块路径在运行时才能确定,这时可以使用vars变量来配置

seajs.config({
  vars:{
    'locale':'zh-cn'
  }
}) define(function(require,exports,module){
  var lang=requrie('./i18n/{locale}.js')
  //加载的是path/to/il8n/zh-cn-js
})

4.map,对模块路径进行映射修改,可用于路径转换,在线调试等。

seajs.config({
map:[
    ['.js','-debug.js']
  ]
}) define(function(require,exports,module){
  var a=require('./a');
  //加载的是path/to/a-debug.js
})

5.使用preload配置项,可以在普通模块加载前,提前加载并初始化好指定模块。

// 在老浏览器中,提前加载好 ES5 和 json 模块
seajs.config({
  preload: [
    Function.prototype.bind ? '' : 'es5-safe',
    this.JSON ? '' : 'json'
  ]
});//preload中的空字符串会被忽略

6.定义模块

define('hello', ['jquery'], function(require, exports, module) {

  // 模块代码

});
define('hello', ['jquery'], function(require, exports, module) {

  // 模块代码

});
 

7.require 是一个方法,接受 模块标识 作为唯一参数,用来获取其他模块提供的接口。

define(function(require, exports) {

  // 获取模块 a 的接口
var a = require('./a'); // 调用模块 a 的方法
a.doSomething(); });

8.require.async 方法用来在模块内部异步加载模块,并在加载完成后执行指定回调。callback 参数可选。

define(function(require, exports, module) {

  // 异步加载一个模块,在加载完成时,执行回调
require.async('./b', function(b) {
b.doSomething();
}); // 异步加载多个模块,在加载完成时,执行回调
require.async(['./c', './d'], function(c, d) {
c.doSomething();
d.doSomething();
}); }); 注意require 是同步往下执行,require.async 则是异步回调执行。require.async 一般用来加载可延迟异步加载的模块。

9.使用模块系统内部的路径解析机制来解析并返回模块路径。该函数不会加载模块,只返回解析后的绝对路径。

define(function(require, exports) {

  console.log(require.resolve('./b'));
// ==> http://example.com/path/to/b.js });

10.exports 是一个对象,用来向外提供模块接口。

define(function(require, exports) {

  // 对外提供 foo 属性
exports.foo = 'bar'; // 对外提供 doSomething 方法
exports.doSomething = function() {}; }); //除了给 exports 对象增加成员,还可以使用 return 直接向外提供接口。
define(function(require) {

  // 通过 return 直接提供接口
return {
foo: 'bar',
doSomething: function() {}
}; });
 
define(function(require, exports, module) {
module.exports = {
foo: 'bar',
doSomething: function() {}
}; });
 

11.模块的唯一标识。

define('id', [], function(require, exports, module) {

  // 模块代码

});

12.根据模块系统的路径解析规则得到的模块绝对路径。

define(function(require, exports, module) {

  console.log(module.uri);
// ==> http://example.com/path/to/this/file.js 一般情况下(没有在 define 中手写 id 参数时),module.id 的值就是 module.uri,两者完全相同。 });

练习代码

//模块入口
seajs.use('./js/test/test1',function(a){
   a.fun1()
})

//test1.js
define(function(require,exports,module){
var test=require('./test2');
console.log(test.bb)//我safdsafes
console.log(require.resolve('./test1'))//http://127.0.0.1:8020/seajs/js/test/test1.js
console.log(module.uri)//http://127.0.0.1:8020/seajs/js/test/test1.js
console.log(module.dependencies)//['test2']
module.exports={
fun1:function(){console.log("fun1----------"+test.fun1())},//fun1----------fun1----------
fun2:function(){console.log("fun2---------")},
bb:'我是代理商积分'
}
}) //test2.js
define(function(require,exports,module){
module.exports={
fun1:function(){ return "fun1----------"},
fun2:function(){console.log("fun2---------")},
bb:'我safdsafes'
}
})

seajs学习笔记的更多相关文章

  1. seaJs学习笔记2 – seaJs组建库的使用

    原文地址:seaJs学习笔记2 – seaJs组建库的使用 我觉得学习新东西并不是会使用它就够了的,会使用仅仅代表你看懂了,理解了,二不代表你深入了,彻悟了它的精髓. 所以不断的学习将是源源不断. 最 ...

  2. seaJs学习笔记之javascript的依赖问题

    之前分别为大家介绍了有关javascript中的冲突和性能问题,今天为大家介绍一下有关javascript中的依赖问题.我们将继续就之前javascript中性能问题继续介绍. 先来回顾一下性能问题的 ...

  3. SeaJS学习笔记(一) ./ 和 ../ 区别

    最近要去实习,公司里使用sea.js进行模块化开发 具体下载安装就不多说了,请参见SeaJS官网 <!DOCTYPE html> <html> <head> < ...

  4. seajs教程之seajs学习笔记 seajs.use用法

    seajs.use 用来在页面中加载模块.通过 use 方法,可以在页面中加载任意模块. 实例地址:http://www.android100.org/html/201405/23/12807.htm ...

  5. seajs 学习笔记

    seajs的作者是玉伯,具体好处优点等详见官方网址 介绍 1 模块定义define define(function(require,exports,module){ //require 引入需要的模块 ...

  6. seaJS学习资料参考

    seajs官方文档:http://seajs.org/docs/#docs http://wenku.it168.com/d_000096482.shtml http://blog.codinglab ...

  7. amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules

    amazeui学习笔记二(进阶开发5)--Web 组件开发规范Rules 一.总结 1.见名知意:见那些class名字知意,见函数名知意,见文件名知意 例如(HISTORY.md Web 组件更新历史 ...

  8. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  9. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

随机推荐

  1. SQL数据库对于保存特殊字符的解决办法

    数据库的Char.Vachar类型可以兼容汉字,但特殊字符不行,在保存包含有特殊字符的字符串.正文时,会将特殊符号替换成一个”?”号. 例如: “基础教育课程手机报•特刊” == > “基础教育 ...

  2. 编译安装 LLVM

    本文记录 LLVM 的安装过程,比较繁琐,使用 LLVM 3.4 操作系统:CentOS 6.6 64 位 1. 下载需要的软件 相关软件下载地址:http://llvm.org/releases/d ...

  3. 三十、【C#.Net开发框架】WCFHosting服务主机的利用WCF服务通讯和实现思路

    回<[开源]EFW框架系列文章索引>        EFW框架源代码下载V1.3:http://pan.baidu.com/s/1c0dADO0 EFW框架实例源代码下载:http://p ...

  4. angularjs + seajs构建Web Form前端(二)

    回顾 上一篇讲解了引入bootstrap构建一个简单的登录页面,如何让angularjs自动启动并绑定视图,操作过程当中如何使用ui-bootstrap,继而完成简单功能后如何引入seajs后如何使n ...

  5. Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据

    Oracle DBA的神器: PRM恢复工具,可脱离Oracle软件运行,直接读取Oracle数据文件中的数据 PRM 全称为ParnassusData Recovery Manager ,由 诗檀软 ...

  6. ASP.NET MVC数组模型绑定

    在ASP.NET MVC中使用Razor语法可以在视图中方便地展示数组,如果要进行数组模型绑定,会遇到索引断裂问题,如下示例: <input type="text" name ...

  7. IIS 7完全攻略之日志记录配置(摘自网络)

    IIS 7完全攻略之日志记录配置 作者:泉之源 [IT168 专稿]除了 Windows 提供的日志记录功能外,IIS 7.0 还可以提供其他日志记录功能.例如,可以选择日志文件格式并指定要记录的请求 ...

  8. tiny4412的中断资源连接关系示意图

    在tiny4412的设备树中可以发现,中断资源是以树的形式呈现的,下面是我画的一张图,大致描述了tiny4412上中断资源的连接关系. 可以到http://pan.baidu.com/s/1ge0sz ...

  9. Oracle 11g 安全加固

    1.安全加固的检查方向 2.安全加固检查safeCheck.sh 3.安全加固执行safeExec.sh 1.安全加固的检查方向 1.1.sysdba用户远程登录限制(查看Oracle登录认证方式) ...

  10. JS&CSS文件请求合并及压缩处理研究(三)

    上篇我们进行了一些代码方面的准备工作.接下来的逻辑是:在View页面解析时,通过 Html.AppendResFile 方法添加的资源文件,我们需要按照分组.优先级,文件名等条件,对其路径进行合并.具 ...