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()*/
=====在2.1版本的更新
seajs.config
中,去除 plugins 和 preload 功能。 在内部实现上,plugins 是通过 preload 来实现的。但 preload 严格意义上来说,并不是 Sea.js 需要去承担的职责。去除 preload 后,plugins 的加载也变得简单,直接通过 script 提前引入就好,或者通过 combo 服务与 sea.js 一起加载。
去除对循环依赖的支持。目前 Sea.js 是支持循环依赖的,当有死循环时,也会给出适当的提示。但就如 Go 语言设计者所说,支持循环依赖,看起来很 cool,也能在某些场景下给设计带来简化,但从长远上来,支持循环依赖,会给整体增加复杂性,让依赖关系等都变得复杂。从这个角度上,对循环依赖的支持是一种心理上的完美,而非工程上的完美。去除对循环依赖的支持,有两个做法:1)保留循环依赖时的提示功能,这样对代码层面其实不会有太多精简。2)彻底去除,根本不考虑,有死循环时,自然的报错(比如浏览器的提示)。具体怎么做还有纠结。
去除对 data-config / data-main 的支持。 这两个是锦上添花的功能。保留着,看似能带来简洁性,但一定程度上掩盖了内部机制。不如让用户直接通过 seajs.use
去启动加载的好。
define(id, fn) 的支持。 2.0 中只支持 define(fn)
和 define(id, deps, fn)
,考虑将对define(id, fn)
的支持再加回来。在手写 id 的情况下,这种写法还是蛮方面的。
config 中的 alias 改名叫 aliases。 原来的命名是个错误,应该统一用复数形式。这个不一定修改,也许保留这个错误也没问题。