我正在创建一个小的Javascript前端框架。 我决定针对HTTP 2优化它 - >没有捆绑。
我有异步依赖加载器,按需(在浏览器中)加载给定页面所需的所有资源。
但是有一点问题。 让我们说应用程序员想要使用jQuery。我将带有jQuery的脚本标记添加到正文中。
据我所知,cdn上托管的所有库都使用UMD。由于我不使用AMD,Common JS或ES6导入,因此它将jQuery变量暴露给我的应用程序全局范围。
但我不想用该变量来规范全局应用程序范围。相反,我希望能够重命名该变量,并可能将其添加到给定的命名空间。
有可能吗?
我想到的一个解决方案是使用XHR请求加载该脚本,在其上使用eval()并以某种方式将结果包装在我的框架代码中。但我有点失落,不知道该怎么做。
感谢您的任何建议。
答案 0 :(得分:1)
我们可以通过XHR包含脚本来实现这一点。
var myObj = {};
var myOverride = function(res){
var jqRes = res.currentTarget.responseText;
console.log(res.type);
eval(jqRes);
myObj.jq = $;
$ = undefined;
console.log(myObj.jq);
}
var xhr = new XMLHttpRequest();
xhr.open("GET","https://code.jquery.com/jquery-2.2.3.js");
xhr.addEventListener("load",myOverride);
xhr.send();
请找到附带的JSFiddle。 https://jsfiddle.net/h9aycg6m/
但我的建议是不要覆盖这些变量,因为$ / jQuery这些术语已经在全球范围内。