前后端分离--Vue的入门基础版

目录

一.前后端分离

二.Vue的简介

三.Vue的入门案例

四.Vue的生命周期


一.前后端分离

        前后端分离是一种软件架构模式,将应用程序的前端(用户界面)和后端(数据处理和业务逻辑)独立开发、独立部署。在前后端分离的架构下,前端通过API(应用程序接口)与后端进行通信,实现数据交换和业务处理。

前后端分离的优势包括:

  1. 独立开发:前端和后端可以并行开发,互不影响,提高开发效率。
  2. 松耦合:前端和后端之间通过API进行通信,相互独立,降低了彼此之间的依赖。
  3. 可复用性:前端和后端各自独立开发,可以更好地实现代码的复用和维护。
  4. 技术栈灵活:前端和后端可以选择适合自己的技术栈,提高开发的灵活性。
  5. 性能优化:前端和后端的分离可以针对性地进行性能优化,提高系统的响应速度和吞吐量。
  6. 扩展性:前后端分离的架构可以更好地支持系统的扩展和升级。

前后端的开发步骤,首先确定数据格式也就是接口文档,确定好之后只要各司其职就行了

值得注意的是,前后端分离并不适用于所有项目,需要根据具体的需求和项目规模进行选择和决策。

二.Vue的简介

        官方网站:Vue.js - 渐进式 JavaScript 框架 | Vue.js (vuejs.org)icon-default.png?t=N7T8https://cn.vuejs.org/

       Vue是一个流行的前端JavaScript框架,用于构建用户界面。它的目标是通过提供简单易用的API和高效的性能,使开发者能够快速地构建交互式的Web应用程序。

Vue具有以下特点:

  1. 渐进式框架:Vue采用渐进式的设计,可以根据项目需求逐步引入和使用其功能,不强制性地使用整个框架。
  2. 响应式数据绑定:Vue使用了响应式的数据绑定机制,当数据发生变化时,相关的视图会自动更新。这简化了开发过程,并提高了应用程序的性能。
  3. 组件化开发:Vue将UI界面抽象为一个个可复用的组件,每个组件都包含了自己的模板、逻辑和样式。这样可以提高代码的复用性和维护性。
  4. 虚拟DOMVue使用虚拟DOM技术来优化渲染性能。它通过将虚拟DOM树与实际DOM树进行比较,减少了DOM操作的次数,提高了页面的渲染效率。
  5. 生态系统丰富:Vue拥有一个庞大的生态系统,拥有众多的插件和工具,可以方便地集成到现有的项目中,并提供了许多开发工具和辅助库。
  6. 易学易用:Vue具有较低的学习曲线,其文档详细且易于理解,适合初学者和有经验的开发者。

三.Vue的入门案例

                定义一个VUE所管理的边界         

        接着写方法实现:

                效果展示:

        接下来再写一个突出VUE的优势

                展示效果:就像淘宝搜索东西的时候,可以模糊查询一样的

        当把V-model改为  :value就会有不一样的效果

效果:

以上两个案例可以得出:

            v-model :数据双向绑定,边界中的变量,在vue实例中的变量定义
        :value/V-bind:value:从实例中的定义变量取出,用到边界中的变量中

四.Vue的生命周期

        一共有8个阶段:

  1. beforeCreate: 在实例被创建之前调用,此时数据观测 (data observer) 和事件配置 (event/watcher setup) 尚未初始化。

  2. created:在实例创建完成后被调用。此时已完成数据观测 (data observer),属性和方法的运算,watch/event 事件回调。然而,挂载阶段还没开始,$el 没有引用。

  3. beforeMount:在挂载开始之前被调用。此时模板编译已完成,但是尚未将模板渲染到页面中。

  4. mounted:在挂载完成后被调用。此时模板已经被渲染到页面,并且组件已经可见。

  5. beforeUpdate:在数据更新之前调用,发生在虚拟 DOM 重新渲染和打补丁之前。你可以在该钩子中对更新之前的状态做一些操作。

  6. updated:在数据更新之后调用,发生在虚拟 DOM 重新渲染和打补丁之后。这里可以操作更新后的 DOM。

  7. beforeDestroy:在实例销毁之前调用。这个时候实例还完全可用。

  8. 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>

