vue的那些插值操作

这篇笔记详细介绍了Vue的插值操作,包括mustache语法、v-once、v-html、v-pre和v-cloak指令。通过样例演示,展示了如何在DOM中插入变量值、富文本渲染、避免原始代码显示以及优化初始加载效果。

1.简介

该笔记主要记录vue常用的插值操作和mustache操作,对这些插值操作做一些对比比较,方便参考使用。

2.什么是插值操作和mustache语法

    将指定的值插入到指定的dom元素中,就叫做插值操作,比如将用户名写入一个指定的span中。
    mustache语法:在vue中经常看到的{{varName}}这种形式的表达方式,就是mustache语法。(具体介绍请参考其他文章,这里不做详细描述)

3.插值操作总览表

计算语法使用场景注意事项
普通{{}}显示简单的或者固定的值尽量不要用于显示需要大量计算的值
v-once当某一个值只需要显示初始状态值,并且不希望动态被修改的时候就可以使用该指令v-once指令只需要写到指定的dom标签中即可,后面不带其他表达式
v-html用于插入需要被浏览器渲染的html代码块v-html指令写在dom标签中并且指定对应的变量值
被抛弃的v-textv-text的作用和{{varName}}作用相同因为v-text没有{{varName}}灵活,不能进行运算或拼接,所以一般不使用
v-pre将标签中的内容原原本本的展示出来,主要用于展示代码块信息参考html5的pre标签
v-cloak用于处理在vue解析之前的时候做的事情需要定义v-cloak相关的样式

4. 样例演示

4.1 插值操作之{{varName}}

    这种直接使用mustache语法将某一个变量值插入到一个dom中的做法,就是最基本的插值操作。varName是data中的某一个已经存在的变量名(比较简单,这里就不做代码演示)。
    此外,因为mustache语法中引用的是js的变量,所以在mustache表达式中,也可以做一些js一样的简单运算,比如:{{var1 + va2}} 就会按照js的方式进行计算并返回显示。

4.2 插值操作之v-once指令

    说明信息见总览表,这给出一个演示代码。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <h2>{{msg}}</h2>
        <!-- 因为第二个h2的dom标签中使用了v-once标签,所以在console中改变msg值后,第二个h2中的值并不会改变  -->
        <h2 v-once>{{msg}}</h2>
    </div>

<script>
    const app = new Vue({
        el: '#app',
        data: {
            msg: '这是初始信息'
        }
    })
</script>
</body>
</html>

4.3 插值操作之v-html指令

    在很多项目中都会用到富文本编辑器,而富文本编辑器很多都是保存的html代码块。那么在页面中要展示这段已经编辑好的代码块,使用v-html会是一个不错的选择。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <div id="content" v-html='htmlContent'></div>
    </div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            htmlContent: '<h2 style="color: #808080;">富文本中的标题</h2>'
        }
    })
</script>
</body>
</html>

4.4 插值操作之v-pre指令

     1. v-pre会原封不动的展示标签中的内容,并不会解析。
     2. 同v-once一样,v-pre也不需要参数

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <h2 v-pre>{{msg}}</h2>
    </div>
<script>
    const app = new Vue({
        el: '#app',
        data: {
            msg: '这是初始信息'
        }
    })
</script>
</body>
</html>

4.5 插值操作之v-cloak指令

     有时候可能因为浏览器js解析的时候卡住了,就会导致浏览器中会显示出我们的原始代码,这样对用户不友好。所以使用v-cloak指令来完成一些js解析之前的事情,比如说隐藏没有渲染的dom。
     vue在渲染后会自动删除v-cloak指令
     实际开发中其实也很少使用,因为实际开发中基本都是组件化开发,组件会被封装成函数的形式,所以基本不会出现上述情况。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <style>
        [v-cloak] {
            display: none;
        }
    </style>
</head>
<body>
    <div id="app">
        <h2 v-cloak>{{msg}}</h2>
        
    </div>
<script>
/*
	为了能达到演示效果,所以在延迟一秒后才开始创建vue实例并解析,而在解析之前v-cloak指令被赋予了display: none的属性,所以在渲染之前在浏览器中看不到h2中的内容。
	而在vue渲染后,v-cloak指令被删除,h2就会显示出来,但是因为渲染工作已经完成,所以浏览器上就看不到代码模样了。想要看到代码在页面中显示的样子,只需要删除v-cloak后刷新页面即可,或者修改style中的样式信息。
*/
    setTimeout(function(){
        const app = new Vue({
            el: '#app',
            data: {
                msg: '这是延迟显示的内容'
            }
        })
    },1000)
</script>
</body>
</html>

     至此,vue的插值操作就介绍到这里,如果有什么不对的地方还请大佬指正。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值