前端:Vue学习-1

news2024/9/22 5:36:41

前端:Vue学习-1

    • 1. 指令
      • 1. 指令修饰符
      • 2. v-bind对样式控制的增强
      • 3. v-model应用于其他表单元素
    • 2. 计算属性
    • 3. watch侦听器(监视器)

1. 指令

就是带有v-前缀的特殊属性,不同属性对应不同的功能
v-html:动态设置页面的html标签内容,对应innerHtml;
v-show,v-if:控制元素显示隐藏,其中 v-show只是通过设置标签元素的display属性来控制标签元素的隐藏,而v-if是对标签元素进行删除或插入,通常频繁切换隐藏显示的使用v-show
v-else,v-else-if:用来辅助v-if的使用;
v-on:用来绑定事件,可以省略写为@事件名=“函数名”;如果定义的函数有参数,直接写为

@事件名=“函数名(参数1,参数2)”

<div id="app">
    <p v-if="score >= 90">优秀</p>
    <p v-else-if="score >= 80">良好</p>
    <p v-else>不怎的</p>
    <p>分数为:{{score}}</p>
    <button @click="func1">+</button>
    <button @click="func2">-</button>
</div>
<script type="text/javascript">
    new Vue({
        el:'#app',
        data:{
            score:90
        },
        methods:{
            func1(){
                this.score ++;
            },
            func2() {
                this.score--;
            }
        }
    });
</script>

请添加图片描述
v-bind:用来动态设置标签元素的属性,可以简写为 :属性名=属性值

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
    <script src="../vue2.js"></script>
    <style>
        img{
            width: 100px;
            height: 100px;
        }
    </style>
</head>
<body>
    <div id="app">
        <button v-show="index > 0" @click="func(-1)">上一页</button>
        <img :title="imgs[index]" alt="">
        <button v-show="index < imgs.length - 1" @click="func(1)">下一页</button>
    </div>
    <script>
        new Vue({
            el:'#app',
            data:{
                imgs: [1, 2, 3, 4, 5, 6],
                index: 0
            },
            methods:{
                func(i){
                    if(i == -1){
                        this.index --;
                    }else if(i == 1){
                        this.index ++;
                    }
                }
            }
        })
    </script>
</body>
</html>

请添加图片描述
v-for:基于数据循环,多次渲染整个元素,可以是数组、对象等,可以写为“v-for=‘item in items’”或者“v-for=‘(item,index) in items’”,通常在使用v-for的标签元素上需要添加属性key,用来唯一标识这个标签元素,推荐使用id作为key,不推荐使用index作为key(会变化,不对应)
v-model:通常结合表单元素来使用,用来双向数据绑定对应输入框中内容,如修改vue实例data中对应的属性值,输入框中值会进行相应变换,修改输入框中的值,对应的vue实例中对应属性值也会跟着进行变化;

<div id="app">
  <input type="text" v-model="val">
</div>
<script type="text/javascript">
    const app = new Vue({
        el:'#app',
        data:{
            val:'hello world!'
        }
    })
</script>

请添加图片描述

1. 指令修饰符

通过“.”指明一些指令后缀,不同后缀封装了不同的处理操作,简化代码。
按键修饰符@keyup.enter,键盘回车监听;v-mdel.trim,去掉首尾空格;v-model.number,转数字;@事件名.stop,阻止冒泡;@事件名.prevent,阻止默认行为。
@keyup.enter的使用

2. v-bind对样式控制的增强

  • 操作class,“:class=’对象/数组‘”
    • 对象,键就是类名,值是布尔值,如果值为true,有这个类,否则没有这个类,使用场景,一个类名,来回切换;
    • 数组,数组中所有的类,都会添加到盒子上,本质上就是一个class列表,使用场景,批量添加或删除类;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
    <script src="../vue2.js"></script>
    <style>
        .red{
            background-color: red;
        }
        .blue{
            background-color: blue;
        }
    </style>
</head>
<body>
    <div id="app">
        <p :class="{red:true}">
            hello world!
        </p>
        <p :class="['blue']">
            hello world!2
        </p>
    </div>
