Vue.js前端框架系统学习(4)——Vue指令之v-text,v-html,v-if,v-show

时间:2020-07-04 18:02:27   收藏:0   阅读:41

写在前面的话:继续上一篇文章,来学习一下vue的指令。

指令

指令 (Directives) 是带有 v- 前缀的特殊 attribute。指令 attribute 的值预期是单个 JavaScript 表达式 (v-for 是例外情况)。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

常用的Vue指令:

  1. v-text
  2. v-html
  3. v-bind
  4. v-on
  5. v-model
  6. v-for
  7. v-if
  8. v-show
  9. v-cloak
  10. v-pre
  11. v-once......

接下来我们就一个一个进行解释,并结合实例进行演示.

我们现在components目录下新建一个Derectives.vue的文件,一会就都写在这个文件中了。

//Derectives.vue
<template>
  <div>
      <h1>Derectives</h1>
  </div>
</template>

<script>
export default {
  name: ‘derectives‘,
  data () {
    return {
      msg: ‘I am v-text‘
    }
  }
}
</script>

在App.vue中引入该组件

//App.vue
<template>
  <div id="app">
    <HelloWorld msg="Welcome to Your Vue.js App" />
    <Derectives />   //将组件渲染到App.vue页面
    <span>{{msg1}}</span>
  </div>
</template>

<script>
import HelloWorld from ‘./components/HelloWorld.vue‘
import Derectives from ‘./components/Derectives.vue‘ //导入Derectives组件

export default {
  name: ‘App‘,
  data () {
    return {
      msg1: ‘Welcome‘
    }
  },
  components: {
    HelloWorld,
    Derectives   //注册组件
  }
}
</script>

<style>

</style>

技术分享图片

成功加载组件

v-text

在Derectives.vue中加入一个span标签,并加入v-text属性。

//Derectives.vue

<span v-text="msg"></span>   //加到template中


<script>
export default {
  name: ‘Derectives‘,
  data () {
    return {
      msg: ‘I am v-text‘  //就是将这个msg给v-text,将其渲染到页面上
    }
  }
}
</script>


<span v-text="msg"></span> 效果等同于  <span>{{msg}}</span>

v-html

在网站上动态渲染任意 HTML 是非常危险的,因为容易导致 [XSS 攻击]。只在可信内容上使用 `v-html`,永不用在用户提交的内容上。

其实归根到底就是牢记一句话:永远不要相信用户输入!!!

//Derectives.vue

    <div v-html="html"></div>   //加到template中


<script>
export default {
  name: ‘Derectives‘,
  data () {
    return {
      html: ‘<a href="https://www.baidu.com" target=_blank >Baidu</a>‘  //html代码,一个指向百度的超链接
    }
  }
}
</script>

技术分享图片

点击就能跳转到百度页面。

条件渲染之v-show和v-if

v-show:

//Derectives.vue

    <h2 v-show="ok"> Hey,what‘s up !</h2>  //加到template中


<script>
export default {
  name: ‘Derectives‘,
  data () {
    return {
	 ok: true   //我们将ok的真假值赋值给ok,然后v-show通过判断ok的真假来决定当前的h2标签要不要显示到页面中
    }
  }
}
</script>

我这里将v-show 设置为true了,所以可以看到h2标签被成功渲染

技术分享图片

假如我把ok设置为false,则h2标签不会被渲染。

技术分享图片

v-show中的ok同样可以是能够判断真假的表达式。

v-if

//Derectives.vue

   <h2 v-if="ok">Vue is awesome!</h2> //加到template中
   <h2 v-else>oh, no !</h2>   //这行 v-else可以写在v-if后,即如果v-if不成立则v-else这行标签被渲染
<script>
export default {
  name: ‘Derectives‘,
  data () {
    return {
	 ok: true   //我们将ok的真假值赋值给ok,然后v-if通过判断ok的真假来决定当前的h2标签是否渲染到页面中
    }
  }
}
</script>

技术分享图片

我这里的v-if="ok2",并且设置为false,所以Vue is awesome!这行没有渲染,而是oh, no!被渲染到页面。

小结:

我这里只是简单的演示了一下基本的用法,还有复杂的用法可以去官网API中寻找教程。

自己总结了一下v-ifv-show的区别:

官网给出的总结是:

v-if 是“真正”的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建。

v-if 也是惰性的:如果在初始渲染时条件为假,则什么也不做——直到条件第一次变为真时,才会开始渲染条件块。

相比之下,v-show 就简单得多——不管初始条件是什么,元素总是会被渲染,并且只是简单地基于 CSS 进行切换。

一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。

认真看几遍的话,再配合自己的实际操作应该不难理解两者的区别。

总结:

这篇博文主要介绍了Vue指令中的v-text,v-html,v-if,v-show。如果有什么问题还请大家批评指正。

原文:https://www.cnblogs.com/jshmztl/p/13235797.html

评论(0
© 2014 bubuko.com 版权所有 - 联系我们:wmxa8@hotmail.com
打开技术之扣,分享程序人生!