如何获取RequireJS加载的JS文件的GET参数(提取version值)
如何在RequireJS加载的脚本中提取版本号
方案1:直接使用RequireJS内置的module变量
RequireJS加载的每个模块都能访问内置的module对象,其中module.uri属性就是当前模块的完整加载URL,完全能区分开页面中大量的同类脚本。
示例代码:
// 在你的script.js模块内部 const currentModuleUrl = module.uri; // 根据URL格式编写正则匹配版本号 const versionRegex = /\/([^\/]+)\/script\.js\?v=([^&]+)/; const matchResult = currentModuleUrl.match(versionRegex); if (matchResult) { // 两处version值一致,取任意一个即可 const version = matchResult[1]; console.log('当前脚本版本:', version); }
这个方法直接针对当前执行的模块,不会和其他脚本的URL混淆,完全适配大量脚本共存的场景。
方案2:基于RequireJS配置反向推导(可选)
如果项目里RequireJS有统一的路径配置(比如把版本号包含在模块ID里),可以通过配置反向匹配版本:
// 假设RequireJS配置有类似映射 require.config({ paths: { 'widget-1.2.3': '/widgets/xxx/1.2.3/script' } }); // 在模块中获取当前模块ID,再解析版本 const currentModuleId = module.id; const version = currentModuleId.split('-')[1]; console.log('当前脚本版本:', version);
这种方式依赖统一的配置规范,不如第一种通用。
关键提醒
- 不要尝试遍历DOM中的
<script>标签:RequireJS动态加载的脚本不会在DOM中生成对应的标签,常规标签遍历方案完全无效。 - 正则可按需调整:如果URL格式有变化,比如widget的前缀固定,可以把正则写得更精准,比如
/widgets\/[^\/]+\/([^\/]+)\/script\.js\?v=\1/,确保匹配到两处一致的version值。
内容的提问来源于stack exchange,提问作者Mr. Leo
相关产品推荐
相关产品推荐

