Vue自定义插件的编写

2023-11-19

如何实现一个vue的自定义插件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title></title>
  <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
  <div id="root"></div>
</body>
<script>
  // plugin 插件, 也是把通用性的功能封装起来
  const myPlugin = {
    install(app, options) {
      app.provide('name', 'Dell Lee'); // 1、注入一个name
      app.directive('focus', { // 编写指令
        mounted(el) {
          el.focus();
        }
      })
      app.mixin({
        mounted(){
          console.log('mixin')
        }
      })
      // 4、vue全局属性配置 做一些扩展 $ 表示扩展一个私有的内容 对Vue的底层做一些扩展
      app.config.globalProperties.$sayHello = 'hello world'; // 编写
    }
  }

  const app = Vue.createApp({
    template: `
      <my-title />
    `
  });

  app.component('my-title', {
    inject: ['name'],  // 2、获取name
    mounted() {
      console.log(this.$sayHello); // 5、获取扩展的vue的私有属性
    }, // 3、使用 name
    template: `<div>{{name}}<input v-focus /></div>` // 使用指令
  })

  app.use(myPlugin, { name: 'dell'});

  const vm = app.mount('#root');
</script>
</html>

实现一个做数据校验的插件

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title></title>
  <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
  <div id="root"></div>
</body>
<script>
  // 对数据做校验的插件
  const app = Vue.createApp({
    data() {
      return { name: 'dell', age: 23}
    },
    rules: {
      age: {
        validate: age => age > 25,
        message: 'too young, to simple'
      },
      name: {
        validate: name => name.length >= 4,
        message: 'name too short'
      }
    },
    template: `
      <div>name:{{name}}, age:{{age}}</div>
    `
  });

  const validatorPlugin = (app, options) => {
    app.mixin({
      created() {
        for(let key in this.$options.rules) {
          const item = this.$options.rules[key];
          this.$watch(key, (value) => {
            const result = item.validate(value);
            if(!result) console.log(item.message);
          })
        }
      }
    })
  }

  app.use(validatorPlugin);
  const vm = app.mount('#root');
</script>
</html>

vue-插件-编写-use - 简书

Vue 插件编写_vue插件怎么写_叶公子star的博客-CSDN博客

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

Vue自定义插件的编写 的相关文章

