(vue的入门

2023-09-18 10:17:18

一. Vue是什么

Vue(发音为/“vjuː”/,类似于"view")是一套用于构建用户界面的渐进式JavaScript框架。它是一个开源的、轻量级的MVVM(模型-视图-视图模型)框架,专注于实现数据驱动的UI组件化开发。Vue提供了一种简单、灵活且高效的方式来构建交互式的Web界面。

二. Vue的特点及优势

简洁易学: Vue的API简单直观,容易上手,文档详细清晰,对于新手也能快速入门。
数据驱动: Vue采用双向数据绑定的方式,通过响应式的数据绑定机制,使得数据的变化能够自动更新到UI层,减少手动操作DOM的繁琐过程。
组件化开发: Vue采用组件化的思想,将页面拆分成多个可复用的组件,每个组件都有自己的内部逻辑和样式,便于开发、测试和维护。
轻量高效: Vue的体积非常小巧,加载速度快,性能高效,即使在低配置的设备上也能流畅运行。
生态丰富: Vue拥有庞大的社区支持和活跃的开发者,提供了许多插件、工具和第三方库,可以满足各种需求。

三. 使用Vue的详细步骤

导入:在HTML文件中引入Vue的脚本文件。

<!-- 在线导入 -->

<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>

<script src="https://cdn.jsdelivr.net/npm/vue"></script>
 

定义边界

<div id="app">
			{{msg}} 
			<input v-model="msg" />
		</div>

绑定边界

<script type="text/javascript">
		new Vue({
			el:"#app",
			data(){
				return  {msg:null}
			},
			methods:{
				tan(){
					alert(this.msg);
				}
			}
			
		})
			</script>

四. Vue的基本语法

v-model:用于在表单输入元素与Vue实例之间双向绑定数据。

<!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">
			
			{{msg}} 
			<input v-model="msg" />
		</div>
			<script type="text/javascript">
		new Vue({
			el:"#app",
			data(){
				return  {msg:null}
			}
			}
			
		})
			</script>
	</body>
</html>

在这里插入图片描述

v-bind:用于动态地将元素或组件的属性绑定到Vue实例的数据上。

事件绑定:使用v-on指令将事件监听器绑定到DOM元素上。
点击我

五. Vue的生命周期

Vue实例有一系列的生命周期钩子函数,可以在不同阶段执行相应的操作。常用的生命周期钩子函数包括:

beforeCreate:在实例初始化之后、数据观测 (data observer) 和事件/watcher 事件配置之前被调用。
created:在实例创建完成后被立即调用。在这一步,实例已完成以下的配置:数据观测(data observer),属性和方法的运算,watch/event事件回调。然而,挂载阶段还没开始,$el属性目前不可见。
beforeMount:在挂载开始之前被调用:相关的 render 函数首次被调用。
mounted:el 被新创建的 vm.el 替换,并挂载到实例上去之后调用该钩子。如果 root 实例挂载了一个文档内元素,当 mounted 被调用时 vm.el替换,并挂载到实例上去之后调用该钩子。如果root实例挂载了一个文档内元素,当mounted被调用时vm.el也在文档内。
beforeUpdate:数据更新时调用,发生在虚拟DOM重新渲染和打补丁之前。你可以在这个钩子中进一步改变状态,这不会触发附加的重渲染过程。
updated:由于数据更改导致的虚拟DOM重新渲染和打补丁之后调用。
beforeDestroy:实例销毁之前调用。在这一步,实例仍然完全可用。
destroyed:Vue实例销毁后调用。调用后,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>

更多推荐

02Nginx配置文件的配置以及常用命令

Nginx的命令和配置文件Nginx的优点Nginx的优点跨平台:Nginx可以在大多数操作系统中运行,而且也有Windows的移植版本配置简单:配置风格跟程序开发一样非阻塞、高并发:数据复制时磁盘I/O的第一阶段是非阻塞的,在实际生产环境中跑到2-3万并发连接数(这得益于Nginx使用了最新的epoll模型)事件驱动

