Vue2.0 Vue脚手架 插件

2023-11-06

Vue当中有一个特别强大但写起来特别简单的一个东西,名字叫

插件

有什么作用?

可以帮我们去增强一下Vue

配置好项目(自己写的话)

main.js(项目执行npm run serve后第一个进入的)

import Vue from 'vue'
import App from './App.vue'

Vue.config.productionTip = false

new Vue({
    render: h => h(App)
}).$mount('#app')

App.vue(管理着所有的组件的组件)

<template>
    <div>
        <School />
        <hr />
        <Student />
    </div>
</template>

<script>
    import School from './components/School'
    import Student from './components/Student'

    export default{
        name: 'App',
        components: {School,Student}
    }
</script>

<style>

</style>

School.vue

<template>
    <div>
        <h2>学校名称:{{name}}</h2>
        <h2>学校地址:{{address}}</h2>
    </div>
</template>

<script>
    
    export default{
        name: 'School',
        components: {},
        data(){
            return{
                name: 'bilibili',
                address: '魔都'
            }
        },
    }
</script>

<style>

</style>

Student.vue

<template>
    <div>
        <h2>学生姓名:{{name}}</h2>
        <h2>学生性别:{{sex}}}</h2>
    </div>
</template>

<script>
    
    export default{
        name: 'Student',
        components: {},
        data(){
            return{
                name: '张三',
                sex: '男'
            }
        }
    }
</script>

<style>

</style>

接下来亲手去定义一个Vue里的插件

插件的本质到底是什么?

要是函数我就写函数了(()=>{})

要是数组就去写数组了([])

Vue里的插件本质上就是一个对象,但是Vue要求这个对象里面必须包含一个方法,名字叫install

不要在自带的component里面写,在src下写,名字可以随便取,但标准一点就写plugins.js

plugins.js

const obj = {
    install(){
        
    }
}

恭喜你! 一个插件定义完了,但是你这个插件什么事都没做

让它往控制输出,看它什么时候调用

const obj = {
    install(){
        console.log('install')
    }
}

install()一定会调,而且事Vue帮你调用,但是你这个插件没有提供任何的数据

默认暴露

const obj = {
    install(){
        console.log('install')
    }
}

export default obj;

但是只有一个obj,所以可以直接这么写:

export default{
    install(){
        console.log('install')
    }
}

定义完了

暴露完了

直接import使用它就可以了

这个插件的顺序问题

  • 1.应用(使用)插件
  • 2.随后创建你的vm

就像是游戏开挂,(1)先要开启挂;(2)进入游戏一样的顺序

所以在main.js里面的new Vue()之前我们必须得应用这个插件

想应用就得引入

//引入插件
import plugins from './plugins'

怎么应用插件?

Vue给我们提供了一个API,叫Vue.use()

应用插件:

//应用(使用)插件
Vue.use(plugins)

就是有人帮你调了install()方法


其实install()里面是有新参的,先把形参定义为a

export default{
    install(a){
        console.log('install')
        console.log(a)
    }
}

打印输出:

ƒ Vue (options) {
  if ( true &&
    !(this instanceof Vue)
  ) {
    warn('Vue is a constructor and should be called with the `new` keyword');
  }
  this._init(options);
}

a不是vm,a是vm的缔造者Vue构造函数,形参换一下

export default{
    install(Vue){
        console.log('install')
    }
}

这里面做了太多事了:

全局过滤器(跳转测试)

export default{
    install(Vue){
        console.log('install')
        console.log(Vue)

        //全局过滤器
        Vue.filter('mySlice',function(value){
            return value.slice(0,4)
        })
    }
}

自定义指令(跳转测试)

export default{
    install(Vue){
        console.log('install')
        console.log(Vue)

        //自定义全局指令
        Vue.directive('fbind',{
            bind(element,binding){
                element.value = binding.value
            },
            inserted(element){
                element.focus()
            },
            update(element,binding){
                element.value = binding.value
                element.fousc()
            }
        })
    }
}

定义混入(跳转测试)(这是全局的混入也就意味着所有的VueComponent和vm身上都有这个)

