seajs的使用方法个人总结

seajs的作用:

当你的网站开发越来越复杂的时候,会经常遇到这些问题吗?
冲突
性能
依赖

seajs如何解决?
①引入sea.js的库
②如何变成模块?
define  在模块grunt合并的时候 define里面要多2个参数 一个id ,一个依赖模块的数组
③如何调用模块?
exports
seajs.use
④如何依赖模块?
require  https://github.com/seajs/seajs/issues/259  requie还是严格书写约定不能被修改。 (但是自己在rrd上却看到被修改了很疑惑)


深入学习seajs
define
require
seajs.use
seajs.config
alias
preload
debug


模块化历史
ECMAScrpt第六版将正式支持模块语法
nodeJS
commonJS
AMD
requireJS
跟seajs一样,web端模块化
seajs采用cmd规范



=====================个人总结。 

/*

* 使用步骤。1,引入seajs  2、定义define模块  3、 模块的调用 seajs.use  4 如何依赖模块(模块之间的依赖) require()
* 步骤二:define参数说明  require 请求地址  exports 对外提供接口对象
 *define中的三个参数可以都写,可以都不写,可以只有前1个,可以只有前2个
 * 
 *步骤三:seajs.use参数说明   如seajs.use('./js/jq.js',function(ex){ dosomething....}) 有2个参数, 第一个参数是请求的模块地址;第二个参数是回调函数其中回调函数中的参数是模块返回的接口对象
 *步骤四:require  例子define(function(require,exports,module){
 *      var a=require('js/module3.js').a;  当这个require方法引入的是sea模块时候,require执行完后返回的结果就是exports接口对象;
 *      上面的例子就是把module3里面暴露的 a属性复制给这个模块 的a ,在本模块就可以直接使用
 *});
 * 
 *================
 * 注意:在sea.js请求成功以后,请求的默认路径都会是sea.js的路径,
 * 特别注意,[ 有些版本 ]加入sea.js的父级或者祖辈父级有名字为‘seajs’的文件夹,那么会以seajs这个文件夹路劲为基础路径
 * 如:在index.html使用seajs.use('js/jq.js')中的的jq.js的路劲是在seajs文件夹下面的
 * 但是index.html为seajs.use('./js/jq.js')时,jq.js是相对index.html的路径

 */


=====在2.1版本的更新


  1. seajs.config 中,去除 plugins 和 preload 功能。 在内部实现上,plugins 是通过 preload 来实现的。但 preload 严格意义上来说,并不是 Sea.js 需要去承担的职责。去除 preload 后,plugins 的加载也变得简单,直接通过 script 提前引入就好,或者通过 combo 服务与 sea.js 一起加载。

  2. 去除对循环依赖的支持。目前 Sea.js 是支持循环依赖的,当有死循环时,也会给出适当的提示。但就如 Go 语言设计者所说,支持循环依赖,看起来很 cool,也能在某些场景下给设计带来简化,但从长远上来,支持循环依赖,会给整体增加复杂性,让依赖关系等都变得复杂。从这个角度上,对循环依赖的支持是一种心理上的完美,而非工程上的完美。去除对循环依赖的支持,有两个做法:1)保留循环依赖时的提示功能,这样对代码层面其实不会有太多精简。2)彻底去除,根本不考虑,有死循环时,自然的报错(比如浏览器的提示)。具体怎么做还有纠结。

  3. 去除对 data-config / data-main 的支持。 这两个是锦上添花的功能。保留着,看似能带来简洁性,但一定程度上掩盖了内部机制。不如让用户直接通过 seajs.use 去启动加载的好。

  4. define(id, fn) 的支持。 2.0 中只支持 define(fn) 和 define(id, deps, fn),考虑将对define(id, fn) 的支持再加回来。在手写 id 的情况下,这种写法还是蛮方面的。

  5. config 中的 alias 改名叫 aliases。 原来的命名是个错误,应该统一用复数形式。这个不一定修改,也许保留这个错误也没问题。


seajs 2.0版本用shim 加载非cmd模块 

 https://github.com/seajs/seajs/issues/579,当然如果不想用grunt构建成cmd模块,那么可以直接用script:src引入非cmd模块文件

你可能感兴趣的:(seajs)