Vue学习-Vue入门
Vue学习
一、Vue入门
1、 引入Vue
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
使用Vue有多种方式,我们入门阶段就使用下面的方式即可。
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
2、创建Vue实例
在下面,我们创建了一个Vue实例,el用于指定当前Vue为哪个容器服务,有三种方式指代分别是id选择器,class选择器和标签选择器(不能是html和body);data用于定义数据,数据供el所指定的容器去使用,可以写成对象和函数式;methods由于定义函数。
<script>//创建一个Vue对象var app=new Vue({//el用于指定当前Vue为哪个容器服务,值通常为css选择器字符串el:'#app',//id选择器,也就是<div id="app">// el:'.app',//class选择器//el:'div',//标签选择器(不能是heml和body)//data中用于定义数据,数据供el所指定的容器去使用,值可以写成对象和函数式//对象data:{msg:"Hello World!"},/*函数式data:{msg:"Hello World!"},*///函数methods:{show:function () {alert(this.msg)}}})
</script>
3、使用Vue
在这里,我们使用插值语法来显示上面data中所定义的数据msg的内容。
插值表达式语法
{{ 变量名/对象.属性名 }}
<div class="app"><!--插值语法-->{{msg}}
</div>
二、 Vue指令
1、显示文本和HTML
v-text //将数据解释为普通文本
v-html //如果是普通文本,则和v-text一样;如果是HTML,将数据解释为HTML
v-once //执行一次性地插值,当数据改变时,插值处的内容不会更新。
在下面,我们不仅显示了data中数据msg的值,还有一个新的数据ht和firstM。在这里我们注意一下,如果ht是一段HTML代码(如<h2> Hello World!</h2>
),那么v-html最终会将ht解释为HTML并显示Hello World!;对于v-once,它只会显示firstM最初的值,如果firstM发生改变,v-once所处的标签内容不会更新。
<div id="app"><h2 v-text="msg"></h2><h3>你好{{msg}}</h3><span v-html="ht"></span><input type="text" v-model:value="ht"><span v-once="firstM"></span>
</div>
2、为元素绑定事件
下面给出的是事件的完整写法和简写,值得注意的是,在methods的函数中,我们可以通过this.数据名的方式使用和修改数据。
v-on:click //单击事件
v-on:mouseenter //鼠标移入事件
v-on:dblclick //双击事件可以简写成
@click //单击事件简写
@mouseenter //鼠标移入事件
@dblclick //双击事件改变数据
this.数据名="???"
能学习Vue的都是有前端三剑客的基础的,下面就不过多赘述了。
<body>
<div id="app"><input type="button" value="单击事件" v-on:click="v_on"></input><input type="button" value="单击事件简写" @click="update"></input><input type="button" value="鼠标移入事件" @mouseenter="v_on"></input><input type="button" value="双击事件" @dblclick="v_on"></input>
</div><!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>var app=new Vue({el:'#app',//id选择器// el:'.app',//class选择器// el:'div',//标签选择器(除了html和body)data:{msg:"生命是什么?"},methods:{v_on:function () {alert(this.msg)},update:function (){if(this.msg==="已改变"){this.msg="生命是什么?"}else{this.msg="已改变"}this.v_on()}}})
</script>
</body>
3、控制元素的显示和隐藏
v-show和v-if的区别是,v-show在表达式为假时按F12检查代码其所在标签是存在的,而v-if所在的标签不存在。
//根据表达值的真假来切换元素的显示和隐藏
v-show //代码一直在v-if //表达式为假,代码直接不存在
v-else-if
v-else
下面代码是通过button的点击事件控制v-if和v-show的表达式的真假,以达到控制Hello World!的显示。
<div id="app"><input type="button" value="切换" @click="show"><br><span v-if="flag">Hello World!</span><br/><span v-show="flag">Hello World!</span>
</div><!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>var app=new Vue({el:"#app",data:{flag:true},methods:{show:function () {this.flag=!this.flag}}})
</script>
</body>
4、设置元素的属性
v-bin //设置元素的属性(比如src,title,class)v-bin:src="???"
v-bin:title="???"
v-bin:class="???"简写
:src="???"
:title="???"
:class="???"
5、列表显示v-for
代码中都有注释,这里就不过多赘述了。
<div id="app"><ul><!-- arr为数组或对象,item为其中的每一项,index为索引值,从零开始 --><li v-for="(item,index) in arr">第{{index}}位是{{item}}</li></ul><h2 v-for="(item,index) in str" v-bind:title="item.name">第{{index}}位是{{item.name}}</h2>
</div><!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>var app=new Vue({el:"#app",data:{arr:[1,2,3,4,5],str:[{name:"1"},{name:"2"},{name:"3"},]},methods:{show:function () {}}})
</script>
6、v-on补充
<!--传递自定义参数,事件修饰符--><input type="button" value="点击" @click="doIt(444,'你好')"><input type="text" @keyup="doIt(555,'你吃了吗?')"><input type="text" @keyup.enter="doIt(666,'你吃了吗?')"> //回车触发
7、v-model
v-model可以实现数据双向绑定,通过下面的代码可以知道,当在输入框中输入数据并按下回车,msg中的数据会变成你输入的内容。
v-model //获取和设置表单元素的值(双向数据绑定)
<!--改变输入框的值,数据msg的值也会同时变化-->
<div id="app"><input type="text" v-model="msg" @keyup.enter="show"><br>{{msg}}
</div>
8、常用内置指令
1. v-text : 更新元素的 textContent
2. v-html : 更新元素的 innerHTML
3. v-if : 如果为 true, 当前标签才会输出到页面
4. v-else: 如果为 false, 当前标签才会输出到页面
5. v-show : 通过控制 display 样式来控制显示/隐藏
6. v-for : 遍历数组/对象
7. v-on : 绑定事件监听, 一般简写为@
8. v-bind : 绑定解析表达式, 可以省略 v-bind
9. v-model : 双向数据绑定
10. v-cloak : 防止闪现, 与 css 配合: [v-cloak] { display: none }
9、自定义指令
在上面我们都是在使用Vue提供的指令,这些指令可以实现的功能有很多。但是,有些时候这些指令不能实现我们所需的功能时,我们可以自己定义指令。有下列两种方式。
1)、 注册全局指令
//第一个参数是指令的名字(不需要写上v-前缀)
//第二个参数可以是对象数据,也可以是一个指令函数
Vue.directive('my-directive', function(el, binding){
el.innerHTML = binding.value.toupperCase()
})
2)、注册局部指令
directives : {'my-directive' : {bind (el, binding) {el.innerHTML = binding.value.toupperCase()}}
}
3)、使用指令
自定义指令的使用方式和内置指令是差不多的。
v-my-directive='xxx'
三、 简单学习axios
引入axios
1、简介
Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器中。 它是 isomorphic 的(即同一套代码可以运行在浏览器和node.js中)。在服务端它使用原生 node.js http 模块, 而在客户端 (浏览端) 则使用 XMLHttpRequests。
2、引入
我们可以通过下列方式引用。
<!--引入axios-->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
3、get请求和post请求
在这里,我们先学习一下axios的其中两个请求get和post。两者的简单区别是get中的所有信息都在地址栏url中,而post的信息在请求体中。
下面为两种请求的写法
<!--发送get请求--><!--第一个参数为url,后可以加?和&接多个数据-->axios.get("https://autumnfish.cn/api/joke/list?num=3").then(function (response) {//回调函数,变量response为返回的数据console.log(response)},function (error) {console.log(error)})<!--发送post请求--><!--第一个参数为url,第二个参数为数据-->axios.post("https://autumnfish.cn/api/user/reg",{username:"jack"}).then(function (response) {console.log(response)},function (error) {console.log(error)})
4、完整写法
<div id="app"><input type="button" value="get" class="get"><input type="button" value="post" class="post">
</div><!--引入axios-->
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<!--发送get请求-->
<script>document.querySelector(".get").onclick=function () {axios.get("https://autumnfish.cn/api/joke/list?num=3").then(function (response) {//回调函数,变量response为返回的数据console.log(response)},function (error) {console.log(error)})}
<!--发送post请求-->document.querySelector(".post").onclick=function () {axios.post("https://autumnfish.cn/api/user/reg",{username:"jack"}).then(function (response) {console.log(response)},function (error) {console.log(error)})}
</script>
四、 小案例
Vue小案例-计数器
<!--
学习vue
实现计数器--><!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>vue-04</title>
</head>
<body>
<div id="app"><input type="button" value="增加" @click="add">{{num}}<input type="button" value="减小" @click="sub"></div><!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script>var app=new Vue({el:"#app",data:{num:1},methods:{add:function () {if(this.num>=10){alert("再加就到头了")}else{this.num++}},sub:function () {if(this.num==1){alert("你触碰到我的底线了")}else {this.num--;}}}})
</script>
</body>
</html>
axios小案例-获取笑话
<!--
学习Vue
axios
获取笑话
-->
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>vue-11</title>
</head>
<body>
<h1>Hello World!</h1>
<div id="app"><input type="button" value="获取笑话" @click="getJoke"><p>{{msg}}</p>
</div>
<!-- 开发环境版本,包含了有帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>var app=new Vue({el:'#app',//id选择器data:{msg:"很好笑的笑话"},methods:{getJoke:function () {_this=this//在axios里this会有变化,这里要用变量存起来axios.get("https://autumnfish.cn/api/joke").then(function (resp) {console.log(resp.data)_this.msg=resp.data;},function (error) {console.log(error)})}}})
</script>
</body>
</html>
相关文章:
Vue学习-Vue入门
Vue学习 一、Vue入门 1、 引入Vue Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库…...

【项目】bxg基于SaaS的餐掌柜项目实战(2023)
基于SaaS的餐掌柜项目实战 餐掌柜是一款基于SaaS思想打造的餐饮系统,采用分布式系统架构进行多服务研发,共包含4个子系统,分别为平台运营端、管家端(门店)、收银端、小程序端,为餐饮商家打造一站式餐饮服务…...

灌区流量监测设备-中小灌区节水改造
系统概述 灌区信息化管理系统主要对对灌区的水情、雨情、土壤墒情、气象等信息进行监测,对重点区域进行视频监控,同时对泵站、闸门进行远程控制,实现了信息的测量、统计、分析、控制、调度等功能。为灌区管理部门科学决策提供了依据…...

SpringBoot2核心功能 --- 指标监控
一、SpringBoot Actuator 1.1、简介 未来每一个微服务在云上部署以后,我们都需要对其进行监控、追踪、审计、控制等。SpringBoot就抽取了Actuator场景,使得我们每个微服务快速引用即可获得生产级别的应用监控、审计等功能。 <dependency><gro…...
python实战应用讲解-【numpy数组篇】常用函数(三)(附python示例代码)
目录 Python numpy.repeat() Python numpy.tile() Python numpy.asarray_chkfinite() Python numpy.asfarray() Python numpy.asfortranarray() Python numpy.repeat() Python numpy.repeat()函数重复数组中的元素 – arr. 语法 : numpy.repeat(arr, repetitions, axis …...

DIN论文翻译
摘要 在电子商务行业,利用丰富的历史行为数据更好地提取用户兴趣对于构建在线广告系统的点击率(CTR)预测模型至关重要。关于用户行为数据有两个关键观察结果:i) 多样性(diversity)。用户在访问电子商务网站时对不同种类的商品感兴趣。ii) 局部激活(local…...

python列表,元组和字典
1、python列表 1.1.列表的定义 list是一种有序的集合、基于 链表实现,name[ ] ,全局定义:list2list([ ])。 1.2下标索引 python不仅有负索引也有正索引。正索引从0开始,负索引从-1开始。这两个可以混用,但指向还是那个位置 a[0]a[-9]//length为10的数组a1.3列表的切片 列表可…...

300元左右的蓝牙耳机哪个好?300左右音质最好的蓝牙耳机
无线耳机是人们日常生活中必不可少的设备,无论是听音乐化石看电影都能获得身临其境的感觉,由于科技真在发展中,不断地的发生变化,百元价位就可以感受到不错的音色,下面小编整理了几款300左右音质表现不错的蓝牙耳机。 …...

【消息队列】聊一下生产者消息发送流程
消息发送流程 1.生产者main线程调用send发送消息,先走拦截器,然后会将消息进行序列化,然后选择对应的分区器,将消息发送到RecordAccumulator中,默认是32m 2.Sender线程会异步读取,要不数据达到batch的大小 …...

特斯拉和OpenAI的加持,马斯克简直人生赢家
赢家已定 商人行事,最重要的因素之一是利益驱动。这里,最服“马斯克”。 以马斯克为首的特斯拉公司周日宣布,将在上海新建一家超级工厂,专门生产该公司的储能产品Megapack。签约的特斯拉储能超级工厂项目也是该公司在美国本土以…...

优维低代码:第三方接口接入
优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。 连载…...
SQL 177. 第N高的薪水
SQL 177. 第N高的薪水数据需求解决方法1方法2题目 : https://leetcode.cn/problems/nth-highest-salary/ 数据 Create table If Not Exists Employee (Id int comment 主键列, Salary int comment 工资 );Truncate table Employee;insert into Employee (id, sala…...

14天手撸交互式问答数字人直播教程-课程计划
一、课程计划 二、时间安排 第01天:交互式问答数字人发展现状 从一个真实案例开始,介绍当前主流的交互式数字人平台,需求和应用场景,引入交互式数字人的交互流程和关键技术。后续整个直播系列的内容安排。 第02天:音…...

spring boot3.0新特性Http客户端远程调用
1、安装依赖 <!-- For reactive support --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-webflux</artifactId></dependency>2、项目结构 3、新建配置类WebConfig package com.exa…...
查询联系:多表查询 - 1
查询所有学生的 name,以及该学生在 score 表中对应的 c_no 和 degree 。 SELECT no, name FROM student; ---------------- | no | name | ---------------- | 101 | 曾华 | | 102 | 匡明 | | 103 | 王丽 | | 104 | 李军 | | 105 | 王芳…...

「Bug」OpenCV读取图像为 None 分析
头一次遇到 OpenCV 无法读取图像,并且没有任何提示,首先怀疑的就是中文路径,因为大概率是这个地方出错的,但是修改完依旧是None,这就很苦恼了,分析了下出现None的原因,大概有以下三种情况&#…...

EVO——视觉里程计/SLAM轨迹评估工具
EVO——SLAM轨迹精度评估软件 EVO简介 evo是一款用于视觉里程计VIO和slam轨迹评估 Python 包(Linux / macOS / Windows / ROS)。能够绘制轨迹,评估轨迹与真值的误差。支持多种数据集的轨迹格式(TUM、KITTI、EuRoC的Mav、ROSbag&…...

TCP为什么要三次握手,而不是两次或四次?
文章目录TCP为什么要三次握手,而不是两次或四次?三次握手才可以阻止重复历史连接的初始化(主要原因)同步双方初始序列号避免资源浪费小结TCP为什么要三次握手,而不是两次或四次? TCP连接时用于保证可靠性和…...

git 命令:工作日常使用
git start 存储分支 git start list 查看所有存储 拉取最新master 合并到自己分支: git remote add [远程名称] [远程仓库链接] //关联(添加)远程仓库; 第一步:查看分支在哪里,是自己的吗,添加暂存区,添加到仓…...

Http和Https
http和https的区别 开销:HTTPS 协议需要到 CA 申请证书,一般免费证书很少,需要交费;资源消耗:HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 ssl 加密传输协议,需要…...

基于uniapp+WebSocket实现聊天对话、消息监听、消息推送、聊天室等功能,多端兼容
基于 UniApp + WebSocket实现多端兼容的实时通讯系统,涵盖WebSocket连接建立、消息收发机制、多端兼容性配置、消息实时监听等功能,适配微信小程序、H5、Android、iOS等终端 目录 技术选型分析WebSocket协议优势UniApp跨平台特性WebSocket 基础实现连接管理消息收发连接…...

YSYX学习记录(八)
C语言,练习0: 先创建一个文件夹,我用的是物理机: 安装build-essential 练习1: 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件,随机修改或删除一部分,之后…...

深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放
简介 前面两期文章我们介绍了I2S的读取和写入,一个是通过INMP441麦克风模块采集音频,一个是通过PCM5102A模块播放音频,那如果我们将两者结合起来,将麦克风采集到的音频通过PCM5102A播放,是不是就可以做一个扩音器了呢…...

MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
06 Deep learning神经网络编程基础 激活函数 --吴恩达
深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础
第三周 Day 3 🎯 今日目标 理解类(class)和对象(object)的关系学会定义类的属性、方法和构造函数(init)掌握对象的创建与使用初识封装、继承和多态的基本概念(预告) &a…...

沙箱虚拟化技术虚拟机容器之间的关系详解
问题 沙箱、虚拟化、容器三者分开一一介绍的话我知道他们各自都是什么东西,但是如果把三者放在一起,它们之间到底什么关系?又有什么联系呢?我不是很明白!!! 就比如说: 沙箱&#…...