export default{
    install(Vue){
        console.log('install')
        console.log(Vue)

        //定义混入
        Vue.mixin({
            data(){
                return{
                    x: 100,
                    y: 200
                }
            },
        })
    }
}

给Vue原型上添加一个方法(跳转测试)

export default{
    install(Vue){
        console.log('install')
        console.log(Vue)

        //给Vue原型上添加一个方法(vm和VueComponent都能用了)
        //往原型上放一个hello
        Vue.prototype.hello = ()=>{alert('你好啊')}
    }
}

测试过滤器 > School.vue

<template>
    <div>
        <h2>学校名称:{{name | mySlice}}</h2>
        <h2>学校地址:{{address}}</h2>
    </div>
</template>

<script>
    
    export default{
        name: 'School',
        components: {},
        data(){
            return{
                name: 'bilibili YYDS',
                address: '魔都'
            }
        },
    }
</script>

<style>

</style>

测试自定义指令 > Student.vue

<template>
    <div>
        <h2>学生姓名:{{name}}</h2>
        <h2>学生性别:{{sex}}}</h2>
        <input type="text" v-fbind:value="name">
    </div>
</template>

<script>
    
    export default{
        name: 'Student',
        components: {},
        data(){
            return{
                name: '张三',
                sex: '男'
            }
        }
    }
</script>

<style>

</style>

测试定义混入

//借助Vue开发者工具查看组件身上的data元素是否都有x:100,y:200

测试给Vue原型上添加一个方法 > School.vue

<template>
    <div>
        <h2>学校名称:{{name | mySlice}}</h2><!--这个是过滤器的-->
        <h2>学校地址:{{address}}</h2>
        <button @click="test">点我测试hello方法</button>
    </div>
</template>

<script>
    
    export default{
        name: 'School',
        components: {},
        data(){
            return{
                name: 'bilibili YYDS',
                address: '魔都'
            }
        },
        methods: {
            test(){
                this.hello()
            }
        },
    }
</script>

<style>

</style>

总结

功能: 用于增强Vue

本质:包含install方法的一个对象,install的第一个参数是Vue,第二个以后的参数是插件使用者传递的数据

定义插件:

对象.install = function(Vue,options){

//1.添加全局过滤器

Vue.filter(…)

//2.添加一个全局指令

Vue.directive(…)

//3.配置全局混入(合)

Vue.mixin(…)

//4.添加实例方法

Vue.prototype.$myMethod = function(){…}

Vue.prototype.$myProperty = xxx

}

使用插件:Vue.use()

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue2.0 Vue脚手架 插件 的相关文章

