前端学习--Vue(2)常见指令

news2024/11/17 23:36:56

一、Vue简介

1.1 概念

Vue是一套用于构建用户界面的前端框架

框架:现成解决方案,遵守规范去编写业务功能

指令、组件、路由、Vuex、vue组件库

1.2 特性

数据驱动视图

vue连接页面结构和数据,监听数据变化,自动渲染页面结构

数据变化会驱动视图自动更新

好处:程序员只管把数据维护好,Vue会自动渲染

是单向数据绑定:数据变化导致页面结构变化

双向数据绑定

form负责采集数据,ajax负责提交数据

双向数据流动:js中的数据填充到页面上需要操作dom;用户填写的数据取出来更新js对象也需要操作dom

填写表单时,双向数据绑定可以在不操作dom元素的前提下,自动把用户填写的内容同步到数据源中

 1.3 MVVM

Model 表示当前页面渲染时所依赖的数据源。

View 表示当前页面所渲染的 DOM 结构。

ViewModel 表示 vue 的实例,它是 MVVM 的核心,把页面的数据源和页面结构连接在一起。

1.4 版本

2.x 3.x

二、Vue基本使用

2.1 体验

    <div id="app">{{ username }}</div>
    <!-- 导入Vue的库文件,就有了Vue构造函数 -->
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        //创建Vue实例对象
        const app = new Vue({
            //当前的vue实例要控制页面的哪个区域,按照css选择器的格式
            el:'#app',
            // data对象就是要渲染到页面上的数据
            data:{
                username:'zhangsan'
            }
        })
    </script>

2.2 调试程序

2.3 指令

vue为开发者提供的模板语法,用于辅助开发者渲染页面的基本结构

按照不同用途分为以下几类:

内容渲染指令、数据绑定指令、事件绑定指令、双向绑定指令、条件渲染指令、列表渲染指令

2.3.1 内容渲染指令

v-text(几乎不用)会覆盖标签内部原本的内容

{{ }} 插值表达式 只是内容占位符

v-html 可以渲染html标签

    <div id="app">
        <p v-text="username">姓名</p>
        <p>性别:{{ gender }}</p>
        <p v-text="school">学校</p>
        <p v-html="info"></p>
        <p v-text="info"></p>
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                username:'zhangsan',
                school:'Fudan',
                gender:'female',
                info:'<h4 style="color:hotpink;font-weight:bold;">大家好!</h4>'
            }
        })
    </script>

 2.3.2 属性绑定指令

v-bind 为元素属性动态绑定数据

    <div id="app">
        <input type="text" v-bind:placeholder="tips">
        <!-- v-bind:可以简写为: -->
        <img v-bind:src="photo" alt="" style="height:150px; width:150px;">
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                tips:'啦啦啦',
                photo:'./images/猫咪.jpg'
            }
        })
    </script>

使用js表达式绑定数据

v-bind绑定的属性值双引号内直接按照js语法写

 2.3.3 事件绑定指令

v-on 用来辅助程序员为 DOM 元素绑定事件监听

    <div id="app">
        <p>count的值是 {{ count }}</p>
        <!-- 绑定事件可以通过()传参 -->
        <button v-on:click="add(2)"> +1 </button>
        <!-- v-on:可以简写为@ -->
        <button @click="sub"> -1 </button>
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                count:1,
            },
            methods:{
                //定义事件处理函数
                add(n){
                    //修改data中的数据通过this
                    this.count+=n
                },
                sub(){
                    this.count-=1
                }
            }
        })
    </script>

$event vue提供的原生dom事件对象e

事件传参后,默认参数e会被覆盖,$event防止e被覆盖掉

    <div id="app">
        <button v-on:click="change($event, 1)"> 变色 </button>
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                count:1,
            },
            methods:{
                change(e,n){
                    this.count += n
                    if(this.count % 2 === 0){
                        e.target.style.backgroundColor="pink"
                    }else{
                        e.target.style.backgroundColor="red"
                    }
                }
            }
        })
    </script>

2.3.4 事件修饰符

.prevent阻止默认行为(比如a的跳转)
.stop阻止事件冒泡
.capture以捕获方式触发当前事件的处理函数
.once绑定的事件只有1次
.self只有event.target是当前元素自身时触发事件处理函数
     <div id="app">
        <a href="http://www.baidu.com" @click.prevent="notJump">百度</a>
        <div class="box" @click="father">
            <button @click.stop="son">点我</button>
        </div>
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                count:1,
            },
            methods:{
                notJump(){
                    console.log('dont jump')
                },
                son(){
                    console.log('click son')
                },
                father(){
                    console.log('click father')
                }
            }
        })
    </script>

2.3.5 按键修饰符

在监听键盘事件时,我们经常需要判断详细的按键。此时,可以为键盘相关的事件添加按键修饰符

    <div id="app">
        <input type="text" @keyup.a="keyA" @keyup.enter="clear">
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                count:1,
            },
            methods:{
                keyA(){
                    console.log('按了a键哦')
                },
                clear(e){
                    e.target.value = ''
                }
            }
        })
    </script>

2.3.6 双向绑定指令

v-model

