Vue前端框架入门,真好学,都给我学起来

2023-11-17

前言:今天要分享的知识是Vue前端框架

码字不易,点个赞

转载请说明!

开发工具:HBuilderX,Eclipse


目录

一、Vue是什么

二、库和框架的区别

三、MVVM介绍

四、cdn的下载及入门案例

①定义边界和绑定边界

②案例二、数据双向绑定

③事件

 ④Vue的生命周期 

钩子函数 

验证生命周期案例代码

⑤计算任意一段代码的执行时间


一、Vue是什么

Vue是一个构建用户界面(UI)的[渐进式]JavaScript框架

官网:Vue.js

二、库和框架的区别

2.1 库(Library),本质上是一些函数的集合。每次调用函数,实现一个特定的功能,接着把控制权交给使用者
      代表:jQuery
      jQuery这个库的核心:DOM操作,即:封装DOM操作,简化DOM操作

2.2 框架(Framework),是一套完整的解决方案,使用框架的时候,需要把你的代码放到框架合适的地方,框架会在合适的时机调用你的代码 
      代表:vue
      框架规定了自己的编程方式,是一套完整的解决方案
      使用框架的时候,由框架控制一切,我们只需要按照规则写代码
      框架的侵入性很高(从头到尾)

三、MVVM介绍

MVVM,一种更好的UI模式解决方案,MVVM通过数据双向绑定让数据自动地双向同步

   MVVM ===> M / V / VM
   M:model数据模型
   V:view视图
   VM:ViewModel 视图模型    虚拟dom

   V(修改数据) -> M
   M(修改数据) -> V
   数据是核心


四、cdn的下载及入门案例

下载地址:http:// https://www.bootcdn.cn/

①定义边界和绑定边界

代码

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.10/vue.js"></script>
		<title></title>
	</head>
	<body>
		<!-- 定义边界 -->
		<div id="app">
			<h3>{{msg}}</h3>
		</div>
		<script type="text/javascript">
			//绑定边界
			new Vue({
				el:'#app',
				data(){
					return{msg:'vue初步使用'}
				}
			})
		</script>
	</body>
</html>

data还有另外两种写法

data:{
			msg:'黄老板yyds'
		}
data:function(){
			return {msg:'张三到此一游'}
		}

推荐用案例中的那种,绑定值后可拿到绑定数据

案例二、数据双向绑定

代码

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

关键指令:v-model

将输入框与h3标签的内容同步,改变输入框h3标签也随之改变

界面 

③事件

代码

<!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 v-on:click="getMsg">点我</button>
		</div>
	</body>
	<script type="text/javascript">
	new Vue({
		el:"#app",
		data(){
			return {msg:'披荆斩棘的哥哥'}
		} ,
		methods:{
			getMsg(){
				alert(this.msg)
			}
		}
	})
	
	</script>
</html>

关键指令:v-on

点击按钮弹出msg内容,如图

 ④Vue的生命周期 

 在这里插入图片描述

钩子函数 

beforeCreate: 刚刚new Vue()之后,这个时候,数据还没有挂载呢,只是一个空壳

create:这个时候已经可以使用到数据,也可以更改数据,在这里更改数据不会触发updated函数

beforeMount:虚拟dom已经创建完成,马上就要渲染,在这里也可以更改数据,不会触发updated

mounted:此时,组件已经出现在页面中,数据、真实dom都已经处理好了,事件都已经挂载好了

update:数据已经更改完成,dom也重新render完成

destroyed:销毁


验证生命周期案例代码

<!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>

⑤计算任意一段代码的执行时间

打开Eclipse创项目,建一个模板类CodeTemplate 

package com.hpw.base.test;

public abstract class CodeTemplate {

	
	public abstract void code();
	//计算任意一段代码执行时长
	public void handle() {
		long begin=System.currentTimeMillis();
		this.code();
		long end=System.currentTimeMillis();
		System.out.println("运行时间为:"+(end - begin)/1000);
	}

}

测试需计算的代码

package com.hpw.base.test;

public class ACode extends CodeTemplate {

