Vue 构造选项 - 进阶使用说明


Posted in Javascript onAugust 14, 2020

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

Vue实例/组件用于数据绑定、事件监听、DOM更新

Vue指令主要目的就是原生DOM操作

减少重复

自定义指令

两种声明方式

方法一:声明一个全局指令

Vue.directive('x', directiveOptions)

方法二:声明一个局部指令

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

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

关于directiveOptions

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

bind(el, info, vnode, oldVnode)★

类似created,只调用一次,指令第一次绑定到元素时调用。

参数都是vue给我们的

el绑定指令的那个元素

info是个对象,我们想要的信息基本都在里面

vnode虚拟节点

oldVnode之前的虚拟节点

inserted(参数同上)★

类似mounted,被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)。

update(参数同上)

类似 updated

componentUpdated(参数同上)

用得不多,见文档

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代共享信息

补充知识:表单和 v-model

思维导图

Vue 构造选项 - 进阶使用说明

form 做表单一定要用 form+button组合

<template>
  <div id="app">
    登录
    <form @submit.prevent="onSubmit">  //.prevent阻止默认动作
      <label>
        <span>用户名</span>
        <input type="text" v-model="user.username"/>
      </label>
      <label>
        <span>密码</span>
        <input type="password" v-model="user.password"/>
      </label>
      <button type="submit">
        登录
      </button>
    </form>

  </div>
</template>

<script>
 export default {
  name: 'App',
  data() {
   return {
    user: {
     username: '',
     password: ''
    },
    x: ''
   }
  },
  methods: {
   onSubmit() {
    console.log(this.user)
   }
  },
  components: {}
 }
</script>

Vue 构造选项 - 进阶使用说明

v-model

<label>
        <span>用户名</span>
        <input type="text" v-model="user.username"/>
</label>

上面的v-model等价于

<label>
        <span>用户名</span>
        <input type="text" :value="user.username"
        @input = "user.username = $event.target.value"/>
</label>

自己封装一个

<template>
  <div class="red wrapper">
    <input :value="value" @input="$emit('input',$event.target.value)"/>
  </div>
</template>

<script>

 export default {
  name: 'MyInput',
  props: {
   value: {
    type: String
   }
  },
 }
</script>

<style scoped>
  .red {
    background: red;
  }
  .wrapper{
    display: inline-block;
  }
</style>

以上这篇Vue 构造选项 - 进阶使用说明就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js与jquery中获取当前鼠标的x、y坐标位置的代码
May 23 Javascript
jquery入门—访问DOM对象方法
Jan 07 Javascript
Script标签与访问HTML页面详解
Jan 10 Javascript
jQuery中的pushStack实现原理和应用实例
Feb 03 Javascript
使用console进行性能测试
Apr 27 Javascript
Javascript技术栈中的四种依赖注入详解
Feb 23 Javascript
JavaScript的Backbone.js框架入门学习指引
May 07 Javascript
mpvue性能优化实战技巧(小结)
Apr 17 Javascript
微信小程序实现上拉加载功能
Nov 20 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
Aug 12 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
Oct 22 Javascript
JS监听Esc 键触发事键
Apr 14 Javascript
vue 扩展现有组件的操作
Aug 14 #Javascript
如何HttpServletRequest文件对象并储存
Aug 14 #Javascript
解决element-ui里的下拉多选框 el-select 时,默认值不可删除问题
Aug 14 #Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 14 #Javascript
vue在App.vue文件中监听路由变化刷新页面操作
Aug 14 #Javascript
解决vue项目中某一页面不想引用公共组件app.vue的问题
Aug 14 #Javascript
在vue中封装方法以及多处引用该方法详解
Aug 14 #Javascript
You might like
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
模仿JQuery.extend函数扩展自己对象的js代码
2009/12/09 Javascript
iframe的onload在Chrome/Opera中执行两次Bug的解决方法
2011/03/17 Javascript
jquery mobile changepage的三种传参方法介绍
2013/09/13 Javascript
JS实现拖动示例代码
2013/11/01 Javascript
javascript模拟地球旋转效果代码实例
2013/12/02 Javascript
JavaScript实现的一个日期格式化函数分享
2014/12/06 Javascript
JS基于Mootools实现的个性菜单效果代码
2015/10/21 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
全面了解JS中的匿名函数
2016/06/29 Javascript
js仿iphone秒表功能 计算平均数
2017/01/11 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
原生JS+HTML5实现跟随鼠标一起流动的粒子动画效果
2018/05/03 Javascript
JavaScript设计模式之构造函数模式实例教程
2018/07/02 Javascript
layui导出所有数据的例子
2019/09/10 Javascript
vue跳转同一个组件,参数不同,页面接收值只接收一次的解决方法
2019/11/05 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
Python实现扫描指定目录下的子目录及文件的方法
2014/07/16 Python
Python多线程同步Lock、RLock、Semaphore、Event实例
2014/11/21 Python
Python批量修改图片分辨率的实例代码
2019/07/04 Python
python3文件复制、延迟文件复制任务的实现方法
2019/09/02 Python
python 调试冷知识(小结)
2019/11/11 Python
Python使用urlretrieve实现直接远程下载图片的示例代码
2020/08/17 Python
Ibood荷兰:互联网每日最佳在线优惠
2019/02/28 全球购物
领先的荷兰线上超市:荷兰之家Holland at Home(支持中文)
2021/01/21 全球购物
体育教师工作总结的自我评价
2013/10/10 职场文书
图书室管理制度
2014/01/19 职场文书
人力资源主管职责范本
2014/03/05 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
竞选学生会演讲稿
2014/04/25 职场文书
小学三好学生事迹材料
2014/08/15 职场文书
导游词之烟台威海蓬莱
2019/11/14 职场文书
MySQL 全文索引使用指南
2021/05/25 MySQL
JavaScript声明变量和数据类型的转换
2022/04/12 Javascript
JS实现页面炫酷的时钟特效示例
2022/08/14 Javascript