HTTPS,不可或缺的数据安全锁

当今社会,网络已经渗透到我们生活的方方面面,而在网络世界中,数据安全是至关重要的。HTTPS作为一种安全的数据传输协议,已经成为了不可或缺的数据安全锁。首先,让我们了解一下HTTPS是如何保证数据安全的。HTTPS是在HTTP协议的基础上加入了SSL/TLS协议,通过传输加密和身份认证来保证数据传输的安全性。在HTTP

Linux 终端与进程

有趣的问题Linux中的终端,控制台,TTY,PTY究竟是什么?它们与进程有什么关系?历史回顾:控制台(Console)控制台是一个直接控制设备的面板(属于设备的一部分)计算机设备的控制台:按键&指示灯(键盘&显示器)早期的电子计算机必然有一个控制台历史回顾:终端(Terminal)终端是一台独立于计算机的机器,是能够

css经典面试题(二)

文章目录1、清除浮动2、opacity:0、visibility:hidden、display:none的区别3、css画一个三角形4、常见的主流浏览器前缀5、重绘与重排的区别?6、如何优化图片7、CSS3中transition和animation的属性分别有哪些8、居中为什么要使用transform(为什么不使用ma

差分进化算法解析:Scala实现详细指南及其在优化问题中的应用

1.差分进化算法简介差分进化算法(DifferentialEvolution,DE)是一种演化计算的方法,主要用于连续空间的优化问题。与其他进化算法如遗传算法不同,DE专门设计用于处理实数编码的解,使其成为处理连续优化问题的理想选择。该算法的基本思想是通过结合当前代的个体与他们的变异体产生新的试验点,然后用某种选择准则

界面组件DevExpress WinForms v23.1亮点 - 全新升级HTML & CSS模板

DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForm控件已正

Games101作业0(vscode连接VB虚拟机)

作业0配置环境:基本配置在pa0中都有,下面介绍使用vscode连接VB虚拟机快捷开发vscode连接VB虚拟机1.用户名可以看到Username为cs18并非为css1802.密钥在window主机生成密钥ssh-keygen#一路回车3.VB虚拟机配置sshsshd_config配置cd/etc/ssh/vimss

【Java】防沉迷实名认证系统接口测试代码(已全示例通过)

下面的代码以及置顶文件使用并修改了作者:jspp@qq.com的开源代码,只作学习使用,侵删背景:在接入Taptap的防沉迷实名认证前,需要先通过国家防沉迷实名认证系统的接口测试,要求全部示例通过才能允许使用接口:核心代码:接口加密需要使用密钥对请求报文体数据进行AES-128/GCM+BASE64算法加密import

应用在摄像头对焦镜头中的马达驱动芯片

摄像头(CAMERA或WEBCAM)又称为电脑相机、电脑眼、电子眼等,是一种视频输入设备,被广泛的运用于视频会议、远程医疗及实时监控等方面。普通的人也可以彼此通过摄像头在网络进行有影像、有声音的交谈和沟通。另外,人们还可以将其用于当前各种流行的数码影像、影音处理等。摄像头可分为数字摄像头和模拟摄像头两大类。数字摄像头可

创建线程的方式打开记事本

更好的阅读体验\huge{\color{red}{更好的阅读体验}}更好的阅读体验今天操作系统课老师讲到进程,提出了一个有趣的小实验:能否以系统调用的方式利用Windows创建进程的系统调用函数来打开一个软件。闲着蛋疼的我立马来了兴趣,姑且写一个玩玩(头文件<windows.h>:包含了WindowsAPI的核心功能。

【JavaScript】深拷贝和浅拷贝

在JavaScript中,深拷贝(DeepCopy)和浅拷贝(ShallowCopy)是两种不同的对象复制方法,它们涉及到如何复制对象的属性以及如何处理对象内部的嵌套引用。以下是它们的解释:浅拷贝(ShallowCopy):浅拷贝是一种对象复制方法,它仅复制对象的一层属性,而不会递归复制对象内部的嵌套对象。当你进行浅拷

热文推荐