zoukankan      html  css  js  c++  java
  • SeaJS 里版本号和时间戳管理的最佳实践

    用 seajs 组织项目,上线后,经常需要更新特定文件或所有文件的时间戳,以清空浏览器缓存。最简单的方式是:

    1
    2
    3
    define(function(require, exports) {
      var a = require('path/to/a.js?20110801');
    });

    这种方式很简单直观,弊端也很明显:文件一多,时间戳会分散在各个文件,维护起来不方便。

    第二种方式是利用 alias:

    1
    2
    3
    4
    5
    6
    7
    8
    seajs.config({
      alias: {
        'jquery': 'jquery/1.6.2/jquery',
        'backbone': 'backbone/0.5.1/backbone',
        'a': 'a.js?20110801',
        'b': 'b.js?20110801'
      }
    });

    这种方式用来维护 jquery 等类库模块的版本号是非常方便的。但用来加时间戳,文件一多时,依旧不方便。

    第三种方式是利用 map:

    1
    2
    3
    4
    5
    seajs.config({
      'map': [
        [ /^(.*\.(?:css|js))(.*)$/i, '$1?20110801' ]
      ]
    });

    这种方式,用来批量更新时间戳是最方便的。

    最佳实践

    假设文件存放路径如下:

    为了方便版本和时间戳管理,建议配置如下:

    config.js:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    seajs.config({
      alias: {
        'jquery': 'jquery/1.6.2/jquery',
        'backbone': 'backbone/0.5.1/backbone'
      },
      map: [
        [ /^(.*\/app\/xxx\/.*\.(?:css|js))(?:.*)$/i, '$1?20110802' ]
      ]
    });

    这样配置好后,在具体模块代码里,就不再需要考虑时间戳了:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    define(function(require, exports) {
      var $ = require('jquery');
      var BB = require('backbone');
     
      var a = require('./a');
      var b = require('./b');
      require('./c.css');
     
      // ...
    });

  • 相关阅读:
    光学
    ZYNQ学习笔记2——实例
    ZYNQ学习笔记
    AD使用技巧
    关于浮点运算的一点见解
    解决ccs不能同时导入两个相同工程名的问题
    multisum14 快捷键
    你的进程为什么被OOM Killer杀死了?
    Linux下哪些进程在消耗我们的cache?
    linux 安装python3.7.5
  • 原文地址:https://www.cnblogs.com/sniper007/p/2975571.html
Copyright © 2011-2022 走看看