</body>
</html>

请添加图片描述

  • 操作style,“:style=‘样式对象’”
:style="{width:'300px'}"

像类似“background-color”的属性,写法可以为:“background-color”或“backgroundColor",前者需要用引号。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>vue2</title>
    <script src="../vue2.js"></script>
    <style>
        .jdt{
            width: 200px;
            height: 30px;
            border-radius: 25px;
            border: 1px solid black;
        }
        .inner-jdt{
            height: 100%;
            background-color: blue;
            border-radius: 25px;
            line-height: 30px;
            text-align: center;
            transition: all 0.6s;
        }
    </style>
</head>
<body>
    <div id="app">
        <div class="jdt">
            <div class="inner-jdt" :style="{width:jdtWidth}">{{jdtWidth}}</div>
            <br>
            <button @click="setWidth('20%')">20%</button>
            <button @click="setWidth('40%')">40%</button>
            <button @click="setWidth('60%')">60%</button>
        </div>
    </div>
    <script>
        new Vue({
            el:'#app',
            data:{
                jdtWidth:'40%'
            },
            methods:{
                setWidth(width){
                    this.jdtWidth = width;
                }
            }
        })
    </script>
</body>
</html>

请添加图片描述

3. v-model应用于其他表单元素

<div id="app">
   输入框:<input type="text" v-model="v1">
    <br>
    复选框:<input type="checkbox" v-model="v2">
    <br>
    单选框: 1 <input type="radio" name="hh" value="1" v-model="v3">
    2 <input type="radio" name="hh" value="2" v-model="v3">
    <br>
    下拉菜单:
    <select v-model="v4">
        <option name="hh2" value="1">1</option>
        <option name="hh2" value="2">2</option>
    </select>
    <br>
    多行文本:
    <textarea v-model="v5">

    </textarea>
</div>
<script>
    const app = new Vue({
        el:'#app',
        data:{
            v1:'',
            v2:true,
            v3:1,
            v4:'2',
            v5:''
        }
    })
</script>

2. 计算属性

基于现有的数据,计算出来的新属性。依赖的数据变化,自动重新计算。声明在computed配置项中,一个计算属性对应一个函数;使用起来和普通属性一样使用;

<body>
    <div id="app">
        <p>
            {{list}}
        </p>
        <p>{{totalCount}}</p>
    </div>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                list:[
                    1,2,3,4,5
                ]
            },
            computed:{
                totalCount(){
                    return this.list.reduce((item,sum)=>sum+item,0);
                }
            }
        })
    </script>
</body>

请添加图片描述
和函数的比较,**计算属性会对计算出来的结果进行缓存,再次使用直接读取缓存,依赖项变化了,会自动重新计算,并再次缓存。**默认的计算属性只是求,而不能设值,计算属性的完整写法如下:

computed{
	计算属性名:{
		get(){
			一段代码逻辑
			return 结果值
		},
		set(修改的值){
			一段代码逻辑
		}
	}
}

当计算属性名被修改赋值时,执行set,修改的值,传递给set方法的形参。

<body>
    <div id="app">
        <p>{{getName}}</p>
        <button @click="setName">改名</button>
    </div>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                firstName:'孙',
                secondName:'权'
            },
            methods:{
                setName(){
                    this.getName = '孙小妹';
                }
            },
            computed:{
                getName:{
                    get(){
                        return this.firstName + this.secondName;
                    },
                    set(val){
                        this.firstName = val.slice(0,1);
                        this.secondName = val.slice(1);
                    }
                }
            }
        })
    </script>
</body>

请添加图片描述

3. watch侦听器(监视器)

监视数据变化,执行一些异步操作

// 监视简单数据
watch{
	数据名(o,n){
		// 代码逻辑
	}
}
//复杂数据
watch{
	'对象.数据名'(o,n){
		// 代码逻辑
	}
}

完整写法,比如监视一个对象的所有属性

watch{
	数据属性名:{
		deep:true,// 深度监视
		handler(newValue){
			// 代码逻辑
		}
	}
}

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

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

