SEAJS 的使用 – 配置,及版本号控制

seajs 的配置还是很简单的, 总共就那么几个, 用下面一段代码来说明每项配置大概的作用吧。

//config.js
;(function(){
var root = '../static/js/';
var version = '1.0';
seajs.config({
//模块系统的基础路径
base: '../static/js/',

//别名
alias: {
'jquery': 'jquery/jquery-1.7.2.min'
, 'jquery-plug': 'jquery/plugs/'
},

//预加载
preload: [
window.$ || window.jQuery ? '' :'jquery'
],

//错误信息查看
debug: 1,

//文件映射
map: [
//可配置版本号
['.css', '.css?v=' + version],
['.js', '.js?v=' + version]
],

//编码
charset: 'utf-8'
});
})();

base:

base 有一个默认的值, 它是 sea.js 在你项目中的位置,也就是说在默认情况下,所有模块都是相对 sea.js 的路径来解析的。

当设置了 base 后,你 require 或者 require.async 一个模块的时候,如果是采用顶级标识(不以 . 和 / 开头)来载入,那么 base 设定的路径将对模块起作用,而以 . 和 / 开头载入的模块,读取的模块是以相对当前模块的路径来解析。注意: base 还会对 alias 配置项起作用,这一点作者并没有提到。

 

alias:

别名,很好理解。有时候项目比较大,各模块间划分比较细,目录文件比较多、深,这个时候可以给某一个模块或者一组模块起一个别名,用来简化模块的标识,同时也方便模块的迁移。

preload:

preload 是配置需要提前加载并初始化的模块,或者预加载的文件。 根据作者的原话,提前加载的模块,在 use 的时候才加载,但是本人测试的时候,只是建立 config 文件后并没有 use 模块,但是在控制面板里 preload 设置的模块和文件均会发送请求并加载,不知是否后续版本有变动。

还有一点要注意,在 preload 文件的时候(特别是像 jq 库)要考虑其他文件内容对 preload 的文件的依赖。比如,preload 里预加载 jq 库文件(注意是库文件,不是改动后的 jq 模块),然后某一个模块里 require(‘jqeury-plug/fancybox/jquery.fancybox-1.3.4.pack’)  这个时候,需要考虑解析和加载的问题了,由于在本地速度相当快,有的时候就是 fancybox 加载好了开始执行的时候 jq 库文件确还没加载好,结果就导致错误出现了。关于使用 jq 模块和 jq 库的问题后面再讨论。

debug:

debug 有3个值可选,0|1|2

0: 普通状态,你就当啥也没发生

1: 调试状态,combo 会失效,其他和 0 的时候一样

2: 无缓存状态,所有请求都会自动在后面添加一个时间戳,其他和 1 的时候一样

值为 2 的时候在 2.0.0 里并没有表现出来,不知神马情况。

charset:

这个没啥好说,你懂的。

map:

简单的说是文件映射,但是它实际上的作用一句两句说不完。

在上面 config.js 里做的映射起作用就是控制版本号,而除了这个功能外,在开启 ?seajs-debug 状态下 map 将发挥更大的作用,具体可以参看 这里

转载请注明来自: 爱前端
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值