	@Override
	public void code() {
		try {
			Thread.sleep(1050);
			for (int i = 0; i < 20000; i++) {
				System.out.println("Thanks♪(・ω・)ノ");
			}
		} catch (InterruptedException e) {
			e.printStackTrace();
		}
	}

	public static void main(String[] args) {
		ACode aCode = new ACode();
		aCode.handle();

	}

}

运行结果

这个案例就相当于钩子函数,虚拟dom到低如何渲染,由this.code();说了算,而这个又是由每个程序员自己控制的,code这个方法在后台被称作模板方法,也可以称作钩子方法

到这里就结束了,欢迎大佬指点 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Vue前端框架入门,真好学,都给我学起来 的相关文章

  • React Native - “this.setState 不是一个函数”试图设置背景颜色动画?

    好吧 我只是想循环视图的背景颜色 在 3 4 种颜色之间渐变 我发现如何在 React Native 中对 ScrollView 的背景颜色进行动画处理 https stackoverflow com questions 50356933
  • Express MongoDB find() 基于 _id 字段

    因此 在我的 Express 应用程序中 我尝试根据我的 id 字段查找 请参阅下面我的 MongoDB 记录 id oid 58c2a5bdf36d281631b3714a title EntertheBadJah subTitle Lo
  • 如何在NodeJs中应用Java/Spring的分层架构?

    我已经尝试学习 NodeJS 有一段时间了 所有书籍和教程似乎都遵循类似的代码结构模式 例子 const express require express const app express app set view engine hbs a
  • 通过 HTML 将复杂变量传递给 javascript 的正确方法

    我试图摆脱使用 PHP 的 htmlentities 但我在这里停止了 但后来我想 我不做替换和检查特殊字符 而是只 JSON 整个对象 这提供了一个非常不受欢迎的结果 其中包含大量双引号 那么我应该怎么做呢 我应该为每个图像分配一个数字唯
  • jquery .load() 不起作用

    我似乎无法让 jquery 的 load 函数工作 一定是我缺少的一些简单的东西 基本上只是试图将 more html 的片段加载到 index html 中 索引 html
  • 带标签的 Material-ui 文本字段[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 谁能告诉我如何在material ui lib中制作带有标签的文本字段 寻找这样的东西 https github com callem
  • 提交后如何重置表单?

    我有一个简单的表格 假设它需要一个电子邮件地址 提交表单后 消息堆栈会通知用户其地址已成功提交 问题是 提交地址后 带有电子邮件的表单字段仍然包含用户输入的电子邮件地址 我该如何重置该字段 我必须为此使用 JavaScript 吗 谢谢 w
  • Firestore onSnapshot() 方法多次触发

    我有一个带有多个路由和 vuex 的 vue cli 4 应用程序 Firestore 数据库已成功连接 我的应用程序立即反映从 Firestore 控制台应用于数据库的修改 在离开包含与 Firestore 同步 的组件的路线然后返回后
  • 在可组合项 vue3 中使用 props

    我正在将应用程序从 vue 2 升级到 vue 3 但在可组合项方面遇到了一些问题 我想在可组合项中使用道具 但它似乎不起作用 代码示例是从工作组件中提取的 当我将其留在组件中时 它可以正常工作 我假设defineProps不受可组合项支持
  • 我可以检测焦点来源吗? (Javascript、jQuery)

    快速提问 是否可以检测焦点是来自鼠标单击还是来自焦点事件的选项卡 我想如果没有 我将不得不在同一元素上使用单击句柄来确定源 但我更喜欢通过焦点事件的方式 Thanks Gausie 可能无法 100 工作 但如果没有直接的方法 那么你不能直
  • 从右到左的语言和编程问题

    我正在创建一个网络文本编辑器 它使用我创建的新语言 如 BBcode 这种标记语言将采用阿拉伯语 但我面临这些问题 在所有 IDE 和编辑器中将英语和阿拉伯语文本混合在同一行中确实很困难 因为会发生奇怪的事情 单词和字符的顺序发生变化 使用
  • 如何使用startsWith过滤并获取每个对象键的值?

    我试图通过获取每个键来过滤对象checkpoint并输出其值 目前 我只能输出键而不是值 下面 我有一个简单的对象 我正在使用过滤器和startsWith 我怎样才能得到这些值呢 var data practicals 0 checkpoi
  • TypeError:React 中的循环对象值

    这是我的代码 sendMail e e preventDefault fetch https uczsieapp mailer herokuapp com var name document getElementById name var
  • 如何在没有模块的情况下在 vue 中使用 TypeScript

    In package json I have devDependencies vue 2 5 16 这给了我index d ts vue d ts and so on https github com vuejs vue tree v2 5
  • 将纬度/经度转换为 X/Y,以便在美国地图图像上进行阿尔伯斯投影

    我正在尝试使用 C 或 Javascript 将纬度 经度转换为 X Y 坐标 以将带有 CSS 的 div 左 上 定位到美国地图的背景图像上 美国的标准地图投影是阿尔伯斯投影 如下所示 但 StackOverflow 仅提供参考基本墨卡
  • JavaScript IDE/编译器

    现在 我希望你们中的一些人能够理解我的要求 我是编程新手 我在 Codecademy com 上了解了 JavaScript 我使用 labs codecademy com 来编写 JavaScript 但它有限制 对于编程新手来说 我可以
  • 包括来自raw.github.com的js

    我有一个 github com 演示页面 链接到https raw github com master file js https raw github com master file js这样我就不需要总是复制 js文件转移到gh pag
  • 使用 puppeteer 部署 firebase 功能时说即使我启用了 --no-sandbox 也找不到 chrome

    我正在尝试将 firebase 函数部署到使用 puppeteer 的 firebase 项目 我让它在本地计算机上运行 但是当它尝试在 firebase 上运行时 我收到此错误 Exception from a finished func
  • 加密 Chrome 扩展程序?

    无论如何 要加密 Chrome 扩展程序 以免暴露源代码 您可以使用混淆器隐藏您的代码 市场上有很多可用的 像Google Closure编译器这样的工具很少 而且市场上有很多在线javascript ofuscators 你可以使用任何一
  • JavaScript TypedArray 混合类型

    我正在尝试使用 WebGL 并希望将一些不同类型混合到一个字节缓冲区中 我知道 TypedArrays 可以达到这个目的 但不清楚我是否可以与它们混合类型 OpenGL 顶点数据通常是与无符号字节或整数混合的浮点数 在我的测试中 我想将 2

随机推荐

  • Java基础(七): instanceof用法详解

    1 instanceof说明 instanceof 是 Java 的保留关键字 作用是 测试它左边的对象是否是它右边的类的实例 返回 boolean 的数据类型 instanceof是Java中的二元运算符 左边是对象 右边是类 当对象是右
  • MySQL中的各种查询

    文章目录 MySQL中的各种查询 基础查询 条件查询 排序查询 常见函数查询 分组查询 连接查询 内连接 外连接 交叉连接 子查询 联合查询 MySQL中的各种查询 基础查询 条件查询 语法 select 查询列表 from 表名 wher
  • html 与 js

    一 1 js java script js 基于对象 解释执行 java 面向对象 编译执行 2 html 引入 js 方式 1 内部 js body的最后一行 如下 3 控制台的输入输出 1 console log 内容 4 js 变量和
  • -lz -lrt -lm -lc都是什么库

    libz librt libm libc 压缩库 Z 实时库 real time 数学库 math 标准C库 C lib
  • get it [springmvc controller 单例说明以及多例切换]

    spring的bean作用域种类 1 singleton 单例模式 当spring创建applicationContext容器的时候 spring会欲初始化所有的该作用域实例 加上lazy init就可以避免预处理 2 prototype
  • Junit单元测试

    概念 JUnit是一个 Java 编程语言的单元测试工具 可以对部分代码的进行测试 Junit是用于Java的单元测试的框架 是别人写好的 特点 JUnit是一个开放源代码的测试工具 提供注解来识别测试方法 JUnit测试可以让你编写代码更
  • npm安装vue-cli,一直停留在deprecated request@2.88.2: request has been deprecated, see https://github.com/req

    安装vue cli出现的错误 原因 资源问题 没有配置淘宝镜像 解决 配置淘宝镜像 npm config set registry https registry npm taobao org 重新安装vue cli 即可成功 npm ins
  • 多线程中sleep、yield、join的用法及sleep与wait区别

    Object中的wait notify notifyAll 可以用于线程间的通信 核心原理为借助于监视器的入口集与等待集逻辑 通过这三个方法完成线程在指定锁 监视器 上的等待与唤醒 这三个方法是以锁 监视器 为中心的通信方法 除了它们之外
  • 分析java源代码/开源框架源码的思路?

    讨论下大家分析源代码的思路 遇到源代码是怎样去分析的 我的思路基本是这样的 1 弄清楚这个框架 是做什么用的 分解功能 2 分解功能出来后 针对每个功能画出类框架图 3 找到功能入口 然后分析每个方法 有个疑惑 在分析方法的过程中 方法链会
  • 解决数组塌陷的两种方式

    解决数组塌陷的两种方式 1 i 2 将数组倒着循环遍历 转载于 https www cnblogs com oklfx p 8495060 html
  • vuex是什么?

    vuex解释 vuex是一个专门为vue js应用程序开发的状态管理模式 通俗点说就是我们项目中需要共享的一些数据的管理容器 这里的状态就是数据 那么什么情况下才应该使用vuex呢 简单的说就是当你在构建一个中大型单页用的时候 需要在组件外
  • QCombox隐藏某一项

    有事想隐藏下拉选项的某一项 而又不改变索引 可以使用如下方法 QListView view qobject cast
  • 设计模式之六大原则

    设计模式之六大原则 转载 关于设计模式的六大设计原则的资料网上很多 但是很多地方解释地都太过于笼统化 我也找了很多资料来看 发现CSDN上有几篇关于设计模式的六大原则讲述的比较通俗易懂 因此转载过来 原作者博客链接 http blog cs
  • Parallels desktop 10 虚拟机支持 USB 3.0

    自Parallels Desktop 8 0 18305 起虚拟机可支持USB 3 0 以Parallels Desktop 10 for Mac为例 如何在虚拟机启用USB 3 0 为了在虚拟机中启用 USB 3 0 请首先在配置中启用功
  • 快速排序————非递归实现

    二 递归实现快速排序 2 1 为什么我们要去通过递归实现我们的快速排序呢 大家有可能会想是不是因为递归非常的占用空间 我们都知道我们的局部变量是保存在栈上的我们的函数参数也是在栈上开辟的 所以说递归是不是会占用我们非常多的栈空间 同时呢我们
  • 【小沐学NLP】Python实现聊天机器人(ChatterBot,代码示例)

    NLP开发系列相关文章编写如下 1 小沐学NLP Python实现词云图 2 小沐学NLP Python实现图片文字识别 3 小沐学NLP Python实现中文 英文分词 4 小沐学NLP Python实现聊天机器人 ELIZA 5 小沐学
  • 矩阵复习三-正交矩阵

    如果ATA I 则A为正交矩阵 A为正交矩阵 则有 A的列向量组为一组标准正交基 若A B都为n阶正交矩阵 则有 A 1或 A 1 A的列向量组为一组标准正交基 A 1 AT A 1 AT也是正交矩阵 AB也是正交矩阵 Rn空间的线性变换矩
  • 创建分区表及分区索引(本地)

    创建表空间 SQL gt create tablespace myTableSpace 1 datafile dat DBData oradata NACEC myTableSpace1 dbf size 100m Tablespace c
  • ControlNet精准控制AI绘画教程

    ControlNet精准控制AI绘画教程 AI绘画相信大家都已经不陌生了 虽然AI绘画出图很方便 但是要让其生成一副自己满意的图 还是需要费一番心思 有时候多次调整关键词就是生成不了自己想要的画面 这些一直以来都是AI绘画的痛点但就在最近
  • Vue前端框架入门,真好学,都给我学起来

    前言 今天要分享的知识是Vue前端框架 码字不易 点个赞 转载请说明 开发工具 HBuilderX Eclipse 目录 一 Vue是什么 二 库和框架的区别 三 MVVM介绍 四 cdn的下载及入门案例 定义边界和绑定边界 案例二 数据双