【Vue.js】快速入门与工作生命周期的使用

news2024/10/1 15:19:21

                                       🎬 艳艳耶✌️:个人主页

                                       🔥 个人专栏 :《Spring与Mybatis集成整合》 《springMvc使用》

                                       ⛺️ 生活的理想,为了不断更新自己 !
 

目录

​编辑

1.Vue是什么

2.Vue的特点及优势 

3. 使用Vue的详细步骤

3.1.导入

3.2.定义边界

3.创建vue实例

4.Vue的基本语法

4.1v-model

4.2v-bind:value

4.3事件绑定

5. vue的生命周期 


1.Vue是什么

 Vue.js(/vjuː/,或简称为Vue)是一个用于创建用户界面的开源JavaScript框架,也是一个创建单页应用的Web应用框架。它提供了一套声明式的、组件化的编程模型,帮助你高效地开发用户界面。Vue.js的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合.

2.Vue的特点及优势 

  • 响应式编程:Vue.js的核心是一个响应的数据绑定系统,当数据发生变化时,视图会自动更新
  • 组件化:Vue.js将组成一个页面的HTML、CSS和JS合并到一个组件中,可以被其他组件或页面引入而重复利用
  • 轻量级框架:Vue.js是一个轻量级的框架,易于学习和使用
  • 简单易学:Vue.js的学习曲线非常平缓,易于上手
  • 双向数据绑定:Vue.js支持双向数据绑定,可以轻松地将数据从模型传递到视图,反之亦然
  • 虚拟DOM:Vue.js使用虚拟DOM来提高性能
  • 运行速度快:Vue.js的运行速度非常快

注意:MVVM是什么?

        MVVM是Model-View-ViewModel的缩写,是一种软件架构设计模式。它是一种简化用户界面的事件驱动编程方式,它是不允许数据和视图直接通信的,只能通过ViewModel来通信 

        在MVVM模式中,Model是数据层,用于存储数据和对数据进行增删改查;View是视图层,也就是UI界面,用于将数据模型转化成UI展现出来;ViewModel是一个同步View和Model的对象,它负责处理用户的交互事件,以及将用户的操作传递给Model进行相应的处理,最后将处理结果返回给View进行展示.

3. 使用Vue的详细步骤

3.1.导入

<!-- 在线导入 -->
<!-- 开发环境版本,包含了用帮助的命令行警告 -->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

3.2.定义边界

<!-- 定义边界 -->
		<div id="app">
			<h3>{{msg}}</h3>
			<input type="text" v-model="msg" />
		</div>

3.创建vue实例

<script type="text/javascript">
		// 构建vue实例 绑定边界	
		new Vue({
			el:'#app',
			data(){
				return {msg:'vue雷猴啊!!!'};
			}
		})
	</script>

 测试结果:

4.Vue的基本语法

4.1v-model

        在Vue中,v-model是一个指令,用于在表单控件元素上创建双向数据绑定。它实际上是语法糖,等同于v-bind和v-on的结合体

<input type="text" v-model="msg" />
<!--v-model指令的值是message变量,这意味着输入框中的值将与message变量保持同步。
	当用户在输入框中输入内容时,message变量的值会自动更新;
	反之亦然,如果message变量的值发生变化,输入框中的值也会随之更新 -->

 测试结果:

代码:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<!-- 定义边界 -->
		<div id="app">
			<h3>{{msg}}</h3>
			<input type="text" v-model="msg" />
		</div>
	</body>
	<script type="text/javascript">
		// 构建vue实例 绑定边界	
		new Vue({
			el:'#app',
			data(){
				return {msg:'vue雷猴啊!!!'};
			}
		})
	</script>
 
</html>

4.2v-bind:value

        在Vue中,v-bind是一个指令,用于将元素的属性与Vue实例的数据进行绑定。其中,:value是v-bind的一个参数,表示要绑定的属性名

4.3事件绑定

<!--完整写法-->
<button v-on:事件名="函数名/vue表达式">点我</button>
<!--简化写法-->
<button @事件名="函数名/vue表达式">点我</button>

