Vue指令的学习

目录
  • 一、v-text(v-指令名="变量",变量需要data提供数值)
  • 二、v-html(可以解析html语法)
  • 三、v-once(只渲染元素和组件一次)
  • 四、v-cloak(防止页面闪烁)
  • 五、v-pre(了解)
  • 六、v-bind
    • 6.1 绑定属性
    • 6.2 绑定Class
    • 6.3 绑定Style

前言:

Vue官网一共有提供了14个指令,分别如下:

  • v-text
  • v-html
  • v-show
  • v-if ☆☆☆
  • v-else ☆☆☆
  • v-else-if ☆☆☆
  • v-for ☆☆☆
  • v-on ☆☆☆
  • v-bind ☆☆☆
  • v-model ☆☆☆
  • v-slot
  • v-pre
  • v-cloak
  • v-once

注意:☆代表重要常用的

一、v-text(v-指令名="变量",变量需要data提供数值)

<p v-text="info"></p>
<p v-text="'abc' + info"></p>
<script>
    new Vue({
        el: '#app',
        data: {
            info: 'a'
        }
    })
</script>

v-text="info"渲染页面结果为a,因为info是个变量,就直接展示变量所对应的值

v-text="'abc' + info"渲染页面结果为abca,当你想用字符串和变量拼接时,可以在字符串上增加单引号,这样程序就认为你这个是个字符串,字符串+info变量最后的结果就是字符串abca

二、v-html(可以解析html语法)

有时候我们的Vue对象中,或者是后台返回给我们一个段原生的html代码,我们需要渲染出来,那么如果直接通过{{}}渲染,会把这个html代码当做字符串。这时候我们就可以通过v-html指令来实现。

示例代码如下:

<p v-html="'<b>ok</b>'"></p>
<p v-text="'<b>ok</b>'"></p>

以上两行代码除了用的vue指令不一样以外,没有任何区别,让我们先展示结果吧

ok
<b>ok</b>

v-html可以解析html的标签,而text传的是字符串,不用管字符串里面具体的内容是什么,统一都直接展示出原来的字符

三、v-once(只渲染元素和组件一次)

只渲染元素和组件一次。随后的重新渲染,元素/组件及其所有的子节点将被视为静态内容并跳过。这可以用于优化更新性能。

<input type="text" v-model="msg" v-once>  // 只渲染一次
<p v-once>{{ msg }}</p>

四、v-cloak(防止页面闪烁)

这个指令保持在元素上直到关联实例结束编译。和 CSS 规则如 [v-cloak] { display: none } 一起用时,这个指令可以隐藏未编译的Mustache标签直到实例准备完毕。

五、v-pre(了解)

跳过这个元素和它的子元素的编译过程。可以用来显示原始 Mustache 标签。跳过大量没有指令的节点会加快编译。

<div id="app">
  <span v-pre>{{message}}</span>
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      message: "hello"
    }
  })
</script>

正常来讲我们会通过编译最后在网页上显示hello,但是使用了v-pre指令后,就会跳过编译,直接展示原始的标签内容也就是{{message}}

六、v-bind

6.1 绑定属性

如果我们想要在html元素的属性上绑定我们Vue对象中的变量,那么需要通过v-bind来实现。

<div id="app">
  <a v-bind:href="baidu" rel="external nofollow" >百度</a>
  <img :src="imgSrc" alt="">
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      message: "hello",
      baidu: "https://www.baidu.com",
      imgSrc: "https://www.baidu.com/img/pc_a91909218349e60ed8f6f6f226c30e5f.gif"
    }
  })
</script>

我们只需要在绑定的属性前面添加v-bind:即可,当然我们也可以使用缩写:,直接写冒号即可

6.2 绑定Class

绑定Class有2种方式,一种通过数组绑定,一种通过对象绑定

通过对象的方式来实现:

<div id="app">
  <p v-bind:class="{color:isColor}">你好,世界</p>
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      isColor: true
    }
  })
</script>
<style>
    .color{
        color: blue;
    }
</style>

对象的方式即像上面的代码{color:isColor} keycolorvalueisColor,当value的值为true则渲染,为false则不渲染

通过数组的方式来实现:

<div id="app">
  <p :class="[classname1, classname2]">{{message}}</p>
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      message: "hello",
      classname1: "pcolor",
      classname2: "fontSize"
    },
  })
</script>
<style>
    .pcolor{
        color: red;
    }
    .fontSize{
        font-size: 30px;
    }
</style>

class需要绑定2个属性时,可以使用数组的方式

6.3 绑定Style

绑定Style也有2种方式,一种通过数组绑定,一种通过对象绑定

通过对象的方式来实现:

<div id="app">
  <p :style="{fontSize:'100px'}">{{message}}</p>
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      message: "hello"
    }
  })
</script>

注意:对象绑定的时候只能驼峰命名法fontSize,不能使用font-size否则会报错,100px加单引号就是字符串,不加则是变量,需要在data中添加变量

通过数组的方式来实现:

<div id="app">
  <p :style="[style1, style2]">{{message}}</p>
</div>
<script>
  const app = new Vue({
    el: "#app",
    data: {
      message: "hello",
      style1: {background:'red'},
      style2: {fontSize:'30px'},
    }
  })
</script>