结果:

这个输入框默认的没有改变

改变之后:

        今天的分享就到这啦!!

  • 4
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
基于SpringBoot+Vue开发的前后端分离开发模板源码+sql数据库+使用说明(含了登陆注册、用户管理、部门管理、文件管理、权限管理等功能) 【1】项目代码完整且功能都验证ok,确保稳定可靠运行后才上传。欢迎下载使用!在使用过程中,如有问题或建议,请及时私信沟通,帮助解答。 【2】项目主要针对各个计算机相关专业,包括计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网等领域的在校学生、专业教师或企业员工使用。 【3】项目具有较高的学习借鉴价值,不仅适用于小白学习入门进阶。也可作为毕设项目、课程设计、大作业、初期项目立项演示等。 【4】如果基础还行,或热爱钻研,可基于此项目进行二次开发,DIY其他不同功能,欢迎交流学习。 【备注】 项目下载解压后,项目名字和项目路径不要用中文,否则可能会出现解析不了的错误,建议解压重命名为英文名字后再运行!有问题私信沟通,祝顺利! 本软件是**基于 VueSpringBoot 的前后端分离开发模板**,包含了**登陆注册、用户管理、部门管理、文件管理、权限管理、日志管理、个人中心、数据字典和代码生成**这九个功能模块,另外还有两张样例数据表和五张样例数据图,是一个很好的前后端分离开发模板,开发者可以在这个模板上进行二次开发,只需要实现需求方的业务逻辑,即可快速成型甲方的业务需求。 本系统采用了**基于角色的访问控制**,角色和菜单关联,一个角色可以配置多个菜单权限;然后再将用户和角色关联,一位用户可以赋予多个角色。这样用户就可以根据角色拿到该有的菜单权限,更方便管理者进行权限管控。 本系统还**封装了文件管理功能**,在其他模块如若要实现图片/文件上传预览时,前端只需导入现成的 Vue 组件即可实现(使用 viewerjs 依赖实现),后端只需定义 String 类型的实体类变量即可,无需再去研究文件上传预览的相关功能,简化了开发者的工作量。 本系统还自带**基于 beetl 代码生成器**功能,开发者只需要输入类名(如 Student)和类备注(如学生),运行 main 函数即可自动生成后端的所有 MVC 结构代码,无需开发增删改查的 API 接口。对于前端,开发者只需输入后端实体类的完整路径,利用 Java 的反射原理,拿到后端实体类的字段,即可自动生成前端所有代码,生成的模块代码包含基础的增删改查功能,简化开发者的工作量。 部署说明 前端: **Node.js 18,Vue 2.7.10,组件库 View UI 4.7**(如使用低本 node,需自行降低 plugin 本)。 后端:**JDK 17 及以上本,Maven 3.6,SpringBoot 3.1.0,mybatis-plus 3.5.3.1**(因 SpringBoot 3 最低支持 JDK 17,所以项目不支持 JDK 8)。 数据库:**MySQL 8.0.33,Redis 5.0.14**(MySQL5.7 需要手动设置编码 UFT8,并修改 sql 文件编码,否则 a_user 表数据无法导入导致用户不能登录)。 ```javascript // 前端(VsCode) // 1. 下载安装 Node.js(18 本) // 2. 安装 Vue 脚手架 npm i -g @vue/cli // 3. 安装前端依赖 npm i // 4. 启动前端项目 npm run dev // 后端(Idea) // 1. 导入项目 // 2. 配置 Maven、开启redis(否则系统无法启动) // 3. 导入数据库,建议 MySQL8,若 5.7 本需设置编码为 UTF-8,否则会提示密码错误 // 4. 等待后端依赖下载,完成后启动项目,或编译后执行 mvn spring-boot:run 软件架构分析 基于 VueSpringBoot 的通用管理系统包括了**登陆注册、用户管理、部门管理、文件管理、权限管理、日志管理、个人中心、数据字典和代码生成**这九大功能模块,其架构如下图所示。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值