随机推荐

  • EA12 显示用例图中use关系线的箭头

    默认情况下在Enterprise Architect EA 的用例中use关系线是没有箭头指示的 这样有时候看着挺别扭的 不过这个是可以设置的 步骤如下 点击菜单栏TOOLS 点击Options 选择Links 勾选Show Uses ar
  • win10编译 Fast R-CNN 所需的setup.py(rotate) tensorflow版

    问题描述 Fast R CNN rotate 原版提供的 setup py 是在linux中使用的 在linux里可以直接编译 而在windows下需要修改 setup py 解决方案 先提供思路 最后附上代码 1 修改 setup py
  • 5款类蝉妈妈抖音数据工具推荐

    担心蝉妈妈数据不准怎么办 作为一个在电商培训行业摸爬滚打10多年的老兵 大头今天给大家推荐其它五个类似蝉妈妈的抖音数据分析网站 一 飞瓜数据 飞瓜比蝉妈妈做的更早 抖快 B站 小红书 淘宝 微博等主流平台均有产品线 规模很大 飞瓜比较注重产
  • 二叉树的路径之和

    题目 给定一个二叉树与正数sum 找出所有从根节点到叶节点的路径 这些路径上的节点值累加和为sum include
  • 图机器学习课程笔记4

    维生素C吃多了会上火 个人CSDN博文目录 cs224w 图机器学习 2021冬季课程学习笔记集合 目录 1 思维大纲 2 中文笔记 1 思维大纲 2 中文笔记 笔记4 提取码 8888
  • 论文检索号查询

    大家好 在我们学术研究过程中 当你取得一份好的学术成果 成功发表一篇期刊论文后 往往会在不同的场合用到 论文检索号 今天我给大家分享一下什么是论文检索号以及如何查询论文检索号 什么是论文检索号 论文检索号是在论文数据库中检索论文的具有唯一性
  • 查找相似网站的方法和地址

    描述 查找相似网站的方法和地址 网址 https www similarsites com
  • macbook 15 自动重启,一天十几次

    重启后提示消息中包含 GPUPanic cpp 127 google了一下 可能是显卡的问题 macbook 15 2010年版本 机器里面有两个显卡 一个是integrated Intel显卡 一个是NVIDA显卡 mac os在切换显卡
  • python 列表排序方法

    本文将讨论的是 如何将一个字符串组成的列表 比如 abc cba bac 按照特定的条件 比如首字母 尾字母 或者长度 灵活的排序 目录 直接排序 由一些字符串组成的 list sort 方法可以直接用来对字符串排序 a John Smit
  • 函数指针和函数指针数组

    函数指针 指向函数的指针 函数指针数组 一个数组里面存的类型是函数指针 一 函数指针的声明和调用 1 指针声明 函数指针顾名思义就是一个指向函数的指针 int Add int x int y return x y char Sub char
  • Error:Unable to start the daemon process.解决

    导入一个项目出现了以下错误 Error Unable to start the daemonprocess This problem might be caused by incorrect configuration of the dae
  • 显示等待和隐式等待

    学习显示等待和隐式等待使用 参考博客原址 https blog csdn net sinat 41774836 article details 88965281 文章目录 强制等待 sleep 隐式等待 implicitly wait 显示
  • 【Linux命令详解

    文章目录 简介 一 参数列表 二 使用介绍 1 修改用户权限 2 修改用户组权限 3 修改其他用户权限 4 同时修改多个权限 5 使用数字模式设置权限 6 递归修改目录权限 总结 简介 在Ubuntu系统中 chmod命令是一个强大的工具
  • 疯壳Android嵌入式Linux平板开发教程3-9G-sensor

    详情地址 https fengke club GeekMart views offline android 购买链接 https fengke club GeekMart su fHnaDyD1o jsp 视频地址 https fengke
  • c字符串分割成数组_leetcode第31双周赛第三题leetcode1525. 字符串的好分割数目

    leetcode1525 字符串的好分割数目 给你一个字符串 s 一个分割被称为 好分割 当它满足 将 s 分割成 2 个字符串 p 和 q 它们连接起来等于 s 且 p 和 q 中不同字符的数目相同 请你返回 s 中好分割的数目 示例 1
  • HCIP考试考哪三门你知道么?

    HCIP考试考哪三门 HCIP是华为认证中资深级别的认证 与hcia相比 它可能需要考多门考试 只有都通过了 才能获得HCIP认证 那么HCIP考试要考哪三门呢 其实 不同的方向需要通过的考试门数各不相同 有的只要通过一门 有的则是两门 最
  • kettle转换中文数据出现乱码

    在使用kettle转换数据时 有时会出现中文乱码问题 下面介绍解决办法 首先先保证你自己创建或连接的数据库是utf 8编码 1 设置DB连接 打开kettle中连接的数据库 在高级中输入set names utf8 2 再到选项中命名参数
  • Flink服务器无响应,apache-flink

    在这种情况下 我们有3个kafka主题 每个主题有50个分区 它们具有不同的消息 而所有这些消息都具有 用户名 字段 topic 1 gt Message01 String username about 50 000 messages pe
  • 分析Java线程池执行原理

    Java并发编程源码分析系列 分析Java线程池的创建 上一篇已经对线程池的创建进行了分析 了解线程池既有预设的模板 也提供多种参数支撑灵活的定制 本文将会围绕线程池的生命周期 分析线程池执行任务的过程 线程池状态 首先认识两个贯穿线程池代
  • Vue2.0 Vue脚手架 插件

    Vue当中有一个特别强大但写起来特别简单的一个东西 名字叫 插件 有什么作用 可以帮我们去增强一下Vue 先配置好项目 自己写的话 main js 项目执行npm run serve后第一个进入的 import Vue from vue i