相关文章

平替ChatGPT的多模态智能体来了

在人工智能领域&#xff0c;多模态技术的融合与应用已成为推动技术革新的关键。今天&#xff0c;我们用智匠AI实现了完全由国产模型驱动的多模态智能体——智酱v0.1.0&#xff0c;它不仅能够媲美ChatGPT的多模态能力&#xff0c;更在联网搜索、图片识别、画图及图表生成等方面展…

罗技K380无线键盘及鼠标:智慧互联,一触即通

目录 1. 背景2. K380无线键盘连接电脑2.1 键盘准备工作2.2 电脑配置键盘的连接 3. 无线鼠标的连接3.1 鼠标准备工作3.2 电脑配置鼠标的连接 1. 背景 有一阵子经常使用 ipad&#xff0c;但是对于我这个习惯于键盘打字的人来说&#xff0c;慢慢在 ipad 上打字&#xff0c;实在是…

WEB-INF 泄露-RoarCTF-2019-EasyJava(BUUCTF)

题目页面 点开help 这里存在文件下载漏洞&#xff0c;参数选择POST传参&#xff08;使用HackBar插件&#xff09; 查看文件内容 下载存有web信息的XML文件&#xff0c;这里补充一点知识点 WEB-INF主要包含一下文件或目录&#xff1a; /WEB-INF/web.xml&#xff1a;Web应用程序…

Qt会议室项目

在Qt中编写会议室应用程序通常涉及到用户界面设计、网络通信、音频/视频处理等方面。以下是创建一个基本会议室应用程序的步骤概述&#xff1a; 项目设置&#xff1a; 使用Qt Creator创建一个新的Qt Widgets Application或Qt Quick Application项目。 用户界面设计&#xff1…

Android Viewpager2 remove fragmen不生效解决方案

一、介绍 在如今的开发过程只&#xff0c;内容变化已多单一的fragment&#xff0c;变成连续的&#xff0c;特别是以短视频或者直播为主的场景很多。从早起的Viewpage只能横向滑动&#xff0c;到如今的viewpage2可以支持横向或者竖向滑动。由于viewpage2的adapter在设计时支持缓…

vue学习day09-自定义指令、插槽

29、自定义指令 &#xff08;1&#xff09;概念&#xff1a;自己定义的指令&#xff0c;可以封装一些dom操作&#xff0c;扩展额外的功能。 &#xff08;2&#xff09;分类&#xff1a; 1&#xff09;全局注册 2&#xff09;局部注册 3&#xff09;示例&#xff1a; 让表…

CV07_深度学习模块之间的缝合教学(2)--维度转换

教学&#xff08;1&#xff09;&#xff1a;链接 1.1 预备知识 问题&#xff1a;假如说我们使用的模型张量是三维的&#xff0c;但是我们要缝合的模块是四维的&#xff0c;应该怎么办&#xff1f; 方法&#xff1a;pytorch中常用的函数&#xff1a;(1)view函数&#xff08;2…

C++基础(三)

1.再探构造函数 之前的构造函数&#xff0c;初始化成员变量主要使用函数体内赋值&#xff0c;构造函数初始化还有一种方式&#xff0c;就是初始化列表&#xff0c;初始化列表的使用方式是以一个冒号开始&#xff0c;接着是一个以逗号分隔开的数据成员列表&#xff0c;每个“成…

系统架构师考点--软件工程(上)

大家好。今天我来总结一下软件工程的相关考点。这部分是考试的重点。在上午场客观题、下午场案例题以及下午场论文都有可能考到&#xff0c;在上午场客观题中大约占12-15分左右。 一、软件工程概述 软件开发生命周期 软件定义时期&#xff1a;包括可行性研究和详细需求分析过…

3d导入模型后墙体变成黑色?---模大狮模型网

在展览3D模型设计领域&#xff0c;技术和设计的融合通常是创意和实现之间的桥梁。然而&#xff0c;有时设计师们会遇到一些技术上的挑战&#xff0c;如导入3D模型后&#xff0c;墙体却突然变成了黑色。这种问题不仅影响了设计的视觉效果&#xff0c;也反映了技术应用中的一些复…