到此这篇关于Vue指令的学习的文章就介绍到这了,更多相关Vue指令内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • vue中自定义指令directive的详细指南

    目录 一. 什么是自定义指令 二. 如何自定义指令 钩子函数 三.应用场景 输入框防抖 图片懒加载 一键 Copy的功能 拖拽 总结 一. 什么是自定义指令 我们看到的v-开头的行内属性,都是指令,不同的指令可以完成或实现不同的功能,对普通 DOM元素进行底层操作,这时候就会用到自定义指令.除了核心功能默认内置的指令 (v-model 和 v-show),Vue 也允许注册自定义指令 指令使用的几种方式: //会实例化一个指令,但这个指令没有参数 `v-xxx` // -- 将值传到指令中 `v

  • Vue自定义指令实现弹窗拖拽四边拉伸及对角线拉伸效果

    引言 近期公司vue前端项目需求:实现弹窗的拖拽,四边拉伸及对角线拉伸,以及弹窗边界处理.本人使用vue的自定义指令编写了drag.js文件分享给大家一起学习,以下代码是本人提取出来的示意demo,仅供参考.这是本人前端小白的第一篇技术分享,如有错误的地方,请大家批评指正! 页面布局 <template> <div class="parameter" v-dialogDrag > <div class="title">标题 <

  • vue中自定义指令(directive)的基本使用方法

    目录 前言 正文 1.全局注册 2.局部注册 3.钩子函数及参数设置 4.灵活用法 (1)动态指令参数 (2)函数简写方式 (3)对象字面量方式 5.使用场景 写在最后 前言 在vue项目中我们经常使用到 v-show ,v-if,v-for等内置的指令,除此之外vue还提供了非常方便的自定义指令,供我们对普通的dom元素进行底层的操作.使我们的日常开发变得更加方便快捷.本文就来总结一下自定义指令的使用方法及常用的场景. 正文 1.全局注册 这里全局注册一个指令,用于使用该指令的元素加一个红色边

  • vue中v-model指令与.sync修饰符的区别详解

    目录 v-model .sync 细微之处的区别 总结功能作用场景: v-model <!--父组件--> <template> <!--v-model 指令是语法糖--> <Child v-model="model"></Child> <!-- 把 v-model 指令展开后相当于下面的代码 --> <!-- v-model绑定的默认事件是input,默认prop是value属性 --> <Ch

  • 理解Vue2.x和Vue3.x自定义指令用法及钩子函数原理

    目录 Vue2.x用法 全局注册 局部注册 使用 钩子函数 钩子函数的参数 Vue3.x用法 全局注册 局部注册 使用 钩子函数 较 Vue2.x 相比, 钩子函数有变化 Vue2.x用法 全局注册 Vue.directive( 指令名, { 自定义指令生命周期 } ) 局部注册 directives: { 指令名, { 自定义指令生命周期 } } 使用 v-指令名: 属性名.修饰符="value值" 钩子函数 bind - 自定义指令绑定到 DOM 后调用. 只调用一次, 注意: 只

  • Vue全局自定义指令Modal拖拽的实践

    目录 背景 实现思路 实现效果 背景 最近一直在做的项目是Vue2搭建的项目,UI框架用的antdV,项目中用到了很多Modal对话框,然后突然有一天产品说:"这个对话框为什么不能移动啊,挡住我看信息了",那没办法,有需求就得做,这就是新生代打工人. 首先我去antdV官网看Modal的配置属性和方法,看看有没有这方面的属性或者方法可以直接解决,无奈没有找到.第二步开始问百度,相关的博客也有一些,但是总的来说五花八门,不是特别好搞懂,然后发现有个使用全局自定义指定的方式好像有点意思,然

  • Vue指令的学习

    目录 一.v-text(v-指令名="变量",变量需要data提供数值) 二.v-html(可以解析html语法) 三.v-once(只渲染元素和组件一次) 四.v-cloak(防止页面闪烁) 五.v-pre(了解) 六.v-bind 6.1 绑定属性 6.2 绑定Class 6.3 绑定Style 前言: Vue官网一共有提供了14个指令,分别如下: v-text v-html v-show v-if ☆☆☆ v-else ☆☆☆ v-else-if ☆☆☆ v-for ☆☆☆ v-

  • 详解Vue自定义指令及使用

    一.什么是指令 学习 vue 的时候肯定会接触指令,那么什么是指令呢? 在 vue 中提供了一些对于页面和数据更为方便的输出,这些操作就叫做指令,以 v-xxx 表示,比如 html 页面中的属性 <div v-xxx ></div> 比如在 angular 中 以 ng-xxx 开头的就叫做指令 指令中封装了一些 DOM 行为,结合属性作为一个暗号,暗号有对应的值,根据不同的值,会进行相关 DOM 操作的绑定,即可以进行一些模板的操作 vue 中常用的一些内置 v- 指令 v-t

  • Vue常用指令v-if与v-show的区别浅析

    目录 前言 1. v-show 2. v-if 3. v-show和v-if的区别 1. 在原理方面的区别 2. 在使用应用场景方面的区别 总结 前言 v-show 和v-if 是比较常用的Vue指令,经常用来判断渲染部分代码块,但两者具体的区别在哪里呢 ??? 首先我们可以来看一下Vue中文社区说明文档的介绍: Vue中文社区说明文档中简单来说是:初始渲染的时候进行条件判断展示: 1. v-show v-show指令的作用是:根据真假值切换元素的显示状态,是响应式的 语法表达v-show =

  • Vue.js directive自定义指令详解

    自定义一个demo指令 Vue自定义指令语法如下: Vue.directive(id, definition) 传入的两个参数,id是指指令ID,definition是指定义对象.其中,定义对象可以提供一些钩子函数. <div id="app"> <!-- input输入框获得焦点 --> <input type="text" v-focus/> </div> <script> // 注册一个全局自定义指令

随机推荐