Directive指令:减少DOM操作的重复

  • Vue实例/组件用于数据绑定、事件监听、DOM更新
  • Vue指令主要目的就是原生DOM操作
  • 减少重复

自定义指令

两种声明方式

方法一:声明一个全局指令
Vue.directive('x', directiveOptions)
方法二:声明一个局部指令

在options里写,只能被那个Vue实例/组件使用

new Vue({
...,
directives:{
"x":directiveOptions
}
})
关于directiveOptions

directiveOptions是个对象,里面有五个函数属性

  1. bind(el, info, vnode, oldVnode)★
  • 类似created,只调用一次,指令第一次绑定到元素时调用。
  • 参数都是vue给我们的
    el:绑定指令的那个元素
    info:是个对象,我们想要的信息基本都在里面
    vnode:虚拟节点
    oldVnode:之前的虚拟节点
  1. inserted(参数同上)★
  • 类似mounted,被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。
  1. update(参数同上)
  • 类似 updated
  1. componentUpdated(参数同上)
  • 用得不多,见文档
  1. unbind(参数同上)★
  • 类似destroyed,当元素要消亡时调用。

bind示例

Mixins混入:复制

Mixins示例

  • 减少重复
  • directives的作用是减少DOM操作的重复
  • mixins的作用是减少data、methods、钩子的重复
  • options里的构造选项都可以先放到一个js文件,之后哪个实例/组件需要就导入并且用mixins使用就行。

写在了共同东西里的东西被组件引用了之后,组件还可以覆盖他们,Vue会智能合并

全局的mixins:不推荐

Extends 继承、扩展

  • extends是比mixins更抽象一点的封装
  • 如果你嫌写五次mixins麻烦,可以考虑extends一次
  • 不过实际工作中用得很少
  • 你可以使用Vue.extend或options.extends

provide & inject:提供&注入

  • 祖先提供东西,后代注入东西
  • 作用是大范围、隔N代共享信息(data、methods等)

示例

总结

directive指令

  • 全局用Vue.directive('x', {...})
  • 局部用options.directives
  • 作用是减少DOM操作相关重复代码

mixins混入

  • 全局用Vue.mixin({..})
  • 局部用options.mixins: [mixin1, mixin2]
  • 作用是减少options里的重复

extends继承/扩展

  • 全局用Vue.extend({.})
  • 局部用options.extends: {...}
  • 作用跟mixins差不多,只是形式不同

provide | inject提供和注入

  • 祖先提供东西,后代注入东西
  • 作用是大范围、隔N代共享信息

Vue 构造选项 - 进阶的更多相关文章

  1. Vue组件选项props

    前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过 props ...

  2. 【转存】Vue组件选项props

    原帖地址 前面的话 组件接受的选项大部分与Vue实例一样,而选项props是组件中非常重要的一个选项.在 Vue 中,父子组件的关系可以总结为 props down, events up.父组件通过  ...

  3. vue的选项

    这篇是我自己看着方便整理的,请直接看官方api:http://cn.vuejs.org/v2/api/ 数据 data,props,computed 注意,不应该使用箭头函数来定义计算属性函数 (例如 ...

  4. Vue学习笔记进阶篇——Render函数

    基础 Vue 推荐在绝大多数情况下使用 template 来创建你的 HTML.然而在一些场景中,你真的需要 JavaScript 的完全编程的能力,这就是 render 函数,它比 template ...

  5. Vue --6 router进阶、单页面应用(SPA)带来的问题

    一.Vue-router进阶 回顾学过的vue-router,并参考官方文档学习嵌套路由等路由相关知识. 二.单页面应用(SPA)带来的问题 1.虽然单页面应用有优点,但是,如果后端不做服务器渲染(h ...

  6. 用 vue cli 脚手架搭建单页面 Vue 应用(进阶2)

    1.配置 Node 环境. 自行百度吧. 安装好了之后,打开 cmd .运行 node -v .显示版本号,就是安装成功了. 注:不要安装8.0.0以上的版本,和 vue-cli 不兼容. 我使用的 ...

  7. 后端小白的VUE入门笔记, 进阶篇

    使用 vue-cli( 脚手架) 搭建项目 基于vue-cli 创建一个模板项目 通过 npm root -g 可以查看vue全局安装目录,进而知道自己有没有安装vue-cli 如果没有安装的话,使用 ...

  8. vue技术栈进阶(01.使用vue-cli3创建项目)

    使用vue-cli3创建一个项目 1) 使用Vue UI创建.管理项目 1.安装依赖的脚手架包. 2.命令行中输入vue ui 即可以打开可视化界面 可视化界面: 2)项目结构目录整理 3)基本配置 ...

  9. 会使用基本的Render函数后,就会想,这怎么用 v-for/v-if/v-model;我写个vue Render函数进阶

    https://blog.csdn.net/wngzhem/article/details/54291024

随机推荐

  1. Python爆火的原因与未来|内附Python学习书籍大礼包无偿领取|

    从12年到20年,python以肉眼可见的趋势超过了java,成为了当今It界人人皆知的编程语言. python为什么这么火? 网络编程语言搜索指数 适合初学者 Python具有语法简单.语句清晰的特 ...

  2. pandas巩固

    导包 import pandas as pd 设置输出结果列对齐 pd.set_option('display.unicode.ambiguous_as_wide',True) pd.set_opti ...

  3. dsu on tree详解

    这个算法还是挺人性化的,没有什么难度 就是可能看起来有点晕什么的. 大体 思想是 利用重链刨分来优化子树内部的查询. 考虑一个问题要对每个子树都要询问一次.我们暴力显然是\(n^2\)的. 考虑一下优 ...

  4. layer.js : n.on is not a function

    当时使用的jQuery为1.4.x的版本.换成高版本就好了. 参考 https://blog.csdn.net/marswill/article/details/69316003

  5. 精通python网络爬虫PDF高清完整版免费下载|百度云盘|Python基础教程免费电子书

    点击获取书籍提取码:yc9w

  6. ios迅雷上架成功的秘密 背后的“苹果TF签名”

    距离ios迅雷从App Store下架已经过去很久了,小微经常看到知乎里有很多迅雷用户到处寻找可以下载应用的渠道.近期迅雷被爆“好消息”iOS 迅雷(官方版)正式上架 App Store,此消息一出可 ...

  7. vue-cli脚手架的搭建

    1.安装node.js 2.安装cnpm npm install -g cnpm --registry=https://registry.npm.taobao.org 3.安装vue-cli npm ...

  8. 网络安全传输系统-sprint1传输子系统

    一.产品规划与设计 二.传输子系统 基本框架:(1)不带安全功能的传输系统 (2)安全加密功能 part1:基本传输子程序设计(不带安全加密功能) 客户端 服务器 int main(int argc, ...

  9. 2020-03-27:分布式锁的问题,假如a线程在获得锁的情况下 网络波动 极端情况是断网了,这种情况是怎么处理的

    福哥答案2020-04-04:超时释放锁.

  10. C#LeetCode刷题之#55-跳跃游戏(Jump Game)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3674 访问. 给定一个非负整数数组,你最初位于数组的第一个位置. ...