seajs之seajs-debug坑

最近遇到两个关于seajs-debug的坑

一个与preload有关,详情见https://github.com/seajs/seajs-debug/issues/15

一个与map时间戳有关,详情见https://github.com/seajs/seajs-debug/issues/16

截止本文章前,官方还未给出彻底解决方案.

本人经过试验,研究出一个勉强可行的办法

由于资源问题,没有启用combo服务器,所以本人将seajs-log,seajs-style合并到了sea.js中,追加在sea.js内容的末尾,且看作是一个"硬combo".

一.preload问题:

 

解决方案是:

暂时避免配置preload,直到官方给出解决方案.

a.如果你的预加载模块"非预加载不可",那么可以像seajs插件一样,将代码手动合并到seajs中,即追加拷贝代码

b.如果你的预加载模块只是一个页面公用模块,且不被其他模块依赖(其实这也谈不上预加载模块了囧),那么就把这个模块用seajs.use放在layout页面的底部就行了

ps:preload数组中的模块,要等第一次调用seajs.use才会被加载.

 

 

二.时间戳与source模块问题:

上代码,就全部清楚了

var pageDebug = (seajs.data.preload[0] == 'seajs-debug');//判断是否加载seajs-debug
        seajs.config({
            alias: {
                "$": "jquery/jquery/1.7.2/jquery",
                "$-debug": "jquery/jquery/1.7.2/jquery-debug",
                "seajs-debug": "seajs/seajs-debug/1.1.1/seajs-debug",
                "placeholders":"gallery/placeholders/3.0.2/placeholders"
            },
            map: [
                pageDebug?function(){}:[ /^(.*\/app.*\/.*\.(?:css|js))(?:.*)$/i, '$1?t=20140421' ]//时间戳
            ]
        })

这样,页面URL没有seajs-debug的时候,加载模块的url是带时间戳的,有seajs-debug的时候,source功能也正常了

posted on 2014-04-21 18:15  雲石  阅读(413)  评论(0编辑  收藏  举报