与v-bind注意区分,v-bind只能将数据传到页面,v-model也可以将页面变化传给数据

    <div id="app">
        <p>你好,我的名字是 {{ uname }}</p>
        <input type="text" v-model="uname">
        <input type="text" :value="uname">
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                uname:'cat'
            }
        })
    </script>

v-model修饰符

.number将用户输入转换为数值类型
.trim自动过滤用户输入的首位空格符
.lazy在change时而非input时更新
    <div id="app">
        <input type="text" v-model.number="n1"> + <input type="text" v-model.number="n2">
        = <span>{{n1 + n2}}</span>
        <br>
        <input type="text" v-model.trim="uname">
        <button @click="getUname">获取用户名</button>
        <!-- .lazy类似防抖 -->
        <input type="text" v-model.lazy="uname">
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                n1:1,
                n2:2,
                uname:'zs'
            },
            methods:{
                getUname(){
                    console.log(this.uname)
                }
            }
        })
    </script>


2.3.7 条件渲染指令

控制dom元素的显示和隐藏

v-if 动态增删元素 如果某些元素不要被展示,而且后期这个元素也不太需要被展示出来

v-show 操纵display属性 如果需要频繁切换,该指令性能更好

    <div id="app">
        <p v-if="flag">我是v-if</p>
        <p v-show="flag">我是v-show</p>
        <button @click="changeState">切换</button>
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                flag:'ture'
            },
            methods:{
                changeState(){
                    this.flag = !this.flag
                }
            }
        })
    </script>
    

v-else-if  v-else

必须配合v-if一起使用 内容可以给判断条件

2.3.8 列表渲染

v-for

<div id="app">
        <ul>
            <!-- 使用v-for指令就一定要绑定:key属性 -->
            <!-- key必须是字符串或数字,并且不允许重复 -->
            <li v-for="i in list" :key="i.id">{{ i.id }}  {{ i.name }}</li>
        </ul>
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const app = new Vue({
            el:'#app',
            data:{
                list:[
                    {id:1,name:'andy'},
                    {id:2,name:'jack'},
                    {id:3,name:'rose'},
                    {id:4,name:'ben'}
                ]
            }
        })
    </script>

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

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

相关文章

【遗传算法】【处理图像类问题】

文章目录 一、前言二、问题描述三、算法介绍四、其他知识点Reference 一、前言 近期感兴趣的算法&#xff0c;以前没这么好奇过一个算法。时间没想象的焦虑&#xff0c;认真做一些事情算法入门篇 二、问题描述 从前&#xff0c;一群扇贝在海岸边悠哉游哉地生活着。它们衣食不…

亚马逊云科技宣布推出一个新的开源示例应用程序

5月5日&#xff0c;亚马逊云科技宣布推出一个新的开源示例应用程序&#xff0c;这是一个虚构的二手书电子商务商店&#xff0c;被称之为Bob’s Used Books&#xff0c;可供使用亚马逊云科技的.NET开发人员使用。“亚马逊云科技的.NET宣传和开发团队定期与客户交谈&#xff0c;在…

如何科学地利用高光谱图像合成真彩色RGB图像?

如何科学地利用高光谱图像合成真彩色RGB图像? 1. 前言 参考链接: 色匹配函数是什么&#xff1f; - 知乎 (zhihu.com) 23. 颜色知识1-人类的视觉系统与颜色 - 知乎 (zhihu.com) 色彩空间基础 - 知乎 (zhihu.com) 色彩空间表示与转换 - 知乎 (zhihu.com) CIE XYZ - fresh…

Golang笔记:使用melody包进行WebSocket通讯

文章目录 目的使用示例与说明总结 目的 WebSocket是Web开发应用中非常常用的功能&#xff0c;用于客户端和服务器间长时间的实时双向数据通讯。Golang中官方并没有实现这个功能&#xff0c;需要借助第三方的包来实现。 目前被最广泛使用的包是 gorilla/websocket https://pkg…

Host头攻击

转载与&#xff1a;https://blog.csdn.net/weixin_47723270/article/details/129472716 01 HOST头部攻击漏洞知识 Host首部字段是HTTP/1.1新增的&#xff0c;旨在告诉服务器&#xff0c;客户端请求的主机名和端口号&#xff0c;主要用来实现虚拟主机技术。 运用虚拟主机技术&a…

第八章:C语言的简单指针

谈起指针&#xff0c;简直就是谈虎色变&#xff0c;学习C语言的人都知道&#xff0c;指针的难度&#xff0c;就好像高中的导数一样&#xff0c;难道离谱&#xff0c;但是但是&#xff0c;别慌呀&#xff0c;咱们慢慢来&#xff0c;空杯心态&#xff0c;一步一个脚印&#xff0c…

【STM32】STM32使用继电器

STM32使用继电器 其实继电器简单来说就是一个开关&#xff0c;VCC表示电源正极、GND表示电源负极、IN表示信号输入脚&#xff0c;COM表示公共端&#xff0c;NC&#xff08;normal close&#xff09;表示常闭端&#xff0c;NO(normal open)表示常开端。一般情况下是常闭状态。 …

为数字人充值AI情商 小冰“克隆人”要卖给谁?

