首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不修改源代码的情况下将“jQuery1.4.2”加载为webpack中的一个模块

如何在不修改源代码的情况下将“jQuery1.4.2”加载为webpack中的一个模块
EN

Stack Overflow用户
提问于 2018-03-14 17:35:55
回答 1查看 36关注 0票数 0

我想将jquery-1.4.2jquery-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的源代码?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-15 22:58:56

我创建了一个存储库来演示它

安装:npm i exports-loader -D。我看到您已经安装了imports-loader

我希望你能修改你的插件添加module.exports

myJQueryPlugin.js

代码语言:javascript
复制
$.fn.greenify = function () {
    debugger;
    this.css("color", "green");
    return this;
}

module.exports = $;

添加以下规则:

代码语言:javascript
复制
 module: {
            rules: [        
                {
                    use: "exports-loader?window['jQuery']",
                    test: /jQuery.1.4.2.js$/
                },  

我还为我的jQuery插件添加了一个resolve.alias:

代码语言:javascript
复制
 resolve: {
      alias: { // shortcuts             
            "myjqPlugin": path.resolve("src/scripts/plugins/app/myJQueryPlugin.js")),

然后在您的index.js

代码语言:javascript
复制
// you would probably name this `var` differently:
    var my142jQueryIncludingPlugin = require("imports-loader?$=../../libs/jQuery.1.4.2.js!myjqPlugin");

    my142jQueryIncludingPlugin("*").greenify();

结果:一切都是绿色的:-)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49284326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档