“探索前后端分离架构下的Vue.js应用开发“

2023-09-18 09:42:47


在这里插入图片描述

引言

在当今互联网时代,前后端分离架构已经成为了Web应用开发的主流趋势。前后端分离架构的核心思想是将前端和后端的开发过程解耦,使得前端和后端可以独立开发、测试和部署。Vue.js作为一种流行的前端框架,为前后端分离架构提供了强大的支持。本文将介绍前后端分离架构以及Vue.js的基本概念和使用方法,并通过实例演示Vue.js的生命周期。

1. 前后端分离

前后端分离是一种软件架构模式,它将前端和后端的开发过程分离开来。前端负责展示数据和用户交互,后端负责处理业务逻辑和数据存储。通过前后端分离,可以实现前后端的并行开发,提高开发效率和灵活性。常见的前后端分离架构包括MVC、MVVM等。

2. Vue的简介

1. Vue.js是什么?

Vue是一个构建用户界面(UI)的[渐进式]JavaScript框架,它采用了MVVM(Model-View-ViewModel)的架构模式。Vue.js具有轻量级、易学易用、灵活和高效的特点,被广泛应用于Web应用开发中。Vue.js提供了一系列的指令和组件,使得开发者可以轻松构建交互式的用户界面。

2. 库和框架的区别

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

  • 2.2 框架(Framework),是一套完整的解决方案,使用框架的时候,需要把你的代码放到框架合适的地方,框架会在合适的时机调用你的代码

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

3. MVVM的介绍

MVVM,一种更好的UI模式解决方案,MVVM通过数据双向绑定让数据自动地双向同步
相比较于mvc更加便捷;

  • MVVM ===> M / V / VM

  • M:model数据模型

  • V:view视图

  • VM:ViewModel 视图模型 虚拟dom

  • V(修改数据) -> M

  • M(修改数据) -> V

  • 数据是核心

3. Vue的入门

要使用Vue.js进行开发,首先需要引入Vue.js的库文件。可以通过CDN引入,也可以通过npm安装。然后,在HTML文件中创建一个Vue实例,并指定要控制的DOM元素。接下来,可以在Vue实例中定义数据和方法,并将其绑定到HTML模板中。Vue.js使用了响应式的数据绑定机制,当数据发生变化时,相关的视图会自动更新。

数据的双向绑定

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

在这里插入图片描述

<!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">
			<!-- {{msg}} -->
			<input v-model="msg"/>
			<button type="button" @click="tan()">点击弹屏</button>
		</div>
		<script>
			new Vue({
				el:"#app",
				data(){
					return{msg:null}
				},
				methods:{
					tan(){
						alert(this.msg);
					}
				}
			})
		</script>
	</body>
</html>

在这里插入图片描述

数据的单项绑定

<!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">
			<!-- {{msg}} -->
			<input :value="msg"/>
			<button type="button" @click="tan()">点击弹屏</button>
		</div>
		<script>
			new Vue({
				el:"#app",
				data(){
					return{msg:'数据的单项绑定'}
				},
				methods:{
					tan(){
						alert(this.msg);
					}
				}
			})
		</script>
	</body>
</html>

在这里插入图片描述

4. Vue的生命周期

Vue.js的生命周期指的是Vue实例从创建到销毁的整个过程。Vue实例的生命周期包括创建阶段、挂载阶段、更新阶段和销毁阶段。在每个阶段,Vue提供了一系列的生命周期钩子函数,可以在特定的时机执行相应的操作。常用的生命周期钩子函数包括created、mounted、update和destroy等。

在这里插入图片描述

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

总结

本文介绍了前后端分离架构下的Vue.js应用开发。通过前后端分离,可以实现前后端的解耦,提高开发效率和灵活性。Vue.js作为一种流行的前端框架,具有轻量级、易学易用、灵活和高效的特点。通过实例演示了Vue.js的生命周期,帮助开发者更好地理解和应用Vue.js。希望本文对读者在前后端分离架构下使用Vue.js进行应用开发有所帮助。

更多推荐

【 安全】什么是CSRF攻击?如何避免?开发的时候怎么预防?

