dojo实现加载新版本js库
2014-08-14 10:24
127 查看
使用dojo后一直纠结js文件内容有更新时如何加载,这两天终于把问题解决了,原来想加一个库文件代替dojo相应的函数,但发现dojo库纠緾得太紧了,就在原文件上改。
加载分两种情况一种dojo.text!加载或不用执行代码,另外一个是作为库加载,这两个要分开处理。
第一种是直接在加载的url后面加入版本号“?v=xxx"。
另外一种是在加载库文件时添加版本号“?v=xxx"。
使用时在require库增加version属性即可。
require.version='v0.1';
加载分两种情况一种dojo.text!加载或不用执行代码,另外一个是作为库加载,这两个要分开处理。
第一种是直接在加载的url后面加入版本号“?v=xxx"。
toUrl = req.toUrl = function(name, referenceModule){ var moduleInfo = getModuleInfo(name+"/x", referenceModule), url= moduleInfo.url; url=url.substring(0, url.length-5) if (req.version){ url += "?"+req.version; name+="?"+req.version; } return fixupUrl(moduleInfo.pid===0 ? // if pid===0, then name had a protocol or absolute path; either way, toUrl is the identify function in such cases name : // "/x.js" since getModuleInfo automatically appends ".js" and we appended "/x" to make name look like a module id url//url.substring(0, url.length-5) );
另外一种是在加载库文件时添加版本号“?v=xxx"。
compactPath = function(path){ var p=path; var result = [], segment, lastSegment; path = path.replace(/\\/g, '/').split('/'); while(path.length){ segment = path.shift(); if(segment==".." && result.length && lastSegment!=".."){ result.pop(); lastSegment = result[result.length - 1]; }else if(segment!="."){ result.push(lastSegment= segment); } // else ignore "." } var url=result.join("/"); if(p.indexOf('/x.js')==-1 && req.version && p.indexOf('.js')!=-1){ url+="?"+req.version; //console.log('compactPath result:',path,result); } return url; },
使用时在require库增加version属性即可。
require.version='v0.1';
相关文章推荐
- 微软treeview控件异步加载实现方式
- 简单实现Crystal Report的动态加载
- ASP.NET中实现模版的动态加载
- 使用JavaScript实现访问本站点任何页面都加载Frame的一种实现方式
- 数据加载等待页面的VB.NET代码实现
- 用javascript实现(页面正在加载的效果)
- ASP.NET中实现模版的动态加载
- ASP.NET中实现模版的动态加载
- ASP.NET中实现模版的动态加载
- ASP.NET中实现模版的动态加载
- ASP.NET中实现模版的动态加载(转)
- ASP.NET中实现模版的动态加载
- 通过使页面动态加载不同CSS实现多界面
- ASP.NET中实现模版的动态加载(转)
- ASP.NET中实现模版的动态加载
- 《利用反射实现类的动态加载》调试出错的解决
- 笔记 C# 实现后台 动态加载 页面标题 Dynamic Load Page Title
- 延迟加载的一般实现
- 偶然发现网站换肤一招:使页面动态加载不同CSS实现多界面
- Flex 在 ViewStack中使用 Repeater实现动态加载系统的不同模块