require 增量更新与版本管理
使用require.js 加载JS文件时,当JS文件有更新,可以通过更改全局版本号( urlArgs : 'v=1'),告诉浏览器加载新的文件。
但该方法虽然使用方便,但美中不足的是有些不需要更新的文件也会刷新加载了,特别是当加载管理的JS文件过多时,会造成很多不必要的浪费。
所以我们希望找到一种办法可以增量更新,需要更新哪个文件就只刷新加载哪个文件.
在提出解决方案之前,先来看下我们一般是怎样刷新加载前端静态文件的,常用的方式可能是在文件地址后面添加参数,例如版本号(?v=1),这样浏览器就会认为你这个是一样新的文件,它就会刷新加载。再来看define的加载方式也是通过文件地址来管理的,例如:
define(['text!shop/tpl.item.html'], function (tpl,destTpl) {})
所以只要更改这里的文件地址,在后面加上参数便可以达到刷新加载的目的
虽然直接修改这里的文件地址可以刷新加载该文件,但前提是当前JS文件也被刷新加载了,它里面所依赖的子文件才会被刷新加载。如果你的项目加载的层次是较多的,那将会引起一连串相关文件的修改,在实践中,会发现这样的修改量并不会少
那有没有一种简易的方式呢,我所想到的方式是:动态添加版本号,将文件地址委托给一个工具类的静态方法来管理,该静态方法里可以定义某种添加版本号策略,只为有需要更新的文件添加新的版本号,其它文件不需要修改文件地址。从而达到增量更新的目的。例如:
define([Util.getDefinePath('text!shop/tpl.item.html')],function (tpl,destTpl) {})
Util.getDefinePath = function(path){
if(path.indexOf('text!shop')!=-1){
path = path+'?v=3';//只为需要更新的文件 添加版本号
}
return path;//其它文件原样输出
}
当然修改了Util类后,Util类也是需要刷新加载的,但这时只需要修改Util类的文件地址就可以了,相比之前的方式可是简单多了
require 增量更新与版本管理的更多相关文章
- `cocos2dx非完整` 日志模块 增量更新
在上一篇文章中,说到了"流程"的由来,以及我对流程的使用. 这一片就是对流程的应用.前一篇文章中说到了三条流程 check_log_measure, check_env_measu ...
- 前端遇上Go: 静态资源增量更新的新实践
前端遇上Go: 静态资源增量更新的新实践https://mp.weixin.qq.com/s/hCqQW1F8FngPPGZAisAWUg 前端遇上Go: 静态资源增量更新的新实践 原创: 洋河 美团 ...
- uni-app: 如何实现增量更新功能?
都知道,很多APP都有增量更新功能,Uni APP也是在今年初,推出了增量更新功能,今天我们就来学习一波. 当然,很多应用市场为了防止开发者不经市场审核许可,给用户提供违法内容,对增量更新大多持排斥态 ...
- 谈谈混合 App Web 资源的打包与增量更新
综述 移动 App 的运行环境具有带宽不稳定,流量收费,启动速度比较重要等特点,所以混合 App 如何加载 Web 资源并不是一个新问题.本文目的是总结出一种资源打包下载的思路和方案,并且提供一种打包 ...
- SSIS Design2:增量更新
一般来说,ETL实现增量更新的方式有两种,第一种:记录字段的最大值,如果数据源中存在持续增加的数据列,记录上次处理的数据集中,该列的最大值:第二种是,保存HashValue,快速检查所有数据,发现异动 ...
- android studio增量更新
一.概述 1.1 概念 增量更新即是通过比较 本机安装版本 和 想要安装版本 间的差异,产生一个差异安装包,不需要从官网下载并安装全量安装包,更不需要将本机已安装的版本下载,而仅仅只是安装此差异安装包 ...
- Android 增量更新(BSDiff / bspatch)
Android 增量更新 BSDiff / bspatchhttp://www.daemonology.net/bsdiff/android的代码目录下 \external\bsdiff bsdiff ...
- 【转载】Unity 合理安排增量更新(热更新)
原帖地址:由于我看到的那个网站发的这篇帖子很大可能是盗贴的,我就暂时不贴地址了.避免伤害原作者 原版写的有点乱,我个人修改整理了下. --------------------------------- ...
- Unity5 如何做资源管理和增量更新
工具 Unity 中的资源来源有三个途径:一个是Unity自动打包资源,一个是Resources,一个是AssetBundle. Unity自动打包资源是指在Unity场景中直接使用到的资源会随着场景 ...
随机推荐
- 揭秘Kafka高性能架构之道 - Kafka设计解析(六)
原创文章,同步首发自作者个人博客.转载请务必在文章开头处以超链接形式注明出处http://www.jasongj.com/kafka/high_throughput/ 摘要 上一篇文章<Kafk ...
- require.js+bootstrap实现简单的页面登录和页面跳转
小颖的这个demo其实很简单的,大家一起来先来看看页面效果图: 目录: 代码: inde.html <!DOCTYPE html> <html> <he ...
- bootstrap快速入门笔记(七)-表格,表单
一,表格 1,<table>中加.table类 2,条纹表格:通过 .table-striped 类可以给 <tbody> 之内的每一行增加斑马条纹样式. **跨浏览器兼容性: ...
- MD5加密。
MD5 是把文件用open打开,然后对内容hash后的值,所以和文件名无关,和位置无关,和修改时间无关,只与文件内容有关.
- ORA-01034: ORACLE not available ORA-27101: shared memory realm does not exist
Oracle 设置默认数据库 如果我们的服务器上或者电脑上安装了多个数据库,当我们使用sqlplus时如果为指定数据库时登录到的是哪一个数据库呢?今天遇到了一个老问题: ORA-01034: ORAC ...
- 蓝桥杯-第39级台阶-java
/* (程序头部注释开始) * 程序的版权和版本声明部分 * Copyright (c) 2016, 广州科技贸易职业学院信息工程系学生 * All rights reserved. * 文件名称: ...
- ECMAScript6 规范
本文探讨如何将ES6的新语法,运用到编码实践之中,与传统的JavaScript语法结合在一起,写出合理的.易于阅读和维护的代码. 多家公司和组织已经公开了它们的风格规范,具体可参阅http://jsc ...
- BP神经网络及其算法优化
大致原理和一种优化的方案,如下图,公式打字太麻烦,于是用手搞定.
- 反序列py脚本分享(原创)
代码如下: #!/usr/bin/env python # coding=utf-8 import socket import sys import requests import base64 im ...
- WinRAR5.01注册码附注册机
把下面的注册码复制到"记事本"中,另存为"rarreg.key"文件,放到WinRAR安装目录即完成注册.RAR registration datakjcy8U ...