Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 445|回复: 0

Vue导入非模块化的第三方插件功能无效解决方案

[复制链接]
  • TA的每日心情
    奋斗
    4 天前
  • 签到天数: 802 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726006
    发表于 2021-5-29 09:06:22 | 显示全部楼层 |阅读模式

      一、问题:

        最近在写vue项目时,想引入某些非模块化的第三方插件时,总是发现会有报错。且在与本地运行插件测试对比时发现插件根本没有注入到jQuery中(console.log($.fn)查看当前jq有哪些方法),例如:

        

           本地测试                                                                Vue页面测试
    Object [jquery: "1.10.2",  …]                                        Object [jquery: "1.10.2",…] 
    . .
    . .
    . .
    val: ƒ (e)
    val: ƒ (e)
    velocity: ƒ () width: ƒ (i,o)
    width: ƒ (i,o) wrap: ƒ (e)
    wrap: ƒ (e) wrapAll: ƒ (e)
    wrapAll: ƒ (e) wrapInner: ƒ (e)
    wrapInner: ƒ (e)

      二、原因:

        由于jQuery这类的通用插件基本都是在模块化引入进来,即在webpack.base.conf.js里引入,每个页面使用的都是通用jq,单页面引入的第三方插件并不会注入到通用的jq中,故jq内无插件方法。

     plugins: [
        new webpack.ProvidePlugin({
          $: "jquery",
          jQuery: "jquery",
          "windows.jQuery": "jquery"
        })
      ],

        肯定有人会疑惑,那我在单页面再单独引入jQuery与插件可以吗,很不幸地是此时js加载顺序是:单页面jQuery--->插件--->模块化jQuery--->插件,也就是说模块化的jq肯定会加载进来。

        

    import  '../../static/jquery-background/js/jquery.min.js';
    import  '../../static/jquery-background/js/velocity.js';

     

      三、解决方案:

       既然模块化jq肯定会加载进来,只需把模块化jq引入单页面,拿插件方法注入。

       步骤:

        ①新建任意名.js,例如jquery-vendor.js;添加如下内容:

    import $ from 'jquery'
    window.$ = $
    jQuery = $
    window.jQuery = $
    export default $

        ②将新建的js与插件放在static下同一文件夹下,然后vue页面引入即可:

    import $ from '../../static/jquery-background/js/jquery-vendor.js';
    import  '../../static/jquery-background/js/velocity.js';

     

      

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-11-15 12:31 , Processed in 1.056171 second(s), 28 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表