Vue 内置指令总结

参考:https://cn.vuejs.org/v2/api/#指令
v-html 内容按普通 HTML 插入,可防止 XSS 攻击
v-show 根据表达式的真假值,切换元素的 display CSS 属性来显示隐藏元素
v-if 根据表达式的真假值,来渲染元素
v-else 前面必须有 v-if 或 v-else-if
v-else-if 前面必须有 v-if 或 v-else-if
v-for 遍历的数组或对象
v-on 绑定事件监听器
v-bind 用于绑定元素属性
v-model 在表单控件或者组件上创建双向绑定
v-once 一次性插值,当后面数据更新后视图数据不会更新
v-pre 可以用来显示原始插入值标签 {{}} 。并跳过这个元素和它的子元素的编译过程。加快编译。
例如:网页中的一篇文章,文章内容不需要被 Vue 管理渲染,则可以在此元素上添加 v-pre 忽略文章编译提
高性能。
在 vue-02-过渡&动画和指令 目录下创建页面: 03-Vue内置指令.html

<span v-pre>{{ this will not be compiled }}</span> 

浏览页面显示内容:并没有识别{{}} 
{{ this will not be compiled }}

v-text
等价于 {{}} 用于显示内容,但区别在于:
{{}} 会造成闪烁问题, v-text 不会闪烁
如果还想用 {{}} 又不想有闪烁问题,则使用 v-cloak 来处理
v-cloak
如果想用 {{}} 又不想有闪烁问题,则使用 v-cloak 来处理,步骤如下:

  1. 在被 Vue 管理的模板入口节点上作用 v-cloak 指令
  2. 添加一个属性选择器 [v-cloak] 的CSS 隐藏样式: [v-cloak] {display: none;}
    原理:默认一开始被 Vue 管理的模板是隐藏着的,当 Vue 解析处理完 DOM 模板之后,会自动把这个样式去
    除,然后就显示出来。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <style>
        /* 将带有 v-clock 属性的标签隐藏 */
        [v-clock] {
            display: none
        }
    </style>
</head>
<body>
    <div id="app" v-clock>
        <!-- v-pre
        1. 用于显示双大括号{{}}
        2. 跳过这个元素和它的子元素的编译过程,这样可以提高性能。 -->
        <span v-pre>{{你好,梦学谷!}}</span>

        <!-- 使用双大括号,会有双括号 {{}} 闪烁出来。
        可以通过 v-text进行解决闪烁问题
            
        如果我就需要使有双大括号,又不想让它有{{}} 闪烁出来
        -->
        <h3>{{message}}</h3>
        <h3>{{message}}</h3>
        <h3>{{message}}</h3>
        <h3 v-text="message"></h3>
        <h3 v-text="message"></h3>
        <h3 v-text="message"></h3>

    </div>
    <script src="./node_modules/vue/dist/vue.js"></script>
    <script>
        new Vue({
            el: '#app',
            data: {
                message: 'hello mxg.....'
            }
        })
    </script>
</body>
</html>
### Vue中的内置指令及其用法 Vue框架提供了一系列内置指令,用于简化DOM操作和提升性能。这些指令通过特定的前缀`v-`来标识,并在模板中使用。以下是Vue中一些常见的内置指令及其用法。 #### `v-pre` `v-pre`指令用于跳过带有该指令的节点的编译过程,直接将其内容作为静态文本渲染。该指令适用于那些不需要使用插值语法或指令语法的节点,从而提高页面编译和渲染速度。例如: ```html <h2 v-pre>你好,{{name}}</h2> <h2 v-pre>当前访问量:{{TrafficVolume}}</h2> ``` 在上述代码中,即使`{{name}}`和`{{TrafficVolume}}`是插值语法,但由于使用了`v-pre`指令Vue会直接将其作为文本显示,不会进行动态绑定[^1]。 #### `v-once` `v-once`指令通常用于那些不会改变的静态内容,以提高性能并避免不必要的DOM更新。例如: ```html <span v-once>{{ staticText }}</span> ``` 该指令确保`{{ staticText }}`只在初次渲染时绑定一次,后续数据变化时不会更新该内容[^2]。 #### `v-model` `v-model`指令用于在表单控件或组件上创建双向数据绑定。它会自动监听用户的输入事件并更新数据,同时也会将数据的变化反映到输入控件上。该指令主要用于`<input>`、`<select>`、`<textarea>`以及自定义组件中。例如: ```html <div id="app"> <div>{{msg}}</div> <input type="text" v-model="msg"> </div> ``` ```javascript new Vue({ el: "#app", data: { msg: "Hello Vue.js" } }); ``` 需要注意的是,`v-model`会忽略表单元素的`value`、`checked`、`selected`等属性的初始值,始终以Vue实例的数据为准[^3]。 #### `v-cloak` `v-cloak`指令用于解决页面在Vue实例加载完成前显示未解析的Mustache标签的问题。通过结合CSS,可以隐藏带有`v-cloak`属性的元素,直到Vue实例创建完成并接管容器后,这些元素才会被正常渲染。例如: ```css [v-cloak] { display: none; } ``` ```html <div v-cloak>{{message}}</div> ``` 在Vue实例加载完成后,`v-cloak`属性会被自动移除,元素内容将正常显示[^5]。 #### `v-suspense` `v-suspense`是Vue 3中引入的一个特殊指令,用于优雅地处理异步组件的加载过程或在组件更新时提供过渡效果。它允许在加载数据或异步组件时展示一个占位符,直到内容加载完成。例如: ```html <template> <Suspense> <template #default> <AsyncComponent /> </template> <template #fallback> <div>Loading...</div> </template> </Suspense> </template> ``` 该指令通过`<Suspense>`组件实现,其中`#default`插槽用于放置异步加载的内容,而`#fallback`插槽用于展示加载过程中的占位符[^2]。 #### `v-slot` `v-slot`指令用于定义插槽内容,通常用于组件的模板中,允许父组件向子组件传递内容。例如: ```html <template> <ChildComponent> <template v-slot:default> <p>这是插槽内容</p> </template> </ChildComponent> </template> ``` 该指令支持具名插槽和作用域插槽,提供更灵活的内容分发机制。 #### `v-if`、`v-show`、`v-for` - `v-if`、`v-else-if`、`v-else`:用于条件渲染,根据表达式的布尔值决定是否渲染元素。 - `v-show`:通过切换CSS的`display`属性来控制元素的显示与隐藏。 - `v-for`:用于列表渲染,根据数组或对象的每个元素生成对应的DOM元素。 示例: ```html <div v-if="isVisible">显示内容</div> <div v-show="isVisible">切换显示</div> <ul> <li v-for="item in items" :key="item.id">{{ item.name }}</li> </ul> ``` #### `v-on` `v-on`指令用于监听DOM事件,并在触发时执行JavaScript表达式或方法。例如: ```html <button v-on:click="increment">点我+1</button> ``` 或简写为: ```html <button @click="increment">点我+1</button> ``` ```javascript methods: { increment() { this.n++; } } ``` #### `v-bind` `v-bind`指令用于动态绑定HTML属性或组件的props。例如: ```html <img v-bind:src="imageSrc"> ``` 或简写为: ```html <img :src="imageSrc"> ``` ### 总结 Vue内置指令极大地简化了DOM操作和数据绑定,提升了开发效率和代码可维护性。合理使用这些指令可以有效优化应用性能并增强用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值