近日&#xff0c;小冰公司启动“GPT克隆人计划”&#xff0c;据悉最短只要采集三分钟数据&#xff0c;就能帮助用户创造源于本人性格、技能、声音、外貌的AI克隆人&#xff0c;如同拥有“平行世界的第二人生”。 这不免让人想起了《流浪地球2》里华仔为剧中女儿“数字续命”的…

chatgpt赋能Python-python3_2__1

Python3-2<<1&#xff1a; 了解运算符的使用和优先级 Python是一种优雅而高效的编程语言&#xff0c;而Python3-2<<1是一个关于运算符优先级的例子&#xff0c;值得我们深入探讨。 在这篇文章中&#xff0c;我们将介绍Python3中运算符的优先级&#xff0c;并对其中…

chatgpt赋能Python-python3_6怎么用

Python3.6是什么&#xff1f; Python是一种非常流行的编程语言&#xff0c;旨在提供简洁、易读且易于维护的代码。Python3.6是该语言的下一个主要版本&#xff0c;带来了一些改进并改进了现有功能&#xff0c; Python3.6有哪些新特性&#xff1f; 字典内置方法&#xff0c;支…

chatgpt赋能Python-python3_53怎么安装

Python3.5.3安装方法及注意事项 Python是一种高级编程语言&#xff0c;被广泛应用于科学&#xff0c;数学&#xff0c;机器学习等领域。在本文中&#xff0c;我们将介绍如何安装Python 3.5.3版本&#xff0c;并提供注意事项以确保安装过程顺利进行。 步骤1&#xff1a;下载Py…

生态碳汇涡度通量数据分析

生态碳汇涡度相关监测与通量数据分析 朱老师&#xff08;副教授&#xff09;&#xff1a;来自国内重点高校&#xff0c;长期从事涡度通量观测与分析研究&#xff0c;发表SCI论文多篇&#xff0c;主持国家与地方科研项目多个&#xff0c;在生态环境数据处理与分析中具有丰富的实…

java企业车辆管理系统myeclipse定制开发mysql数据库网页模式java编程jdbc

一、源码特点 java企业车辆管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助 mysql数据库&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 java企业车辆管理系统myeclipse定制开发mysql 二、功能介绍 此次系统…

navicat连接mysql数据库密码忘记了快速找回

本机环境&#xff1a; mac 12.2.1 mysql8.0.3 问题&#xff1a; 连接navicat时&#xff0c;报错Access denied for user ‘root‘‘localhost‘ (using password: YES) 解决&#xff1a; 1.在navicat中导出xxx.ncx文件 勾选Export Password&#xff0c;选择要输出的文件目录…

nvidia-smi 参数详解

nvidia-smi 参数详解 参数详情GPU本机中的GPU编号&#xff0c;有多块显卡的时候从0开始&#xff0c;图中的GPU编号为0Fan风扇转速&#xff0c;N/A表示没有风扇NameGPU类型&#xff0c;图中GPU为NVIDIA GeForce GTX 1050TiTempGPU温度PerfGPU性能状态&#xff0c;从P0(最大性能)…

视频怎么转化为mp3,5种高效方法任选

视频怎么转化为mp3呢&#xff1f;想必这是我们工作过程中经常遇见的问题。众所周知&#xff0c;MP3格式是一种常见的音频格式&#xff0c;支持多种音频播放器和设备。通过将视频转换为MP3格式&#xff0c;用户可以方便地将视频的音频部分提取出来&#xff0c;保存为与视频大小不…

ChatGPT Plugin已正式上线 - 如何优先使用?

写在前面&#xff1a;博主是一只经过实战开发历练后投身培训事业的“小山猪”&#xff0c;昵称取自动画片《狮子王》中的“彭彭”&#xff0c;总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域&#xff0c;如今终有小成…

KDE Frameworks 5.106改进了Breeze图标、Plasma浏览器集成等功能

导读KDE项目今天发布了KDE Frameworks 5.106&#xff0c;作为KDE Frameworks 5的另一个月度更新&#xff0c;该集合有80多个Qt的附加库&#xff0c;为KDE Plasma桌面环境和KDE Gear软件套件提供通用功能。 主要的KDE Frameworks 6系列的工作仍在继续&#xff0c;但这并不意味着…

指数加权平均值滤波Exponential Weighting Method(博途SCL功能块)

在了解指数加权均值滤波算法之前大家可以熟悉下滑动平均值滤波(Lamuda=1.0时,指数加权滤波和滑动平均值滤波算法一模一样),滑动平均值滤波算法的详细介绍,请参看下面文章博客,这里不再赘述。 博途PLC各种平均值滤波算法对比(SCL+梯形图代码)_博途数字滤波梯形图_RXXW_…

如何在金融行业运用IPD?

随着经济体制和金融体制朝市场化方向的不断发展&#xff0c;我国金融市场建设取得了突破性进展。我国金融机构规模不断扩大&#xff0c;不仅种类非常齐全&#xff0c;市场参与主体日趋广泛&#xff0c;极大地满足了人们日益增长的金融需求。基本形成了初具规模、分工明确的市场…