【Vue3】Vue内置指令

news2024/11/15 15:31:56

注意:在vue中使用v-开头的都是Vue指令。

一、v-html插入标签

可以识别标签。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个Vue应用</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>

<body>
    <div id="app">
        <!-- 插入标签:使用v-html指令 -->
        <p v-html="msg">{{ msg }}</p>
        <div v-html="info"></div>
    </div>
    <script>
        const obj = {
            data() {
                return {
                    msg: "<font color='red'> 早睡早起长头发 </font>",
                    info: "<input type='text' name='userName'/>"
                }
            },
            methods: {

            }
        }
        Vue.createApp(obj).mount('#app')
    </script>
</body>
</html>

二、v-text插入文本

不能识别标签。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个Vue应用</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>

<body>
    <div id="app">
        <!-- 插入标签:使用v-text指令 -->
        <div v-text="info"></div>
    </div>
    <script>
        const obj = {
            data() {
                return {
                    info: "<input type='text' name='userName'/>"
                }
            },
            methods: {

            }
        }
        Vue.createApp(obj).mount('#app')
    </script>
</body>
</html>

三、条件渲染

渲染:就是将模型中的数据显示到视图中;

条件渲染:就是根据表达式的值来决定是显示还是隐藏内容。

    • v-if指令

如果flag为true,就显示标签;如果flag为假,就隐藏标签。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个Vue应用</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="app">
        <!-- 如果flag为真,就把这个标签显示出来;如果flag为假,就把这个标签隐藏 -->
        <div v-if="flag">西安交通大学</div>
    </div>
    <script>
        const obj = {
            data() {
                return {
                    flag: true
                    //flag: false
                }
            },
            methods: {

            }
        }
        Vue.createApp(obj).mount('#app')
    </script>
</body>
</html>

2. v-show指令

如果ok为true,就显示标签;如果ok为假,就隐藏标签。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个Vue应用</title>
    <!-- 1.引入Vue库 -->
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <!-- 2.创建视图(view) -->
    <div id="app">
        <!-- 如果ok为真,就把这个标签显示出来;如果ok为假,就把这个标签隐藏 -->
        <div v-show="ok">
            <ul>
                <li>西安</li>
                <li>北京</li>
                <li>上海</li>
            </ul>
        </div>
    </div>
    <script>
        const obj = {
            data() {
                return {
                    ok: true,
                    // ok:false
                }
            },
            methods: {

            }
        }
        Vue.createApp(obj).mount('#app')
    </script>
</body>
</html>

3. v-if和v-show的区别

实现方式不同:v-if底层采用DOM的appendChild方法创建元素添加到页面中;v-show是通过CSS的display属性来控制是否显示元素。

加载性能:v-if快,v-show慢。

切换开销:v-if的开销大,v-show的开销小。

四、v-for循环渲染

将数组或集合中的数据渲染到视图中。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个Vue应用</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="app">
        <!-- v-for循环渲染:将数组或集合中的数据渲染到视图中 -->
        <div>
            <ul>
                <!-- 对数组进行for in循环,依次从arr数组中取出数据赋给item -->
                <li v-for="item in arr">
                    {{ item }}
                </li>
            </ul>
            <hr>
            <ul>
                <li v-for="pro in obj">
                    {{ pro }}
                </li>
            </ul>
            <hr>
            <ul>
                <li v-for="item in objArr">
                    {{ item.key }}
                    {{ item.name }}
                    {{ item.loc }}
                </li>
            </ul>
            <ul>
                <li v-for="(item,key,index) in obj">
                    {{key}}:{{item}}:{{index}} //属性名、值、索引
                </li>
            </ul>
        </div>
    </div>
    <script>
        const obj = {
            data() {
                return {
                    // 数组
                    arr: [12, 22, 33, 44, 55],
                    // 对象
                    obj: { no: 1001, name: '刘备', sex: '男', age: 35 },
                    // 数组对象
                    objArr: [
                        {
                            key: 11,
                            name: '市场部',
                            loc: '北京'
                        },
                        {
                            key: 11,
                            name: '财务部',
                            loc: '北京'
                        },
                        {
                            key: 11,
                            name: '研发部',
                            loc: '北京'
                        }
                    ]
                }
            },
            methods: {

            }
        }
        Vue.createApp(obj).mount('#app')
    </script>
</body>
</html>

五、v-bind

