市面上大多数关于Vue.js自定义指令的文章都在讲语法,很少讲实际的应用场景和用例,以致于即便明白了怎么写,也不知道怎么用。本文不讲语法,就讲自定义指令的用法。

  自定义指令是用来操作DOM的。尽管Vue推崇数据驱动视图的理念,但并非所有情况都适合数据驱动。自定义指令就是一种有效的补充和扩展,不仅可用于定义任何的DOM操作,并且是可复用的。

  比如谷歌图片的加载做得非常优雅,在图片未完成加载前,用随机的背景色占位,图片加载完成后才直接渲染出来。用自定义指令可以非常方便的实现这个功能。

效果:

  自定义指令的第二用处是用于集成第三方插件。我们知道任何软件开发领域都可以分为四层:底层是原生的API,上层是通用框架,再上层是通用组件,最上层才是具体的业务代码。一个通用框架,必须搭配一套完整的通用组件,才能真正奠定其江湖地位。

  在前端开发领域,以前的通用框架是jQuery,jQuery以及基于jQuery构建的通用组件形成了一个庞大的生产系统。现在的通用框架是Angular、React和Vue,每个框架都需要基于自身构建新的组件库。自定义指令好就好在:原先的那些通用组件,无论是纯js的也好,基于jQuery的也好,都可以拿来主义直接吸收,而不需要改造或重构。

  比如写文档通常会用到highlight.js,我们可以直接将其封装为一个自定义指令,这样highlight.js就变成了Vue的一个新功能。

效果:

  但凡遇到第三方插件如何与Vue.js集成的问题,都可以尝试用自定义指令实现。

练习题:现在要用自定义指令实现一个常见的 tip 提示弹框的功能,鼠标移入元素,可以在元素的上下左右显示 tip,鼠标移出则隐藏 tip。

读者可自己尝试。用起来确实非常方便。vuetifyjs里有相关的实现,请参考:

https://vuetifyjs.com/directives/tooltips

更多的用法请参考:

  http://codepen.io/search/pens?q=custom%20directive&limit=all&order=popularity&depth=everything&show_forks=false

本文转载于:kidney

转载于:https://www.cnblogs.com/hpx2020/p/8967345.html

Vue.js自定义指令的用法与实例相关推荐

  1. js:Vue.js自定义指令实现scroll下滑滚动翻页

    Vue.js自定义指令实现scroll下滑滚动翻页 核心代码 import Vue from 'vue'// v-scroll Vue.directive('scroll', {bind(el, bi ...

  2. (13)Vue.js 自定义指令

    一.Vue.js之定义指令介绍 前面我们学习了一些Vue.js给我们提供的指令,那么我们知道指令就是帮助我们去简化DOM操作的,相当于对基础 DOM操作的一种封装.那么我们仅仅使用这些Vue.js提供 ...

  3. Vue.js 自定义指令

    简介 除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令.注意,在 Vue2.0 中,代码复用和抽象的主要形式是组件.然而,有的情况下,你仍然需要对普通 D ...

  4. vue 自定义指令(directive)实例

    一.内置指令 1.v-bind:响应并更新DOM特性:例如:v-bind:href  v-bind:class  v-bind:title  v-bind:bb 2.v-on:用于监听DOM事件: 例 ...

  5. VUE:自定义指令(directives )选项的用法

    自定义指令分为全局指令和局部指令.全局指令可在任意vue组件内生效,局部指令仅在注册了指令的组件内生效. 全局指令和局部指令写法几乎相同.全局指令是在main.js内使用Vue.directive注册 ...

  6. VUE通过自定义指令,只允许输入大写英文以及数字

    在写之前需要知道几个功能对象的作用: 首先输入框输入的情况有键盘输入和粘贴输入的情况 用到的组件有: input.onblur-onblur: 事件会在对象失去焦点时发生.Onblur 经常用于Jav ...

  7. vue 项目自定义指令实现防抖

    自定义v-debounce指令实现click事件防抖 该指令绑定的方法暂不支持传递参数,如需要传参数可以参考另一篇博客,防抖组件的实现 工具uitls文件夹创建debounce.js文件 代码如下 i ...

  8. VUE使用自定义指令对普通 DOM 元素进行底层操作

    使用vue的自定义指令来整合某个重复使用的底层操作 举个聚焦输入框的例子,如下: 当页面加载时,该元素将获得焦点 (注意:autofocus 在移动版 Safari 上不工作).事实上,只要你在打开这 ...

  9. 【前端技巧】JS自定义指令 —— 无限滚动(改写el-table-infinite-scroll)

    @Author:Outman @Date:2023-03-08 JS自定义指令 -- 无限滚动(改写el-table-infinite-scroll) 自定义指令实现 // directives/in ...

最新文章

  1. java内连接外连接_SQL中的内连接与外连接--Java学习网
  2. 云服务器怎么添加虚拟内存,云服务器怎么添加虚拟内存
  3. CList 点击表头排序 (1)SortItems函数
  4. 获取不到app.config里面的数据库连接字符串的解决方法
  5. 解决 VSCode 编写 C++11 代码报红问题
  6. boost::spirit模块实现展示不同容器类型的输出格式化的统一和简单的方法
  7. 终止一切网上销售和广告?电子烟悦刻天猫旗舰店却仍可购买
  8. 高效测试必学 | 用pytest生成测试报告
  9. SpringBoot学习---Web开发(静态资源处理,首页和图标)
  10. 70 万行代码、历时 20 年,一名程序员写出的史诗般的计算机程序
  11. html获取页面高度,js获取各种高度
  12. gg大玩家f服务器无响应,gg大玩家显示应用启动失败 | 手游网游页游攻略大全
  13. PGP实现邮件加密和签名
  14. 台式计算机文件打不开怎么回事,电脑文档打不开怎么办
  15. 如何在 Python 中异步操作数据库?aiomysql、asyncpg、aioredis 使用介绍
  16. 量子力学的传说——波尔篇(上)
  17. 张启发院士给他的博士生的一封信(转载)
  18. 中国微商概念及产业链分析
  19. 定语从句--专升本语法
  20. matlab对稀疏矩阵求特征值,使用ARPACK查找稀疏矩阵的特征向量和特征值(称为PYTHON,MATLAB或FORTRAN子例程)...

热门文章

  1. MyBatis学习笔记01
  2. Android模拟器卡死的解决方案
  3. 数据库mysql的注释怎么加_mysql表如何添加字段注释
  4. matlab解微分方程组_MATLAB编程入门 求解常微分方程 通解 特解 数值解
  5. andriod studio获取root_怎样获得root权限
  6. python 与_Python基础 第一个 Python 程序
  7. 解决每次git pull、git push都需要输入账号和密码的问题
  8. javascript权威指南_重读javascript权威指南(3)
  9. php表单yii2,yii2教程-ActiveForm表单组件
  10. linux系统可以装win10吗,如何在Win10专业版中安装Linux系统?