你的位置:首页 > 信息动态 > 新闻中心
信息动态
联系我们

vue3知识点5.33 vuecli3/4中jquery和bootstrap的引入和使用(亲测有效)

2022/1/2 14:49:02

vue3知识点5.33 vuecli3/4中jquery和bootstrap的引入和使用

前言:

一定要是npm create xxx创建的项目,才管用。下面分享我做的一个可用的小例子。

我看了很多博客,我自己用了都报错。

报错1:Uncaught TypeError: Bootstrap’s JavaScript requires jQuery. jQuery must be …

提示bootstrap在jquery前面,要求jquery在前面引用,但是我的jquery就是在前面,没有引用错。

报错2:$ is not defined.

$无法全局使用,只能在使用的组件中添加,import $ from jquery,即使配置了vue.config.js也不行。

报错3:下载好了在执行启动命令的时候,提示:

npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! vue3demo2@0.1.0 serve: vue-cli-service serve

报错3解决办法:

jquery和bootstrap引入方法

以下内容均在vue3demo2 helloworld.vue中。

1.安装jquery

安装jQuery
npm install --save jquery

2.安装bootstrap,popper.js 用于在 Bootstrap 中显示弹窗、提示、下拉菜单。

npm install --save popper.js
npm install bootstrap@4 --save

或者合起来安装这样写

npm install jquery bootstrap@4 popper.js --save

安装成功,在package.json,可以看到这样:

image-20220102130834839

如果安错了想卸载

直接把package.json下的dependencies下刚安的插件删除,重新安就行。

在项目main.js中引入.

import "bootstrap";
import "bootstrap/dist/css/bootstrap.min.css";
import "bootstrap/dist/js/bootstrap.min.js"

image-20220102135858809

3.配置vue.config.js

vuecli3和4中没有vue.config.js文件,在package.json同级目录中建立一个,vue.config.js。

添加以下内容:

const webpack = require("webpack");

module.exports = {
    devServer: {
    configureWebpack: {
        plugins: [
            new webpack.ProvidePlugin({
                $: 'jquery',
                jQuery: 'jquery',
                'window.jQuery': 'jquery',
                Popper: ['popper.js', 'default']
            })
        ]
    }
}

在我测试过程中,这段代码也无法保证$的全局使用。

4,在需要引入js的页面的script下:

import $ from 'jquery';

使用js时,bootstrap中的方法要写在mounted里面。并且写的方式要改动一下。

举个例子:

bootstrap4中文文档弹出框

image-20220102143054578

这个示例,点击按钮,按钮会带一个文字弹出框出来。

这段js代表在页面加载完毕时执行 $(’[data-toggle=“popover”]’).popover()。

我们在vue中使用的时候,要去掉$(function(){}),直接在mounted中写 $(’[data-toggle=“popover”]’).popover()即可,因为mounted就代表vue加载了视图层html完毕后再执行什么代码写在mounted里面。

created代表页面加载之前,也就是vue只绑定了数据层,没有绑定视图层。

<template>
<!-- test css -->
	<button type="button" class="btn btn-primary">Primary</button>
	<button type="button" class="btn btn-secondary">Secondary</button>
	<button type="button" class="btn btn-success">Success</button>
<!--test js -->
	<button type="button" class="btn btn-lg btn-danger" data-toggle="popover" title="Popover title" data-content="And here's some amazing content. It's very engaging. Right?">
		Click to toggle popover</button>
</template>

<script>
	import $ from 'jquery';
	console.log("$-------"+$)
    
    export default {
      name: 'HelloWorld',
      props: {
        msg: String
      },
      mounted: function() {
      //引用  的js
        $('[data-toggle="popover"]').popover()
 
  
}
}
</script>

css效果:

image-20220102142809255

js效果:

image-20220102142842830