将页面元素的属性和模型中变量进行绑定。

    • 绑定链接

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="app">
        <!-- 绑定链接 -->
        <a v-bind:href="link">百度一下</a>
    </div>
    <script>
        const obj = {
            data(){
                return {
                    link: 'http://www.baidu.com'
                }
            }
        }
        Vue.createApp(obj).mount("#app")
    </script>
</body>
</html>

2. 绑定样式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<style>
    /* 把p标签的class属性ok绑定到isOk上,如过isOk为真,则显示ok样式 */
    .ok{
        color: red;
        font-size: 25px;
    }
</style>
<body>
    <div id="app">
        <!-- 绑定CSS样式 -->
        <p v-bind:class="{ok:isOk}">早睡早起</p>
    </div>
    <script>
        const obj = {
            data(){
                return {
                    isOk: true
                }
            }
        }
        Vue.createApp(obj).mount("#app")
    </script>
</body>
</html>

六、v-on

给元素绑定事件

    • 绑定一个事件

<div v-on:事件名="函数名"></div>

注意:v-on绑定事件,若使用v-on绑定单个事件可以简写为:@事件名

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="app">
        <!-- 一次绑定一个事件 -->
        <button type="button" v-on:click="myClick">确定</button>
        <!-- 简写 -->
        <!-- <button type="button" @click="myClick">确定</button> -->
    </div>

    <script>
        const obj = {
            data(){
                return {
                }
            },
            methods: {
                // 写法一:
                myClick() {
                    alert('v-on绑定')
                },
                // 写法二:
                // myClick:()=>{
                //     alert("v-on")
                // }
                // 写法三:
                // myClick:function(){
                //     alert('v-on')
                // }
            }
        }
        Vue.createApp(obj).mount("#app")
    </script>
</body>
</html>

2. 绑定多个事件

<div v-on="{事件名1:函数名,事件名2:函数名}"></div>

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<style>
    #d1 {
        width: 50px;
        height: 50px;
        background-color: red;
    }
</style>

<body>
    <div id="app">
        <!-- 一次绑定多个事件 -->
        <div id="d1" v-on="{click:clicDiv,mouseover:myOver}"></div>
    </div>

    <script>
        const obj = {
            data() {
                return {
                }
            },
            methods: {
                clicDiv() {
                    alert('你单击div')
                },
                myOver() {
                    console.log('悬停')
                }
            }
        }
        Vue.createApp(obj).mount("#app")
    </script>
</body>

</html>

七、v-model

将input的值和模型中的变量进行绑定,实现数据与视图的双向绑定。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>
<body>
    <div id="app">
        <p>请选择你的性别:</p>
        <div>
            <input type="radio" value="男" v-model="gender" name="sex"/>男
            <input type="radio" value="女" v-model="gender" name="sex"/>女
        </div>
        <br><br>
        <p>你的性别是:{{ gender }}</p>
        <p>毕业院校:</p>
        <div>
            <select v-model="school">
                <option>请选择</option>
                <option value="西安邮电大学">西安邮电大学</option>
                <option value="陕西师范大学">陕西师范大学</option>
                <option value="西安科技大学">西安科技大学</option>
            </select>
        </div>
        <p>你的学校是:{{ school }}</p>
    </div>
    <script>
        const obj = {
            data(){
                return {
                    gender: '',
                    school: ''
                }
            }
        }
        Vue.createApp(obj).mount("#app")
    </script>
</body>
</html>

八、v-once

可以让元素或组件只渲染一次,一旦绑定,数据就不会改变。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个Vue应用</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>

<body>
    <!-- v-once:可以让元素或组件只渲染一次,一旦绑定,数据就不会改变。 -->
    <div id="app">
        <h3>v-once</h3>
        <!-- 两个p标签,input中使用了v-model双向绑定了对象属性voncetext -->
        <input type="text" v-model="voncetext" />
        <!-- 在没有使用v-once的时候,输入框的值改变了,p标签的内容也会随之改变 -->
        <p>{{voncetext}}</p>
        <!-- 在使用v-once的时候,输入框的值改变了,p标签的内容不会改变 -->
        <p v-once>{{voncetext}}</p>
    </div>

    <script>
        const obj = {
            data() {
                return {
                    voncetext: "测试v-once"
                }
            }
        }
        Vue.createApp(obj).mount('#app')
    </script>
</body>

</html>

九、v-pre

用于跳过这个元素和它的子元素的编译过程。对于大量没有指令的节点使用v-pre指令可以加快编译速度。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个Vue应用</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>

