vue常用指令

83 阅读3分钟

vue常用指令

npm i @vue/cli -g //全局安装vue脚手架

vue -V //查看安装成功

vue create 项目名 //新建项目

npm run serve//启动项目

const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  lintOnSave:false,//关闭eslint
})
data(){
    //要求必须是函数返回一个对象格式
}

小胡子写法中只能放入变量和表达式,不能写语句(for,if一类的) vue的指令:v-xxx的行内属性 v-model 一般用在表单元素或者组件中 v-cloak

v-cloak 解决小胡子显示问题,提高用户感官。
        当vue挂载前渲染html会出现很多未处理的小胡子,
        vue会把v-cloak当做行内属性,在vue渲染完成前加在行内,渲染完成后完成后删除这个属性,
        我们可以在该属性上添加样式从而隐藏未处理的小胡子

v-pre 优化型指令 给不用vue处理的结构添加,提高性能 v-html 利用的原生innerHTML,识别结构,不可用在用户提交内容上,容易导致 xss攻击

str:'<i>111</i>'

<div v-html='str'></div>
//111(链接形式显示)

v-text 利用原生的innerText,不识别结构

str:'<i>111</i>'

<div v-text='str'></div>
//<i>111</i>(文本形式显示)
  • v-show 控制元素是否显示 有较大的的初始加载开销

  • v-if 控制元素是否加载 有角的切换开销

  • v-for和v-for...of

<ul>
    <li v-for="(b, a) in ary" :key="b">{{ b }}--{{ a }}</li>
    <li v-for="(a,b,c) of obj1" :key="a">{{a}}--{{b}}--{{c}}</li>
</ul>
export default {
  data() {
    return {
      ary: [111, 222, 333],
      obj1: {
        q: 1,
        w: 2,
        e: 3,
        r:{
          aa:1
        }
      },
    };
  },
};
111--0
222--1
333--2
1--q--0
2--w--1
3--e--2
{ "aa": 1 }--r--3

key用来提升虚拟dom的diff(判断不同)算法效率,diff算法同层比较

vue的虚拟DOM:使用js对象(vnode类的实例)模拟真实DOM,虚拟DOM是vue实例this中的VNode,路径在./vue/src/core/vnode/vnode.js中

  • v-bind 用来处理行内属性指令,简写为: v-bind在处理class和style上有专门加强
name: "lhl"

class里写语句,满足条件将会把该类名进行绑定,反之。

<h1 :qqq="{box:name.lenght>=3}" 
    :class="{box:name.lenght>=3}">
    v-bind对class和style有加强
</h1>
<div :style="{color:'red'}">
      v-bind对class和style有加强
</div>

渲染后的DOM,非class和style里面写对象会直接输出object

<h1 data-v-10b7156c="" qqq="[object Object]" box="">v-bind对class和style有加强</h1>

v-bind踩坑:问题:动态绑定class无效。解决:标签删除,之后先写:class的语句。

v-bind修饰符

.sync 组件时候

@keydown.enter="fn" 在焦点按下“回车”自行后面的函数

//
plus(a,e) {
      console.log(a,e);
      this.num+=10;
    },
    
//html
<input type="text" v-model="num" @keydown.enter="plus(10)">
//回车后对num+10
  • v-on专门处理事件的指令,简写@
    <div>{{ num }}</div>
methods: {
    //methods中的方法不能写成箭头函数,箭头函数的this不能保证;
    //里面的函数中的this都是当前实例
    //这里的属性都会变成当前实例的私有属性
    //实参$event或e与形参e相对应,事件
    plus(a,e) {
      console.log(a,e);
      this.num+=10;
    },
  },

v-on事件处理指令v-on @的修饰符 @click.stop='fn'//阻止冒泡 @click.prevent=fn//阻止默认事件 @click.self='fn' //只有点击自己的时候才能触发,冒泡无法触发这个执行

  • v-model v-model是 :value和@input 的结合 :value="name" @input="name=$event.target.value"

v-model的修饰符 v-model.lazy 当失去焦点时更新,是:value和@change 的结合, v-model.number 将input的内容使用parseFloat转成数字,转成NaN的就不作为 v-model.trim 去除首尾空格