Vue框架---插值指令

1.搭建环境:idea

2.mustache语法

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>

<div id="app">
    <h2>{{message}}</h2>
    <h2>{{firstname +' '+lastname}}</h2>
    <h2>counter*2</h2>
</div>

<script>

    var vm=new Vue({
        el: "#app",
        data:{
            message:"hello",
            firstname:"soul",
            lastname:"tony",
            counter:0
        }
    });
</script>

</body>
</html>

3.v-cloak指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
    <style>
        [v-cloak]
        {
            display: none;
        }
    </style>
</head>
<body>
<!--vue解析器前有属性v-cloak
vue解析之后没有-->
<div id="app" v-cloak>
    {{message}}
</div>

<script>

    var vm=new Vue({
        el: "#app",
        data:{
            message:"hello,vue"
        }
    });
</script>

</body>
</html>

4.v-html指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>

<div id="app">
   <h2 v-html="url"></h2>
</div>

<script>

    var vm=new Vue({
        el: "#app",
        data:{
            url:'<a href="http://www.baidu.com">百度一下</a>'
        }
    });
</script>

</body>
</html>

5.v-once指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>

<div id="app">
    <h2 v-once>{{message}}</h2>
</div>

<script>

    var vm=new Vue({
        el: "#app",
        data:{
            message:"hello,vue"
        }
    });
</script>

</body>
</html>

6.v-pre指令

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
</head>
<body>

<div id="app">
    <h2>{{message}}</h2>
    <h2 v-pre>{{message}}</h2>
</div>

<script>

    var vm=new Vue({
        el: "#app",
        data:{
            message:"hello,vue"
        }
    });
</script>

</body>
</html>

Vue.js 中,数据绑定是框架的核心功能之一。其中,`v-html` 指令插值表达式(`{{ }}`)都可以用于将数据渲染到页面上,但它们的使用方式和行为有明显区别。 ### 插值表达式 插值表达式是最常见的数据绑定形式,语法为 `{{ 数据属性名 }}`。它主要用于在 HTML 文本内容中插入响应式数据。Vue 会自动将数据属性的值替换到占位符的位置,保持更新。 - 插值表达式不能解析 HTML 标签,只会将其作为纯文本输出。 - 在页面加载过程中,可能会出现短暂的“闪烁”现象,即用户会看到未被替换的 `{{ }}` 表达式。 - 为了防止这种闪烁,可以结合 `v-cloak` 指令使用,设置 `[v-cloak] { display: none; }` 的 CSS 规则[^2]。 示例代码如下: ```html <div id="app" v-cloak> <p>{{ message }}</p> </div> <script> new Vue({ el: '#app', data: { message: 'Hello, Vue!' } }) </script> <style> [v-cloak] { display: none; } </style> ``` ### `v-html` 指令 `v-html` 是一个指令,用于将数据属性作为 HTML 内容插入到元素中。与插值表达式不同,`v-html` 能够解析渲染 HTML 标签。 - 使用 `v-html` 可以动态插入 HTML 片段。 - 因为它可以执行 HTML,所以在处理用户输入的内容时需要注意防范 XSS 攻击。 - `v-html` 不会出现闪烁问题,因为它不会显示原始的 HTML 字符串[^3]。 示例代码如下: ```html <div id="app"> <div v-html="htmlContent"></div> </div> <script> new Vue({ el: '#app', data: { htmlContent: '<h1 style="color:green">这是一个绿色标题</h1>' } }) </script> ``` ### 使用场景对比 | 功能/特性 | 插值表达式 `{{ }}` | `v-html` 指令 | |---------------------|----------------------------|------------------------------| | 是否解析 HTML | 否 | 是 | | 是否存在闪烁问题 | 是(需配合 `v-cloak`) | 否 | | 是否替换整个内容 | 否,仅替换占位符 | 是,替换元素内部所有内容 | | 安全性 | 相对安全 | 存在 XSS 风险 | 总结来看,如果只是展示纯文本内容,推荐使用插值表达式或 `v-text` 指令;如果需要插入包含 HTML 标签的内容,则应使用 `v-html` 指令,同时注意内容的安全性处理[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Amo@骄纵

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值