<body>
    <!-- v-pre:用于跳过这个元素和它的子元素的编译过程。对于大量没有指令的节点使用v-pre指令可以加快编译速度。 -->
    <div id="app">
        <h1 v-pre>{{ message }}</h1>
        </div>

    <script>
        const obj = {
            data() {
                return {
                    message:'Vue.js教程'
                }
            }
        }
        Vue.createApp(obj).mount('#app')
    </script>
</body>

</html>

十、v-cloak

vue.js文件没有加载完成时,在页面上上会出现 ‘{{message}}’的字样,等到vue创建实例、编译模板时,DOM就会被替换掉,过程中屏幕上会出现闪动一下。v-cloak指令可以解决初始化慢而导致页面闪动的问题。

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>第一个Vue应用</title>
    <script src="https://unpkg.com/vue@next"></script>
</head>

<!-- v-cloak指令可以解决初始化慢而导致页面闪动的问题。 -->
<style>
    [v-cloak] {
        display: none !important;
    }
</style>

<body>
    <div id="app" v-cloak>{{message}}</div>

    <script>
        const obj = {
            data() {
                return {
                    message: "this is a book"
                }
            }
        }
        Vue.createApp(obj).mount('#app')
    </script>
</body>

</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/140848.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

argparse简介

一、argparse简介 argparse 模块是 Python 内置的用于命令项选项与参数解析的模块&#xff0c;argparse 模块可以让人轻松编写用户友好的命令行接口&#xff0c;能够帮助程序员为模型定义参数。 argparse定义四个步骤 导入argparse包 ——import argparse创建一个命令行解析…

Fastjson反序列化审计及验证

简介&#xff1a;数字化平台已经与我们生活紧密结合&#xff0c;其用户规模庞大&#xff0c;一旦系统出现故障&#xff0c;势必会造成一定生活的不便。比如疫情时代&#xff0c;健康码已经成为人们出门必备的条件&#xff0c;一旦提供健康码服务平台出现故障&#xff0c;出行将…

imx6ull内核移植记录:failed to find ocotp node

前言 记录记录&#xff0c;是个和MAC地址相关的信息。 一 尝试尝试 [ 0.093958] vddsoc: supplied by regulator-dummy [ 0.126215] failed to find ocotp node [ 0.126744] No ATAGs? 经过分析&#xff0c;拆分为两个问题&#xff1a; [ 0.126215] failed t…

Web前端 CSS3 02 小练习

京东小项目 设置一个京东侧边栏 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content&quo…

读 NebulaGraph源码 | 查询语句 LOOKUP 的一生

本文由社区用户 Milittle 供稿 LOOKUP 是图数据库 NebulaGraph 的一个查询语句。它依赖索引&#xff0c;可以查询点或者边的信息。在本文&#xff0c;我将着重从源码的角度解析一下 LOOKUP 语句的一生是如何度过的。 本文源码阅读基于内核源码的 v3.3.0 版本&#xff0c;详见 …

实现SQLSERVER 调用 C# 代码

简单例子 首先写一段简单的 C# 代码&#xff0c;然后把它编译成 dll。 namespace Bussiness {public class UserFunctions{public static string UserLogin(string username, string password){var random new Random();var isSuccess random.Next() % 2 0;return isSucce…

【漏洞复现】钉钉rce反弹shell

文章目录 一、漏洞描述二、漏洞原理三、影响版本四、复现过程0.环境说明1.msf 生成shellcode2.msf开启监听3.将生成的shellcode替换原shellcode4.开启web服务&#xff0c;并上传poc文件&#xff0c;构造poc5.从钉钉发送poc给受害者6.受害者点击即会触发漏洞&#xff0c;在msf监…

前端菜鸟如何快速开发个人产品

我是车辙&#xff0c;我的掘金小册《SkyWalking&#xff1a;应用监控和链路跟踪》已经上线啦&#xff0c;这是我的第一本电子书&#xff0c;欢迎大家订阅。 大家好&#xff0c;我是车辙。在完成小册后的一段时间&#xff0c;我突然想开发一款个人H5产品。在起初有这样想法的时候…

长、中、短视频“再战”微短剧

配图来自Canva可画 近年来&#xff0c;流量焦虑一直伴随着国内的视频平台&#xff0c;比如&#xff0c;制作精良的长视频由于剧集冗长正在被“追求效率”的年轻人抛弃&#xff1b;高歌猛进的短视频也因为无法承受太多有价值的内容而面临增长瓶颈。在此背景下&#xff0c;制作门…

