javascript - 如何使用 RequireJS 获取查询字符串参数
问题描述
我正在使用RequireJS
我一直在开发的 Javascript 小部件。我需要从加载的脚本中获取查询字符串参数RequireJS
。有什么干净的方法吗?假设以下是我的脚本标签:
<script src="requirejs/build/app.js?arg1=test&agr2=test2" type='text/javascript'></script>
我需要稍后在RequireJS
加载所有模块时获取 arg1 和 arg2。更具体地说,我在这里需要它们:
define(['jquerync', 'bootstrap', 'custommodule'],
function ($, bootstrap, custommodule) {
//need them here in order to send server-side call for data
});
我为什么要这个?有时用户创建两个小部件,然后在同一页面上添加两个小部件的脚本,然后我需要确定正在调用哪个脚本,以便为该脚本提供有关要加载的小部件的一些基本初始化数据。或者任何人有更好的方法来解决这个问题?
注意:Document.currentScript
不是一个选项,因为RequireJS
异步加载文件加上它在IE
.
解决方案
如果要附加到 requirejs,可以在配置中使用 urlArgs。
var arg1 = "test";
require.config({
baseUrl: "/scripts",
paths: {
"jquery": "jquery-2.2.1",
"bootstrap": "jquery.bootstrap"
},
urlArgs: "arg1=" + arg1
});
您可以使用以下模块从 Requirejs 中的任何模块获取查询字符串
define([],
function () {
function getParameterByName(name, url) {
if (!url) {
url = window.location.href;
}
name = name.replace(/[\[\]]/g, "\\$&");
var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"),
results = regex.exec(url);
if (!results) return null;
if (!results[2]) return '';
return decodeURIComponent(results[2].replace(/\+/g, " "));
}
return{
getParameterByName: function (name, url) {
return getParameterByName(name,url);
}
}
});
推荐阅读
- c# - 根据选择将目录从源复制到目标
- r - 将鼠标悬停在 R 中的 DataTable 值上?
- r - 将组合 .csv 文件中的多个轨迹绘制为不同颜色
- data-structures - 使用 2P CRDT 数据结构(例如 2P-set)时,如何释放空间?
- javascript - 如何使用 FETCH 设置单元测试
- javascript - 循环遍历具有相同 ID 的多个 HTML 元素并使用它们的数据构建对象
- amazon-web-services - aws: .net Core:压缩构建的代码并复制到 s3 输出存储桶
- authorization - 如何验证守护程序以访问 MS 自定义翻译 API
- python - 如何在堆叠的水平条形图中将跟踪文本对齐到中心
- javascript - 如何在 React 的 setState 上的对象数组上添加一个项目?