Vue支持html中所有已知事件. 如: @click, @submit等, 只不过是将之前的on全部换成了@ 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title></title>
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<!-- 定义边界 -->
		<div id="app">
			<h3>{{msg}}</h3>
			<input type="text" v-model="msg" />
			<button @click="show">点我</button>
		</div>
	</body>
	<script type="text/javascript">
		// 构建vue实例 绑定边界	
		new Vue({
			el:'#app',
			data(){
				return {msg:'vue雷猴啊!!!'};
			},
			methods: {
					show(){
					    alert("艳艳耶!!!");
							}
						},

		})
	</script>
 
</html>

效果展示:  

5. vue的生命周期 

  • beforeCreate: 在实例被创建之前调用,此时数据观测 (data observer) 和事件配置 (event/watcher setup) 尚未初始化。
  • created:在实例创建完成后被调用。此时已完成数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 没有引用。
  • beforeMount:在挂载开始之前被调用。此时模板编译已完成,但是尚未将模板渲染到页面中。
  • mounted:在挂载完成后被调用。此时模板已经被渲染到页面,并且组件已经可见。
  • beforeUpdate:在数据更新之前调用,发生在虚拟 DOM 重新渲染和打补丁之前。你可以在该钩子中对更新之前的状态做一些操作。
  • updated:在数据更新之后调用,发生在虚拟 DOM 重新渲染和打补丁之后。这里可以操作更新后的 DOM。
  • beforeDestroy:在实例销毁之前调用。这个时候实例还完全可用。
  • destroyed:在实例销毁之后调用。这个时候 Vue 实例的所有指令都已解绑,所有事件监听器都已被移除。

                                                      简易图👇👇👇

代码演示:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<script src="https://cdn.bootcss.com/vue/2.6.10/vue.js"></script>
	</head>
	<body>
		<div id="d1">
			<div>number:{{number}}</div>
			<div>{{detail()}}</div>
			<input type="text" v-model="number" />
		</div>
		<script>
			var data = {
				number:999,
				msg:null
			};
			var vm = new Vue({
				el:'#d1',
				data:data,
				methods:{
					detail:function(){
						return "使用方法来插值:"+this.msg;
					}
				},
				beforeCreate:function(){
		            console.log('beforeCreate:刚刚new Vue()之后,这个时候,数据还没有挂载呢,只是一个空壳')           
		            console.log(this.msg)//undefined
		            console.log(document.getElementsByClassName("myp")[0])//undefined
		        },
		        created:function(){
		            console.log('created:这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数')
		            this.msg+='!!!'
		            console.log('在这里可以在渲染前倒数第二次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取')
		            console.log('接下来开始找实例或者组件对应的模板,编译模板为虚拟dom放入到render函数中准备渲染')
		        },
		        beforeMount:function(){
		            console.log('beforeMount:虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated')
		            this.msg+='@@@'
		            console.log('在这里可以在渲染前最后一次更改数据的机会,不会触发其他的钩子函数,一般可以在这里做初始数据的获取')
		            console.log(document.getElementsByClassName("myp")[0])//undefined
		            console.log('接下来开始render,渲染出真实dom')
		        },
		        // render:function(createElement){
		        //     console.log('render')
		        //     return createElement('div','hahaha')
		        // },
		        mounted:function(){ 
		            console.log('mounted:此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了')
		            console.log(document.getElementsByClassName("myp")[0])
		            console.log('可以在这里操作真实dom等事情...')
		
		        //    this.$options.timer = setInterval(function () {
		        //        console.log('setInterval')
		        //         this.msg+='!'  
		        //    }.bind(this),500)
		        },
		        beforeUpdate:function(){
		            //这里不能更改数据,否则会陷入死循环
		            console.log('beforeUpdate:重新渲染之前触发')
		            console.log('然后vue的虚拟dom机制会重新构建虚拟dom与上一次的虚拟dom树利用diff算法进行对比之后重新渲染')         
		        },
		        updated:function(){
		            //这里不能更改数据,否则会陷入死循环
		            console.log('updated:数据已经更改完成,dom也重新render完成')
		        },
		        beforeDestroy:function(){
		            console.log('beforeDestory:销毁前执行($destroy方法被调用的时候就会执行),一般在这里善后:清除计时器、清除非指令绑定的事件等等...')
		            // clearInterval(this.$options.timer)
		        },
		        destroyed:function(){
		            console.log('destroyed:组件的数据绑定、监听...都去掉了,只剩下dom空壳,这里也可以善后')
		        }
			});
		</script>
	</body>