数据结构(4.4)——求next数组

next数组的作用:当模式串的第j个字符失配时&#xff0c;从模式串的第next[j]的继续往后匹配 求模式串的next数组(手算) next[1] 任何模式串都一样&#xff0c;第一个字符不匹配时&#xff0c;只能匹配下一个子串&#xff0c;因此&#xff0c;往后&#xff0c;next[1]都无脑写…

数据库学习作业

使用mysgldump命令备份数据库中的所有表 备份booksDB数据库中的books表 使用mysgldump备份booksDB和test数据库(test数据库自行准备) 使用mysq1命令还原第二题导出的book表 进入数据库使用source命令还原第二题导出的book表 创库&#xff0c;建表 建表的结果 插入数据 使用mysg…

医院同步时钟,构建医院零误差时间环境

在医院这个分秒必争、责任重大的场所&#xff0c;时间的准确性和一致性至关重要。医院同步时钟的应用&#xff0c;为构建医院零误差时间环境提供了坚实的保障。 一、医院同步时钟应用原因 首先&#xff0c;医疗工作的精确性和协同性依赖于统一且准确的时间。从手术的安排到药物…

MySQL篇:事务

1.四大特性 首先&#xff0c;事务的四大特性&#xff1a;ACID&#xff08;原子性&#xff0c;一致性&#xff0c;隔离性&#xff0c;持久性&#xff09; 在InnoDB引擎中&#xff0c;是怎么来保证这四个特性的呢&#xff1f; 持久性是通过 redo log &#xff08;重做日志&…

解析CQRS架构模式

在日常开发过程中&#xff0c;关于如何正确划分操作的边界和职责一直是我们需要考虑的一个核心问题。针对这个问题&#xff0c;业界也诞生了一些新的设计思想和开发模式&#xff0c;其中最具代表性的就是今天要介绍的CQRS。 CQRS的全称是Command Query Responsibility Segregat…

图——图的遍历(DFS与BFS)

前面的文章中我们学习了图的基本概念和存储结构&#xff0c;大家可以通过下面的链接学习&#xff1a; 图的定义和基本术语 图的类型定义和存储结构 这篇文章就来学习一下图的重要章节——图的遍历。 目录 一&#xff0c;图的遍历定义&#xff1a; 二&#xff0c;深度优先…

【java计算机毕设】网上购书管理系统MySQL servlet JSP项目设计源代码 期末寒暑假作业 小组作业

目录 1项目功能 2项目介绍 3项目地址 1项目功能 【java计算机毕设】网上购书管理系统MySQL servlet JSP项目设计源代码 期末寒暑假作业 小组作业 2项目介绍 系统功能&#xff1a; servlet网上购书管理系统包括管理员、用户两种角色。 管理员功能包括订单管理&#xff08;已…

前端Vue组件化实践:自定义加载组件的探索与应用

在前端开发领域&#xff0c;随着业务逻辑复杂度的提升和系统规模的不断扩大&#xff0c;传统的开发方式逐渐暴露出效率低下、维护困难等问题。为了解决这些挑战&#xff0c;组件化开发作为一种高效、灵活的开发模式&#xff0c;受到了越来越多开发者的青睐。本文将结合实践&…

MySQL下载安装使用教程图文教程(超详细)

「作者简介」&#xff1a;冬奥会网络安全中国代表队&#xff0c;CSDN Top100&#xff0c;就职奇安信多年&#xff0c;以实战工作为基础著作 《网络安全自学教程》&#xff0c;适合基础薄弱的同学系统化的学习网络安全&#xff0c;用最短的时间掌握最核心的技术。 这一章节我们使…

Windows安装和使用Doccano标注工具

简介 开源链接&#xff1a;GitHub - doccano/doccano: Open source annotation tool for machine learning practitioners. Open source annotation tool for machine learning practitioners. Doccano是一款开源的文本标注工具&#xff0c;由人工智能公司Hironsan开发并在G…