中国工业以太网交换机市场分析

一、我国以太网交换机市场&#xff1a; 工业以太网交换机&#xff08;IndustrialEthernetSwitches&#xff09;是能够满足工业现场需要&#xff0c;技术层面与商业以太网交换机适配&#xff0c;而实时通信、可靠性、稳定性、安全性、环境适应性等各个方面规定高于商业以太网交…

玩转X3派,健身游戏两不误

一、准备工作 Windows电脑端安装拳皇游戏 &#xff08;因为是按键模拟&#xff0c;理论上只要是按键控制的游戏都可以玩&#xff0c;本文用MAME模拟器作例子&#xff0c;下载MAME&#xff1a;MAMEdev.org | Home of The MAME Project&#xff09; Windows可直接从该目录下载&…

常用的PHP伪协议大全

目录 常见文件包含函数 常见协议 php:// php://filter&#xff08;本地磁盘文件进行读取&#xff09; php://input &#xff08;读取POST数据&#xff09; file:// data:// 常见文件包含函数 函数功能include()代码执行到 include() 函数时将文件包含include_once()当…

如何操作工单系统

如何自定义工单字段 点击【工单管理】 > 点击【工单自定义字段】。选择【添加新的自定义字段】&#xff0c;即可进行字段编辑。管理人员可以在此页面自行添加要在工单上显示的内容&#xff0c;更改工单的格式&#xff0c;使其更满足于自身实际操作需要。管理员可选择添加单…

从“少林寺”毕业后,我当上了开源社区“区长”

本期名人堂我们有幸邀请到了Alluxio创始成员兼开源社区副总裁范斌先生。范斌先生讲述了自己的求学、工作、加入开源社区的经历&#xff0c;以及对未来十年数据编排发展的展望&#xff0c;和对开发贡献者的一些建议。 问题 1&#xff1a;范斌老师您好&#xff0c;很荣幸有机会采…

归并排序与逆序对数量模板题

归并排序 归并排序模板题 给定你一个长度为 n 的整数数列。 请你使用归并排序对这个数列按照从小到大进行排序。 并将排好序的数列按顺序输出。 输入格式 输入共两行&#xff0c;第一行包含整数 n。 第二行包含 n 个整数&#xff08;所有整数均在 1∼109 范围内&#xff…

DCG开年大戏上演“拖字诀”,爆雷恐迎加密至暗时刻

文/章鱼哥出品/陀螺财经币圈无新事&#xff0c;新年伊始&#xff0c;DCG被Gemini催债引发爆雷传言的事情一如FTX、SBF爆雷当初 &#xff0c;DCG是否会步他们的后尘&#xff0c;目前还不得而知&#xff0c;但这开年一记重锤&#xff0c;给2023的加密领域开了个坏头。祸起Gemini …

【王道·计算机网络】第一章 计算机网络基本体系【未完】

1. 计算机网络概述 1. 概念 计算机网络是一个将分散的、具有独立功能的计算机系统&#xff0c;通过通信设备与线路连接起来&#xff0c;由功能完善的软件实现资源共享和信息传递的系统。简而言之&#xff0c;计算机网络就是一些互联的(通过通信链路互联互通)、自治的计算机系…

【4.1】Ribbon负载均衡原理

【4.1】Ribbon负载均衡1 Ribbon--负载均衡原理1.1 负载均衡流程1.2 源码分析&#xff08;debug&#xff09;2 总结1 Ribbon–负载均衡原理 1.1 负载均衡流程 图中的地址是真实可用的地址吗&#xff1f; 显然不是。 这样一个请求实际上是无法直接到达user-service的。 因此中间…

求一款免费好用的进销存管理软件?

求一款免费好用的进销存管理软件&#xff1f; 免费好用的进销存管理软件&#xff0c;“免费”一词对用户最具吸引力。 很多的小微企业在企业发展的过程都会选择免费的进销存管理软件来协助自己运营。都会希望&#xff0c;花最低的成本&#xff0c;实现最大的利益。 进销存管…

牛客网数据库sql实战剖析(一)

牛客网SQL实战 1.查找最晚入职员工的所有信息 思路&#xff1a;找出入职时间最大的时间&#xff0c;作为子查询条件进一步查找到该员工的其它信息。 SELECT * FROM employees WHERE hire_date (SELECT MAX(hire_date)FROM employees );这里不能用order by的方式&#xff0c…