文章目录前言CSRF概念CSRF原理CSRF攻击防御防御方法session工作原理几种常见的攻击类型CSRF攻击实例CSRF攻击的对象当前防御CSRF的几种策略验证HTTPReferer字段在请求地址中添加token并验证在HTTP头中自定义属性并验证Chrome浏览器端启用SameSitecookieCSRF工具的防

应用程序处理:TCP模块的处理

1、应用程序处理首先应用程序会进行编码处理,这些编码相当于OSI的表示层功能;编码转化后,邮件不一定马上被发送出去,这种何时建立通信连接何时发送数据的管理功能,相当于OSI的会话层功能。2、TCP模块的处理TCP根据应用的指示,负责建立连接、发送数据以及断开连接。TCP提供将应用层发来的数据顺利发送至对端的可靠传输。为

Go 字符串处理

一、字符串处理函数我们从文件中将数据读取出来以后,很多情况下并不是直接将数据打印出来,而是要做相应的处理。例如:去掉空格等一些特殊的符号,对一些内容进行替换等。这里就涉及到对一些字符串的处理。在对字符串进行处理时,需要借助于包“strings”下面讲解一下常用的字符串处理函数:1.ContainsfuncContain

ChatGLM 实现一个BERT

前言本文包含大量源码和讲解,通过段落和横线分割了各个模块,同时网站配备了侧边栏,帮助大家在各个小节中快速跳转,希望大家阅读完能对BERT有深刻的了解。同时建议通过pycharm、vscode等工具对bert源码进行单步调试,调试到对应的模块再对比看本章节的讲解。涉及到的jupyter可以在代码库:篇章3-编写一个Tra

电脑不在身边能远程控制吗?

​什么是无人值守远程访问?无人值守远程访问是指对方电脑面前没有授权连接的人,可以直接远程访问对方的电脑。那么,电脑不在身边能远程控制它吗?答案当然是可以的。您可以使用远程桌面软件,在电脑无人值守的情况下远程访问它。无人值守远程访问有什么好处?无人值守的远程访问为企业提供了许多优势,如提高工作效率和安全性,员工通过无人值

用户与权限管理

文章目录用户与权限管理1.用户管理1.1MYSQL用户1.2登录MySQL服务器1.3创建用户1.4修改用户1.5删除用户1.6修改密码1.修改当前用户密码2.修改其他用户密码1.7MYSQL8密码管理用户与权限管理1.用户管理1.1MYSQL用户MYSQL用户分为普通用户和root用户root用户:超级管理员,拥有所

安防监控系统/视频云存储EasyCVR平台视频无法播放是什么原因?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,可拓

docker-基本操作命令,生成docker镜像包

一、帮助启动类命令。1、启动,命令:systemctlstartdocker2、停止,命令:systemctlstopdocker3、重启,命令:systemctlrestartdocker4、查看docker状态,命令:systemctlstatusdocker5、开机启动,命令:systemctlenabledoc

20230921研发面经总结

1.cpp中引用和指针的区别引用是在概念上定义一个变量的别名,而指针是存储一个变量的地址。引用必须从一而终,不能再指向其他数据;指针可以随意改变指向。引用在定义时必须初始化,而指针是最好初始化,不初始化也不会报错。指针可以有多级,引用不可以。存在空指针,但是不存在空引用。2.介绍const,各种使用情况的效果1.con

Codeforces Round 896 (Div. 1) C. Travel Plan(树形dp+组合数学)

题目有一棵n(1<=n<=1e18)个点的树,点i连着2*i和2*i+1两个点,构成一棵完全二叉树对于每个点i,记其值为a[i],a[i]可以取[1,m](1<=m<=1e5)的整数记i到j的简单路径上的最大值为s[i][j],则一棵权值确定的树对答案的贡献是现在求所有可能情况下的树的贡献之和,答案对998244353

手撕 LFU 缓存

大家好,我是方圆。LFU的缩写是LeastFrequentlyUsed,简单理解则是将使用最少的元素移除,如果存在多个使用次数最小的元素,那么则需要移除最近不被使用的元素。LFU缓存在LeetCode上是一道困难的题目,实现起来并不容易,所以决定整理和记录一下。如果大家想要找刷题路线的话,可以参考Github:Leet

热文推荐