随机推荐

  • 服务器系统2022安装wsl2,手把手教你踩坑:老白的Docker for Windows安装初探WSL 2 backend...

    手把手教你踩坑 老白的Docker for Windows安装初探WSL 2 backend 2020 06 16 13 29 47 15点赞 63收藏 4评论 创作立场声明 老白的踩坑记录 嗨 大家好 前几日老白对Docker for W
  • 【Vue】从0-1全系列Vue教程带你启航!

    hello 我是小索奇 Vue js 已经备好文章 预更新哈 涵盖 Vue2 和 Vue3 涵盖代码示例 拓展内容 图解 疑难解答 让大家用最通俗的方式来学会 Vue 本系列会考虑到新手 会由浅入深 即使你是老玩家 也可以收藏备用 其中有很
  • offer审批被刷的可能性_HR辛辣提问:“你目前有几个offer?”聪明人会怎么回答?...

    很多同学在面试中 都可能被HR辛辣的问题突袭 当HR突然冷不丁问你一句 你目前手里有几个offer 回答这个问题的最佳方式 是如实回答 还是有选择地回应呢 最怕空气突然安静 今天有见就教你几种方法 01没有offer 没有 就说没有 可以说
  • SpringMvc Controller中几种参数的绑定

    1 SpringMVC默认支持的绑定类型有 2 HttpServletRequest对象 通过request对象可以获取参数信息 3 HttpServletResponse对象 通过response对象可以处理响应信息 4 HttpSess
  • 计算机系统课程 笔记总结 CSAPP第四章 处理器体系结构(4.1-4.3)

    GitHub计算机系统CSAPP课程资源 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 1 2 2 计算机系统课程 笔记总结 CSAPP第二章 信息的表示和处理 2 3 2 4 计算机系统课程 笔记总结 CSAPP第三章
  • ChatGPT办公应用:制作PPT大纲

    正文共 617字 阅读大约需要 4 分钟 解决方案专家必备技巧 您将在4分钟后获得以下超能力 制作PPT大纲 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 Kim 编辑者 Yuke PPT技能是一项重要办公
  • PID算法理论,运用,代码编写详解

    什么是PID 我相信能来看这篇文章的应该都知道什么是PID PID就是一种控制算法 利用比例运算 P 积分运算 I 和微分运算 D 一起控制某一事件 当然也可以只运用其中一个也可以两两结合 运用举例 比如我们家里都会有的那个电热水器 有点热
  • msvcp140.dll丢失的4种解决方法,快速修复msvcp140.dll文件

    msvcp140 dll丢失在所有的dll文件丢失里面 也算是经常丢失的老油条了 我们应该对它都不陌生吧 不过直到今天都还有人不知道怎么修复msvcp140 dll文件 小编觉得非常有必要来给大家详细的说说吧 聊一下msvcp140 dll
  • android获取缓存大小并清理缓存

    本文主要注重介绍实战操作 理论知识可能介绍的不多 勿喷 简单说两句缓存的好处 采用缓存 可以进一步大大缓解数据交互的压力 又能提供一定的离线浏览 下边我简略列举一下缓存管理的适用环境 1 提供网络服务的应用 2 数据更新不需要实时更新 哪怕
  • 数学建模的LINGO基础

    LINGO是Linear Interactive and General Optimizer的缩写 即 交互式的线性和通用优化求解器 由美国LINDO系统公司 Lindo System Inc 推出的 可以用于求解非线性规划 也可以用于一些
  • Operator ‘

    如何解决Operator cannot be applied to java lang String java lang String 或者Operator cannot be applied to java lang String jav
  • springboot集成eureka

    分为3个项目来讲解 注册中心 provider consumer 注册中心 注册中心pom xml添加
  • 什么是模式、什么是模式识别、模式识别的方法、过程

    什么是模式 pattern 模式是存在于时间和空间中可观察的物体 如果可以区分相同或者相似的物体类别 可区分的物体称之为模式 模式不是指具体的物体 而是抽象的类别 例如 人这个类别是一种模式 自行车这个类别是一种模式 什么是模式识别 1 模
  • 用Python爬取英雄联盟(lol)全部皮肤

    小三 怎么了小二 一副无精打采的样子 小二 唉 别提了 还不是最近又接触了一个叫英雄联盟的游戏 游戏中很多皮肤都需要花钱买 但是我钱不够呀 小三 咋得 钱攒够了你还要买呀 还吃不吃饭了 要我说 你干脆将英雄的炫彩皮肤都爬下来欣赏一下得了 饭
  • 预警:传统的QA岗位将被DevOps淘汰

    导读 在大多数机构或公司里 软件开发过程主要遵循一个或多个开发模型 例如瀑布模型或敏捷模型 在瀑布模型中 测试活动一般都在后期进行 软件开发完成后 缺陷被QA团队找出 然后再被修复 后两个活动不断循环和重复 指导管理者认为软件可以被公开发布
  • 在wsl中判断wsl的版本是wsl1还是wsl2

    判断wsl的版本 代码逻辑 通过判断 cat proc version 是否包含wsl等字符来判断wsl的版本 代码 bin bash Get the content of proc version proc version cat pro
  • chatgpt赋能python:如何用Python进行SEO优化

    如何用Python进行SEO优化 介绍 Search Engine Optimization SEO 即搜索引擎优化 是提高网站排名和流量的关键 Python作为一种强大的编程语言 可以帮助我们优化网站的SEO 在本文中 我们将探讨如何用P
  • 如何批量Ping 1000个IP地址,一个小技巧节约N小时?

    一 批量ping网段 对于一个网段ip地址众多 如果单个检测实在麻烦 那么我们可以直接批量ping网段检测 那个ip地址出了问题 一目了然 先看代码 直接在命令行窗口输入 for L D in 1 1 255 do ping 10 168
  • 定义类数组

    编写学生类 包含姓名 学号 成绩三个属性 题目要求 1 为学生类添加构造函数给每个成员属性赋值 使用this关键字 2 为学生添加toString 方法显示所有属性 3 在测试类中定义学生数组 长度为4 分别给数组每个元素赋值 然后循环调用
  • Vue自定义插件的编写

    如何实现一个vue的自定义插件 div div