</html>

测试结果: 

修改之后:

                                                                    今日分享结束! 

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

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

相关文章

资源超分是什么?

经常听到资源超分&#xff0c;但是具体指的什么还不清楚&#xff0c;哪里来的术语 https://www.modb.pro/db/199368 3&#xff0e;超线程技术管理及如何开启 超线程是intel研发的技术&#xff0c;利用特殊的硬件指令&#xff0c;把一个物理CPU核模拟成两个逻辑内核&#xff…

点成案例丨温度梯度培养箱在探究温度对植物发芽影响中的应用

变暖的气候与受影响的种子 全球变暖是指由于人类工业化和燃烧化石燃料等活动释放了大量温室气体&#xff0c;这些气体进入大气层导致地球气温在过去几十年里逐渐升高的现象。全球气候变暖带来了一系列严重的环境问题&#xff1a;温度升高导致冰川和极地冰层融化&#xff0c;海…

中秋节要来了,程序猿的你还要加班吗

其他人的中秋节是这样的&#xff1a; 明月松间照&#xff0c;清泉石上流。 程序猿的中秋节是这样的&#xff1a; 明月几时有&#xff1f;把酒问青天。 首先&#xff0c;跟大家开个玩笑。希望中秋节的你&#xff0c;不要加班&#xff0c;毕竟身体是革命的本钱嘛。 中秋&…

初识 python 装饰器

1.什么是装饰器&#xff1f; 装饰器&#xff08;Decorator&#xff09;是Python中一种用于修改函数或类的行为的设计模式。装饰器允许您在不修改原始函数或类的情况下&#xff0c;给它们添加新的功能&#xff0c;这使得代码更具可重用性和可扩展性。简而言之&#xff0c;就是一…

17.适配器模式(Adapter)

意图&#xff1a;将一个类的接口转换为Client希望的另一个接口&#xff0c;使得原本由于接口不兼容而不能一起工作的那些类在一起工作。 UML图 Target&#xff1a;定义Client使用的与特定领域相关的接口。 Client&#xff1a;与符合Target接口的对象协同工作。 Adaptee&#xf…

