首页 > 其他分享 >30-Vue脚手架-plugin插件

30-Vue脚手架-plugin插件

时间:2023-10-27 09:34:36浏览次数:36  
标签:插件 Vue name 30 School element vue

plugin插件

功能:用于增强Vue

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

 

src/plugins.js(定义插件

// 定义插件(默认暴露)
export default {
    install(Vue){
        console.log("@@@install")
        console.log(Vue)

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

        // 2.自定义全局指令
        Vue.directive("fbind",{
            // bind(element,binding)回调函数,指令与元素成功绑定时调用
            bind(element,binding){
                console.log("bind")
                element.value = binding.value
            },
            // inserted(element,binding)回调函数,指令所在元素被插入页面时调用
            inserted(element){
                console.log("inserted")
                element.focus()
            },
            // update(element,binding)回调函数,指令所在模板结构被重新解析时调用
            update(element,binding){
                console.log("update")
                element.value = binding.value
            }
        })

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

        // 4.给Vue原型上添加一个方法(vm和vc就都能用了)
        Vue.prototype.hello = ()=>{
            alert("你好啊")
        }

    }
}

src/mixin.js (使用插件)

import Vue from "vue"
import App from "./App.vue"

// 引入插件
import plugins from "./plugins";

// 阻止 vue 在启动时生成生产提示
Vue.config.productionTip = false

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


new Vue({
    el:"#app",
    render:h => h(App)
})

src/components/Student.vue

<template>
  <div>
    <h2>学生姓名:{{name}}</h2>
    <h2>学生性别:{{sex}}</h2>
    <!----plugins插件里面,自定义了v-fbind指令-->
    <input type="text" v-fbind:value="name">
  </div>
</template>

<script>
  export default{
    // eslint-disable-next-line vue/multi-word-component-names
    name:"Student",
    data(){
      return{
        name:"马铃薯",
        sex:"男",
      }
    }
  }

</script>

src/components/School.vue

<template>
  <div>
    <!--plugins插件里面,定义了mySlice过滤器-->
    <h2>学校名称:{{name | mySlice}}</h2>
    <h2>学校地址:{{address}}</h2>
    <button @click="test">点我测试一个hello方法</button>
  </div>
</template>

<script>
  export default{
    // eslint-disable-next-line vue/multi-word-component-names
    name:"School",
    data(){
      return{
        name:"东华理工大学",
        address:"江西南昌",
      }
    },
    methods:{
      test(){
        this.hello()
      }
    }
  }

</script>

src/App.vue(没有变动)

<template>
  <div>
    <!--学生的信息-->
    <Student></Student>
    <hr/>
    <!--学校的信息-->
    <School></School>
  </div>
</template>

<script>
  // 引入Student组件
  import Student from "@/components/Student.vue";
  // 引入School组件
  import School from "@/components/School.vue";

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

 

标签:插件,Vue,name,30,School,element,vue
From: https://www.cnblogs.com/REN-Murphy/p/17791039.html

相关文章

  • [Vue]条件渲染
     1.v-if  写法:    (1)v-if="表达式"    (2)v-else-if="表达式"    (3)v-else="表达式"  适用于:切换频率较低的场景。  特点:不展示的DOM元素直接被移除。  注意:v-if可以和v-else-if、v-else一起使用,但要求结构不能被“......
  • ruby实战手册(13)-vue 3(4)
    目录全局构建全局构建1<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>learnjs</title><basehref="/"><linkhref="styles/style.css"rel=&......
  • OpenTiny Vue 3.11.0 发布:增加富文本、ColorPicker等4个新组件,迎来了贡献者大爆发!
    你好,我是Kagol。非常高兴跟大家宣布,2023年10月24日,OpenTinyVue发布了v3.11.0......
  • vue打印浏览器页面功能的两种实现方法
    目录方法一:通过npm安装插件方法二:手动下载插件到本地总结推荐使用方法二方法一:通过npm安装插件1,安装npminstallvue-print-nb--save2,引入安装好以后在main.js文件中引入1importPrintfrom'vue-print-nb'Vue.use(Print);//注册3,现在......
  • PSV-2020-0211-Netgear-R8300-UPnP栈溢出漏洞分析
    PSV-2020-0211-Netgear-R8300-UPnP栈溢出漏洞分析系统级模拟启动这个路由器的使用的upnpd来开放服务,执行/usr/sbin/upnpd后没有反应,使用ida看一下发现没有/var/run这个目录,那就创建一个mkdir-p/tmp/var/run(为什么是tmp下的是因为/var/run是软连接到/tmp/var/run)在......
  • playwright -启动本地chrome浏览器-启动扩展程序-插件
    fromplaywright.sync_apiimportsync_playwrightimportosclassTool:def__init__(self,user_data_dir,executable_path):playwright=sync_playwright().start()#启动扩展程序-开启影刀插件path_to_extension=r"D:\data\google\Ch......
  • 2-2 CC2530的通用IO及相关寄存器
    I/O端口相关寄存器为了便于记忆和使用,每个特殊功能寄存器都会起一个名字,在程序设计时,引入头文件“ioCC2530.h”,才能直接使用寄存器的名称与通用I/O端口相关的常用寄存器有下面4个:PxSEL:端口功能选择,设置端口使用I/O还是外设功能端口,0为设置通用I/O,1为设置外设功能PxDIR:......
  • vuex 的数据丢失如何处理?
    方法一:存储在LocalStorage、SessionStorage、IndexDB等。这些都是浏览器的API,可以将数据存储在硬盘上,做持久化存储。在初始化state数据的时候,从localStorage中获取:state={userInfo:localStorage.getItem('userInfo')}由于localStorage不是响应式的,需要手......
  • Vue入门到放弃之旅今日开启第二篇
    绑定class样式、渲染、vue监视、收集表单数据P26-P39Class与Style的理解+用法条件渲染(v-show、v-if)还在持续性更新ing,明天见·····如果有正在学习的同学,需要练习过程中的代码实例和笔记私信我发你,祝你在学习前端的路上BUG满满!!在BUG才会成长!还是希望能对你有所帮助,那怕一点......
  • 超好用的IDEA插件推荐!自带API调试功能
    大家好,今天给大家推荐一款超好用的IDEA插件,由API调试工具Apipost推出!支持在插件中获取token、支持代码完成后在插件中进行API调试,同时也保留了1.0版本部分功能如上传选择目录功能等。V1版本还会继续保留开源,方便各位进行自创魔改。V2版本目前已上架至IDEA插件商店,大家可以自行下......