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功能函数(2009-06-04更新)
Jun 04 Javascript
服务器端的JavaScript脚本 Node.js 使用入门
Mar 07 Javascript
Jquery实现仿腾讯微博发表广播
Nov 17 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
javascript 判断整数方法分享
Dec 16 Javascript
JQuery在循环中绑定事件的问题详解
Jun 02 Javascript
BootStrap modal模态弹窗使用小结
Oct 26 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
Jan 19 Javascript
JavaScript Uploadify文件上传实例
Feb 28 Javascript
vue实现全选、反选功能
Nov 17 Javascript
实例教学如何写vue插件
Nov 30 Javascript
Vue 开发必须知道的36个技巧(小结)
Oct 09 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
解析php时间戳与日期的转换
2013/06/06 PHP
ThinkPHP表单令牌错误的相关解决方法分析
2016/05/20 PHP
PHP实现防止表单重复提交功能【基于token验证】
2018/05/24 PHP
img的onload的另类用法
2008/01/10 Javascript
JavaScript 核心参考教程 内置对象
2009/10/13 Javascript
JavaScript iframe的相互操作浅析
2009/10/14 Javascript
nodejs实用示例 缩址还原
2010/12/28 NodeJs
用jquery生成二级菜单的实例代码
2013/06/24 Javascript
jquery使用append(content)方法注意事项分享
2014/01/06 Javascript
js获取url中&quot;?&quot;后面的字串方法
2014/05/15 Javascript
使用text方法获取Html元素文本信息示例
2014/09/01 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
2014/09/22 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
Bootstrap媒体对象的实现
2016/05/01 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
javascript事件冒泡简单示例
2016/06/20 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
javascript常用经典算法详解
2017/01/11 Javascript
nodejs爬虫遇到的乱码问题汇总
2017/04/07 NodeJs
jQuery extend()详解及简单实例
2017/05/06 jQuery
iscroll-probe实现下拉刷新和下拉加载效果
2017/06/28 Javascript
js动态设置select下拉菜单的默认选中项实例
2018/08/21 Javascript
在mpvue框架中使用Vant WeappUI组件库的注意事项【推进】
2019/06/09 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
如何利用node.js开发一个生成逐帧动画的小工具
2019/12/01 Javascript
Python datetime时间格式化去掉前导0
2014/07/31 Python
Python获取电脑硬件信息及状态的实现方法
2014/08/29 Python
寻找网站后台地址的python脚本
2014/09/01 Python
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
离线安装Pyecharts的步骤以及依赖包流程
2020/04/23 Python
浅谈用Python实现一个大数据搜索引擎
2017/11/28 Python
Python使用os.listdir和os.walk获取文件路径
2020/05/21 Python
印度和世界各地的精美产品:Ikka Dukka
2018/02/12 全球购物
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
JUnit5常用注解的使用
2021/07/02 Java/Android