华为OD机试 - 求最多可以派出多少支团队 - 双指针(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08;JAVA&#xff09;真题&#xff08;A卷B卷&#…

Linux提权辅助工具Linux Exploit Suggester

Linux提权辅助工具Linux Exploit Suggester 1.概述2.工具使用3.已经有人二开了 1.概述 Linux Exploit Suggester是一款根据操作系统版本号自动查找相应提权脚本的工具 Linux Exploit Suggester的官方下载地址为https://github.com/PenturaLabs/Linux_Exploit_Suggester 2.工具…

Linux内核源码分析 (B.4) 深度剖析 Linux 伙伴系统的设计与实现

Linux内核源码分析 (B.4) 深度剖析 Linux 伙伴系统的设计与实现 文章目录 1\. 伙伴系统的核心数据结构2\. 到底什么是伙伴3\. 伙伴系统的内存分配原理4\. 伙伴系统的内存回收原理5\. 进入伙伴系统的前奏5.1 获取内存区域 zone 里指定的内存水位线5.2 检查 zone 中剩余内存容量…

基于Java的公务员考试资料共享平台的设计与实现

前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌&#x1f497; &#x1f447;&#x1f3fb;…

JavaScript中常用的输入输出语句介绍

在日常开发中&#xff0c;为了方便数据的输入和输出&#xff0c;JavaScript提供了一些常用的输入输出语句&#xff0c;具体如表1-3所示。 表1常用的输入输出语句 接下来将分别演示document.write0、console.log0和promptO的使用。 1. document.write() document.write0的输出…

mysql大数据量 分页查询优化

最近我老表问我一个面试问题&#xff0c;如果数据量很大&#xff0c;分页查询怎么优化。 个人觉得无非就是sql优化&#xff0c; 那无非就是走索引&#xff0c; 避免回表查询&#xff08;覆盖索引&#xff0c;也就是不要用select * &#xff0c;走主键索引&#xff0c;叶子节点有…

基础算法--双指针算法

双指针算法 1.基本介绍 严格的来说&#xff0c;双指针只能说是是算法中的一种技巧。 双指针指的是在遍历对象的过程中&#xff0c;不是普通的使用单个指针进行访问&#xff0c;而是使用两个相同方向&#xff08;快慢指针&#xff09;或者相反方向&#xff08;对撞指针&#…

起底交易所JPEX:传销、诈骗,网红编织的香港加密新规第一案

香港的加密之火还在萌芽&#xff0c;就被迎头浇了一桶透心凉的冷水。 9月13日&#xff0c;香港证监会罕见点名一家虚拟资产平台JPEX&#xff0c;这也是自香港加密新规后&#xff0c;首个遭到红牌警告的虚拟资产交易所。 据证监会官网内容&#xff0c;JPEX通过社交媒体网红及场外…

MySQL进阶篇3-视图和存储过程以及触发器的学习使用

视图/存储过程&#xff08;函数&#xff09;/触发器 视图&#xff1a;由表动态生成&#xff0c;虚拟的表&#xff0c;保存的是sql的逻辑。 创建视图&#xff1a; ​ create [or replace] view viewName【列名列表】 as select 语句 [with [cascaded|local] check option] 修…

开源日报 0823 | NLP 民工的乐园:中文 NLP 资源库的终极指南

文章中介绍了几个非常有用的开源项目&#xff0c;适用于不同领域的开发者和研究者。其中&#xff0c;NLP 民工的乐园是一个非常全面的中文 NLP 资源库&#xff0c;提供了丰富的语料库、词库、词法工具和预训练语言模型&#xff0c;适用于不同的 NLP 相关任务。Poetry 是一个简化…

TOWE一转二家用无线遥控插座,让生活变得简单

随着科技的进步&#xff0c;人们的生活方式正在发生改变&#xff0c;越来越多的智能家居产品进入我们的生活中&#xff0c;为我们的生活带来了极大的便利。无线遥控插座作为一种集成了无线遥控技术与插座功能的创新产品&#xff0c;在家庭、办公、商业场景有着广泛的应用。同为…

q-learning强化学习使用基础

强化学习 通过策略的方式来学习&#xff0c;q-learing&#xff08;马尔科夫链模型&#xff09; 马尔科夫链&#xff1a;奖励*折扣因子&#xff0c;R(t)reward(1)yR(t1)&#xff0c;马尔可夫链多次迭代后分布趋于稳定所以可以得到最优解 q-learning 构建qtable&#xff0c;二…

亿发2023智能ERP生产系统解决方案实施,规范中大型企业生产精细化

随着制造水平的不断增强&#xff0c;传统工厂的管理方式已经不能满足现代制造的要求。为了确保公司战略目标的实现&#xff0c;中大型制造企业需要借助信息技术来强化对业务流程的管理&#xff0c;而生产制造ERP系统的实施已成为企业走向信息化的关键战略环节。 工厂信息化建设…

YOLOv5算法改进(19)— 更换NMS(DIoU-NMS、CIoU-NMS、EIoU-NMS、GIoU-NMS 、SIoU-NMS和Soft-NMS)

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。YOLOv5中的NMS指非极大值抑制&#xff08;Non-Maximum Suppression&#xff09;&#xff0c;它是一种用于目标检测算法中的后处理技术。在检测到多个重叠的边界框时&#xff0c;NMS可以帮助选择最佳的边界框。NMS的工作原理…

main函数中两个参数的作用

一般我们在使用C语言时不太用到main函数自带的参数&#xff0c;因此最常见的main函数就像下面这样。 int main() {...... }上面这种main函数是省略了其形参的&#xff0c;C语言中规定main函数的参数只能有两个&#xff0c;习惯上这两个参数写为argc和argv&#xff0c;其中&…