我想将jquery-1.4.2与jquery-3.x并行地包括在内。我将两个脚本的路径别名为:jquery1/jquery3
对于jQuery3.x,下面的代码可以工作:
require("imports-loader?jQuery=jquery3!app/some.jquery.myplugin");
但是如果我对jquery1也这么做的话:
require("imports-loader?jQuery=jquery1!app/some.jquery.mylegacyplugin");
我在运行时获得:无法设置属性mylegacyplugin的未定义。
到目前为止,我找到的唯一解决方案是编辑jQuery1.4.2。在函数的末尾添加以下内容:
module.exports=jQuery;
我是否可以使用加载程序来避免编辑jquery的源代码?
发布于 2018-03-15 22:58:56
我创建了一个存储库来演示它
安装:npm i exports-loader -D。我看到您已经安装了imports-loader。
我希望你能修改你的插件添加module.exports。
myJQueryPlugin.js
$.fn.greenify = function () {
debugger;
this.css("color", "green");
return this;
}
module.exports = $;添加以下规则:
module: {
rules: [
{
use: "exports-loader?window['jQuery']",
test: /jQuery.1.4.2.js$/
}, 我还为我的jQuery插件添加了一个resolve.alias:
resolve: {
alias: { // shortcuts
"myjqPlugin": path.resolve("src/scripts/plugins/app/myJQueryPlugin.js")),然后在您的index.js中
// you would probably name this `var` differently:
var my142jQueryIncludingPlugin = require("imports-loader?$=../../libs/jQuery.1.4.2.js!myjqPlugin");
my142jQueryIncludingPlugin("*").greenify();结果:一切都是绿色的:-)
https://stackoverflow.com/questions/49284326
复制相似问题