• 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功能也正常了

  • 相关阅读:
    d3js 添加数据
    d3js 画布 概念
    Python中的 socket示例
    swift学习笔记
    加密原理介绍,代码实现DES、AES、RSA、Base64、MD5
    socket编程中客户端常用函数
    WBS 与 甘特图
    C/C++ 数据结构之算法
    Linux集群服务 LVS
    Linux内核架构与底层--读书笔记
  • 原文地址:https://www.cnblogs.com/webstone/p/3678959.html
Copyright © 2020-2023  润新知