首页 > 其他分享 >Vue入门

Vue入门

时间:2024-07-25 14:59:20浏览次数:13  
标签:el Vue 入门 app 绑定 vue data

Vue is a popular JavaScript framework for building user interfaces. It is often used for creating single-page applications and is known for its simplicity and flexibility. Vue allows developers to organize their code into reusable components, making it easier to build and maintain complex web applications. It also has a declarative syntax, making it intuitive and easy to understand. Vue is often compared to other frameworks like React and Angular, and it has a large and active community of developers who contribute to its development and share their knowledge through forums and online resources.

1.VUE介绍

1.1.Vue是什么

Vue (读音 /vjuː/,类似于 *view*) 是一套用于构建用户界面的渐进式框架。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。

渐进式框架: 就是用你想用或者能用的功能特性,你不想用的部分功能可以先不用。VUE不强求你一次性接受并使用它的全部功能特性

1.2.Vue的特点
  • 轻量

Vue.js库的体积非常小的,并且不依赖其他基础库。

  • 数据双向绑定-回显简单

对于一些富交互、状态机类似的前端UI界面,数据绑定非常简单、方便。

  • 指令

内置指令统一为(v—*),也可以自定义指令,通过对应表达值的变化就可以修改对应的DOM。

  • 插件化

Vue.js核心不包含Router(路由)、AJAX、表单验证等功能,但是可以非常方便地根据需要加载对应插件。

  • 组件化,他支持自定义标签

组件可以扩展 HTML 元素,封装可重用的代码。允许我们使用小型、自包含和通常可复用的组件构建大型应用

1.3.MVVM思想

Vue是一款开源的JavaScript MV*(MVVM、MVC)框架。

Vue 引入了MVVM (Model-View-ViewModel)模式,他不同于MVC架构.

  • M :即Model,模型,包括数据(json对象)和一些基本操作

  • V :即View,视图(html便签),页面渲染结果

  • VM:即View-Model,模型与视图间的双向操作(无需开发人员干涉)

在MVVM之前,开发人员从后端获取需要的数据模型,然后要通过DOM操作Model渲染到View中。而后当用户操作视图,我们还需要通过DOM获取View中的数据,然后同步到Model中。而MVVM中的VM要做的事情就是把DOM操作完全封装起来,开发人员不用再关心Model和View之间是如何互相影响的:

  • 只要我们Model发生了改变,View上自然就会表现出来。

  • 当用户修改了View,Model中的数据也会跟着改变。

把开发人员从繁琐的DOM操作中解放出来,把关注点放在如何操作Model上.

总结一下:MVVM的思想就是数据模型和视图的双向绑定,只要数据变化,视图会跟着变化,只要视图被修改,数据也会跟者变化。

2.入门

官方文档:https://cn.vuejs.org/

2.1.Vue安装和使用

创建一个静态的web项目 , 然后安装VUE , VUE官网地址:https://cn.vuejs.org/

使用CDN方式

Vue有两种使用方式,1是使用cdn或者本地方式直接引入JS库 ,2.使用Npm安装VUE库,第一种方式如下:

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

CDN(Content Delivery Network,内容分发网络)是由分布在不同地理位置的代理服务器及其数据中心组成的网络:

当然也可以手动下载该vue的JS库到本地项目,然后引入JS库

使用NPM安装VUE

  • 使用Terminal初始化 :npm init -y

    改名了是初始化NPM,会在项目中产生一个package.json文件。

  • 安装vue:

    全局安装 :npm install -g vue

    局部安装 :npm install vue

    安装成功后VUE的JS库:node_modules/vue/dist/vue.js

[注意] 项目的名称不能使用“vue”,不然会报错

npm 是 JavaScript 世界的包管理工具,并且是 Node.js 平台的默认包管理工具,也是世界上最大的软件注册表,里面包含超过600000 个 包的结构,能够使您轻松跟踪依赖项和版本。

安装 Vue 和 vue-server-renderer 可能会遇到一些问题,以下是一些常见的解决方法:

  1. 确保你已经安装了 Node.js。Vue 和 vue-server-renderer 都依赖于 Node.js 环境。

  2. 确保你使用了正确的命令来安装 Vue 和 vue-server-renderer。在项目的根目录下运行以下命令:

    npm install vue vue-server-renderer
    

    或者使用 yarn:

    yarn add vue vue-server-renderer
    

  3. 检查你的网络连接是否正常。如果你的网络连接不稳定,可能会导致安装失败。可以尝试使用 VPN 或者等网络连接恢复正常后再试一次。

  4. 清除 npm 的缓存。运行以下命令清除 npm 的缓存:

    npm cache clean --force
    

    然后再次尝试安装 Vue 和 vue-server-renderer。

  5. 如果你使用的是 Windows 系统,并且在安装过程中遇到权限问题,可以使用管理员身份运行命令提示符或 PowerShell,然后再尝试安装 Vue 和 vue-server-renderer。

如果以上方法都不能解决问题,建议到 Vue 的官方论坛或者社区中寻求帮助。

2.2.Hello World程序

Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统:

创建vue-demo.html,目录结构如下:

vue-demo
    node_modules
    package.json
    package-lock.json
    pages
        vue-demo.html

vue-demo.html

<script type="application/javascript" src="../node_modules/vue/dist/vue.js"></script>
---------------------------------------------------
<body>
    <div id="app">
        <!--        取data中的数据-->
        {{ message }}
    </div>
</body>
---------------------------------------------------
<script type="application/javascript">
    var app = new Vue({
        //使用ID绑定vue到页面的元素
        el: '#app',
        //vue的数据
        data: {
            message: 'Hello Vue!'
        }
    })
</script>

Hello Vue!

2.3.VUE的el挂载

每个Vue实例通过el配置挂载的标签,该标签可以通过id或者是class挂载。 实例上的属性和方法只能够在当前实例挂载的标签中使用。

2.4.VUE的数据“data”
<body>
    <div id="app">
        <!--        取data中的数据-->
        {{ message }}
        <hr/>
        {{ user }}
        <hr/>
        {{ user.username }}	//取对象中的数据
    </div>
</body>
<script type="application/javascript">
    var app = new Vue({
        //使用ID绑定vue到页面的元素
        el: '#app',
        //vue的数据
        data: {
            message: 'Hello Vue!',	//普通数据
            user:{	//对象数据
                username:"DT",
                age:31
            }
        }
    })
</script>

注意:{{}}取值不能脱离VUE绑定的元素。

2.5.VUE的方法

所有的方法都在methods属性中定义,方法的调用可以通过在VUE绑定的页面元素中使用{{方法名()}} 的方式,也可以在js中通过VUE对象调用.

<body>
    <div id="app">
        <!--        取data中的数据-->
        取普通值:{{ message }}
        <hr/>
        取对象值:{{ user }}
        <hr/>
        取对象中的属性:{{ user.username }}
        <hr/>
        调用方法:{{showUser('参数')}}
    </div>
</body>
<script type="application/javascript">
    var app = new Vue({
        //使用ID绑定vue到页面的元素
        el: '#app',
        //vue的数据 ,所有的数据都在这里绑定
        data: {
            message: 'Hello Vue!',
            user:{
                username:"DT",
                age:31
            }
        },
        //vue的方法,所有的方法都在这里定义
        methods:{
            showUser(args){
                //这里的 this 代表 Vue对象
                console.log(this.user.username);
                console.log(this.user.age);
                console.log(args);
            }
        }
    })

    //调用vue方法
    app.showUser('我也是参数');
</script>
2.6 vue生命周期与钩子函数

1、beforeCreate(创建前):vue实例初始化之前调用

此阶段为实例初始化之后,此时的数据观察和事件配置都还没有准备好,而此时的实例中的data和el还是undefined状态,不可用的,dom元素也未加载,此时使用html片段代码我们加上ref属性,用于获取DOM元素的操作会报错,详细效果请使用代码测试。

注入:将methods、data等挂载到vue实例当中。

2、created(创建后):vue实例初始化之后调用

beforeCreate之后紧接着的钩子就是创建完毕created,此时我们能读取到data的值,但是DOM还没有生成,所以属性el还是不存在的,dom元素也未加载。

生成render函数,用来渲染。在挂载开始之前被调用:相关的 render 函数首次被调用

3、beforeMount(载入前):挂载到DOM树之前调用

此时的$el成功关联到我们指定的DOM节点,但是此时的DOM元素还未加载,如果此时在DOM元素中绑定数据使用{{name}}后里边的name不能成功地渲染出我们data中的数据

4、mounted(载入后):挂载到DOM树之后调用

挂载完毕阶段,到了这个阶段数据就会被成功渲染出来。DOM元素也加载出来了,html片段代码我们加上ref属性,可以获取DOM元素。

5、beforeUpdate(更新前):数据更新之前调用

当修改Vue实例的data时,Vue就会自动帮我们更新渲染视图,在这个过程中,Vue提供了beforeUpdate的钩子给我们,在检测到我们要修改数据的时候,更新渲染视图之前就会触发钩子beforeUpdate。html片段代码我们加上ref属性,用于获取DOM元素。Dom元素上的数据还没改变。

6、updated(更新后):数据更新之后调用

此阶段为更新渲染视图之后,此时再读取视图上的内容,已经是最新的内容。 此时加载的DOM元素上的数据更新了。

7、beforeDestroy(销毁前):vue实例销毁之前调用

调用实例的destroy()方法可以销毁当前的组件,在销毁之前,会触发beforeDestroy钩子。

8、destroyed(销毁后):vue实例销毁之后调用

成功销毁之后,会触发destroyed钩子,此时该实例与其他实例的关联已经被清除,它与视图之间也被解绑,此时再修改name的值,试图不在更新,说明实例成功被销毁了。

vue的生命周期:就是vue对象从创建到销毁的整个过程。

vue对象大概生命周期:创建--挂载-销毁,在这些阶段它提供了一些钩子函数,让我们可以在这些生命周期中做事情。 创建前,创建后,挂载前,挂载后,销毁前,销毁后等钩子,我们可以写函数挂载在钩子上面,到达对应的声明周期就能执行我们操作。

整个生命周期中,主动执行的函数,称为钩子函数。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>vue声明周期</title>
    <script src="js/plugins/dist/vue.js"></script>
</head>
<body>
    <div id="myDiv"></div>
    <!--声明周期 从产生到销毁中间经历的过程就叫声明周期-->
    <script type="text/javascript">
        new Vue({
            el:"#myDiv",
            data:{

            },
            methods:{

            },
            //构造
            beforeCreate() {
            },
            created(){
                alert("created");
            },
            beforeMount(){

            },
            mounted(){
                //挂载完成后,就相当于js中window.onload,相当于jQuery中$(fuction(){}),就是挂载点里面所有
                //标签都已经加载了
                alert("mounted");
            }
        });
    </script>
</body>
</html>

三 VUE的表达式

1 表达式语法
  • VueJS表达式写在双大括号内:{{ expression }}。

  • VueJS表达式把数据绑定到 HTML。

  • VueJS将在表达式书写的位置"输出"数据。

  • VueJS表达式 很像 JavaScript 表达式:它们可以包含文字、运算符和变量。

实例 {{ 5 + 5 }} 或 {{ firstName + " " + lastName }}。

2 简单表达式

在{{ }}中可以进行简单的运算.

<div id="app">
	<!--简单表达式  -->
	<h1>{{num1+num2}}</h1>
	<!-- +:运算,字符串连接 -->
	<h1>{{5+"v5"}}</h1>
	<h1>{{5+"5"}}</h1>
	<!-- -:减法 -->
	<h1>{{"5"-"5"}}</h1>
	<h1>{{5*5}}</h1>
	<!-- *:乘 -->
	<h1>{{"5"*"5"}}</h1>
	<!-- / 除-->
	<h1>{{5/5}}</h1>
	<h1>{{5/5}}</h1>
 </div>
---------------------------------------------------------------------------------------------------
var app = new Vue({
  //挂载到id=app元素上
  	el:"#app",
	data:{
       num1: 10,
       num2: 20
    },
});
3 三目运算符

在{{}}中的表达式可以使用data中数据 , 可以使用三元运算符,但是不能够使用其他语句

<div id="app">
	<!--三目运算  -->
	{{ show1?"真":"假"}}
</div>

var app = new Vue({
	el : "#app",
	data : {
		show1 : true
	}
});
4 字符串操作
  • 直接使用字符串字面值作为字符串对象

  • 使用data中的字符串对象

<div id="app">
    {{"这是字面值"}}<br/>
    {{"这是字面值".length}}<br/>
    {{message.length}}<br/>
    {{message.substring(1,5)}}<br/>
    {{message.substring(2,6).toUpperCase()}}<br/>
</div>


var app = new Vue({
	el: "#app",
	data: {
		message: "这是data中的数据"
	}
});
5 对象操作

在表达式中可以使用data中定义的对象的各种用法.像使用js对象中的方法和属性一样

<div id="app">
    {{user}}<br/>
    {{JSON.stringify(user)}}<br/>
    {{user.toString()}}<br/>
    {{user.name}}<br/>
    {{user.age}}<br/>
    {{user.getAge()}}<br/>
</div>

var user = {
	name: "DT",
	age: 18,
	getAge: function () {
		return this.age
	},
	toString:function(){
		return "姓名:"+this.name+",年龄:"+this.age;
	}
};
var app = new Vue({
	el: "#app",
	data: {
		user: user
	}
});
6 数组操作

在表达式中可以使用JavaScript数组中的任何语法来操作数组.

<div id="app">
    {{hobbys}}<br/>
    {{hobbys[0]}}<br/>
    {{hobbys.length}}<br/>
    {{hobbys.toString()}}<br/>
    {{hobbys.join("-")}}<br/>
</div>

var app = new Vue({
	el: "#app",
	data: {
		hobbys:["摸鱼","吃饭",'睡觉',"写代码"]
	}
});

四.VUE的指令

官方文档:https://cn.vuejs.org/v2/api/#v-text

指令是一个带有v-前缀的特殊标签属性, 指令属性的值预期是单个JavaScript表达式.

  • 作用: 当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

  • 一个标签元素上可以出现多个指令属性

  • 指令只能够出现在Vue对象所挂载的标签范围内的标签中

常用指令如下:

v-text=“表达式”  设置标签中的文本
v-html=“表达式”  设置标签中的html
v-for=“表达式”   循环
v-bind="函数" 绑定事件
v-model=“表达式” 数据双向绑定
v-show="布尔" 是否显示元素
v-if(else else if)=“表达式”    判断条件    
v-on=“表达式”    注册事件

1 v-text

给标签设置文本

  • 语法

<标签 v-text="textValue"></标签>
<div id="app">
    <span v-text="message"></span><br/>
    <span v-text="user.username"></span><br/>
</div>

var app = new Vue({
	el: "#app",
	data: {
		message: "<h1>这是一个Span!</h1>",
		user: {
			username: "lw"
		},
	}
});

给元素填充纯文本内容

2 v-html 

给标签设置文本:通过data中的数据更新标签标签中的innerHTML属性的值.(标签中的HTML内容)

  • 语法

    <标签 v-html="htmlValue"></标签>
    <div id="app">
        <div v-html="message"></div>
    </div>
    
    var app = new Vue({
    	el: "#app",
    	data: {
    		message: "<h1>这是HTMl代码</h1>"
    	}
    });

    【注意】和v-text的区别是v-html会把内容的html符号进行渲染

    3 v-for 

    循环:v-for可以作用于:数字,字符串,数组,对象

  • 语法一:普通用法

    <标签 v-for="item in 数据源">{{item}}</标签>

    语法二:带索引

    <标签 v-for="(元素,索引) in 数据源">{{元素}}=={{索引}}</标签>

  • 语法三:键,值,索引

  • [注意]这里的键是指对象的属性名,这种方式适合用来遍历对象的所有属性

    <标签 v-for="(元素,键,索引) in 对象"></标签>

<div id="app">
    <h1>循环数组</h1>
    <ul>
        <li v-for="hobby in hobbys">{{hobby}}</li>
    </ul>
    <h1>遍历对象</h1>
    <ul>
        <li v-for="value in student">{{value}}</li>
    </ul>

    <h1>带索引循环数组</h1>
    <ul>
        <li v-for="(hobby,index) in hobbys">{{index}}--{{hobby}}</li>
    </ul>
    <h1>带键遍历对象</h1>
    <ul>
        <li v-for="(value,key,index) in student">{{index+1}}---{{key}}--{{value}}</li>
    </ul>
</div>

var app = new Vue({
	el: "#app",
	data: {
		hobbys : ["吃饭","睡觉","打豆豆","写代码"],
		student : {
			name: "DT",
			age: 31,
			sex: "男",
		},
		num : 10,
		str : "csdnnet",
	}
});

4 v-bind 

属性绑定:将data中的数据绑定到标签上,作为标签的属性值.

  • 语法一

    <标签 v-bind:标签属性名字="表达式"></标签>

    语法二:简写

    <标签 :标签属性名字="表达式"></标签>

    语法三:为一个标签绑定一个对象作为该标签的多个属性

    <标签 v-bind="对象"></标签>
    5 v-model 指令

    在表单控件上创建双向绑定,表单的值被修改时, 基于dom监听机制, 就会自动修改data中的数据中,

    当data中的数据被修改时,基于数据绑定机制, 自动会把新的内容自动更新到value属性上. 页面视图也发生了改变. 双向绑定

    v-model只作用于以下表单: input select textarea

     <标签 v-model="表达式"></标签>
    <div id="app">
      <h1>绑定到type=text的input表单元素</h1>
      姓名:<input type="text" v-model="inputValue"><br/>
      data中的值:{{inputValue}}
    
      <h1>绑定到type=checkbox的input表单元素</h1>
      打篮球:<input type="checkbox" v-model="checkboxValue" value="打篮球"><br/>
      踢足球:<input type="checkbox" v-model="checkboxValue" value="踢足球"><br/>
      data中的值:{{checkboxValue}}
    
    
      <h1>绑定到type=radio的input表单元素</h1>
      打篮球:<input type="radio" v-model="radioValue" value="打篮球"><br/>
      踢足球:<input type="radio" v-model="radioValue" value="踢足球"><br/>
      data中的值:{{radioValue}}
    
      <h1>绑定到textarea的元素</h1>
      个人简介:<textarea v-model="textareaValue"></textarea><br/>
      data中的值:{{textareaValue}}
    
    
      <h1>绑定到单选的select的元素</h1>
      技能:<select v-model="skills">
            <option value="java">java</option>
            <option value="php">php</option>
            <option value=".net">.net</option>
          </select><br/>
      data中的值:{{skills}}
    
    </div>
    
    var app = new Vue({
    	el: "#app",
    	data: {
    		inputValue: "初始化的值",
    		checkboxValue: ["踢足球"],
    		radioValue: "打篮球",
    		textareaValue: "我是一个优秀的软件工程师!",
    		skills: "java",
    	}
    });
    6 v-show

    根据表达式之真假值,切换元素的 display CSS 属性。当条件变化时该指令触发过渡效果。当v-show的值为假时, 会在标签的css中添加 display: none

     <标签名 v-show="表达式"></标签名>
    7 v-if 
  • 语法一

    <标签名 v-if="表达式"> ... </标签名>

    语法二

     <标签名 v-if="表达式"></标签名>
     <标签名 v-else></标签名>

    语法三

    <标签名 v-if="表达式"></标签名>
    <标签名 v-else-if="表达式"></标签名>
    <标签名 v-else-if="表达式"></标签名>
    <标签名 v-else></标签名>
    8 v-on 

    使用v-on指令注册事件

    <标签 v-on:事件句柄="表达式或者事件处理函数"></标签>
      简写方式
    <标签 @事件句柄="表达式或者事件处理函数"></标签>

    五 计算属性和watch

    1 computed

    有的时候我们需要在页面进行复杂的计算,复杂的计算导致页面很乱,Vue中提供了计算属性,来替代复杂的表达式:

    <div id="app">
        <h1>您的生日是:{{birth}} </h1>
    </div>
    -----------------------------------------------------------------
    var vm = new Vue({
        el:"#app",
        data:{
            birthday:1429032123201 // 毫秒值
        },
        computed:{
            birth(){// 计算属性本质是一个方法,但是必须返回结果
                const d = new Date(this.birthday);
                return d.getFullYear() + "-" + d.getMonth() + "-" + d.getDay();
            }
        }
    })
    2 watch

    watch可以让我们监控一个值的变化。从而做出相应的反应。

    <div id="app">
          <input type="text" v-model="message">
    </div>
    -------------------------------------------------------------
    <script type="text/javascript">
        var vm = new Vue({
            el:"#app",
            data:{
                message:"xxxx"
            },
            watch:{
                message(newVal, oldVal){	//监听 message 的变化,调用该函数。
                    console.log(newVal, oldVal);
                }
            }
        })
    </script>

标签:el,Vue,入门,app,绑定,vue,data
From: https://blog.csdn.net/weixin_62789590/article/details/140685723

相关文章

  • vuex的工作流程,模块化使用案例分享,及状态持久化
    文章目录一、Vuex是什么?二、核心概念三、Vuex的工作流程四、什么情况下我应该使用Vuex?五、Vuex的使用六、使用示例七、状态持久化1、手动利用HTML5的本地存储2、利用vuex-persistedstate插件2.1、安装2.2、配置一、Vuex是什么?Vuex是一个专为Vue.js应用程......
  • 转行网络安全,应该选哪个方向?(非常详细)零基础入门到精通,收藏这一篇就够了
    随着互联网技术的快速发展和广泛应用,网络安全形势日益严峻,各种网络攻击和安全威胁不断涌现,给个人、企业乃至国家带来了巨大的风险。为了应对网络风险,网络安全越来越被重视,开始成为入行互联网的备选岗位。网络安全方向众多,涉及到网络安全生命全周期,方向多达几十种。网络安......
  • vue的slots插槽内容
    1.插槽基本格式双标签内写内容子级页面插入标签即可2.插槽具名套用标签在标签内以v-slot:自定义名/#自定义名形式绑定子页面的标签标签内以name="自定义名"形式体现父级页面绑定内容3.父级数据与子级数据同时出现在页面当中一在标签内用v-slot="自定义名"二用......
  • vue3 父组件 props 异步传值,子组件接收不到或接收错误
    1.使用场景我们在子组件中通常需要调用父组件的数据,此时需要使用vue3的props进行父子组件通信传值。2.问题描述那么此时问题来了,在使用props进行父子组件通信时,因为数据传递是异步的,导致子组件无法成功获取数据,若此时父组件中数据发生变化,那子组件获取的值是改变之......
  • Java入门:05.Java中的数组002
    通过上篇文章,相信大家对数组应该有了一个简单的了解,并对Java中的数据类型有了一个基本的认识,不仅如此我们还明白了怎样定义一个数组类型的变量,在这之后,让我们一起来更加深入的了解一下数组吧。三、如何创建一个数组(对其初始化)上篇文章我们明白了怎样定义一个数组类型的变量,但......
  • 入门Vue+.NET 8 Web Api记录(一)
    做自己感觉有意思的或者能解决自己需求的项目作为入门,我觉得是有帮助的,不会觉得那么无聊。一个最简单的前后端分离项目应该是怎么样的?我觉得就是前端有个按钮,点击向后端发送一个get请求,获取到数据后,将数据显示在前端上。结合最近感兴趣的SemanticKernel,有了做这样的Demo学习的......
  • Vue中deep的用法
    deep:true 的用法在Vue中,watch用来监听数据的变化,并执行相应的回调函数。当监听的对象是一个复杂的数据结构(如对象或数组)时,默认情况下Vue的watch只会监听顶层属性的变化,而不会监听对象内部属性的变化。例子假设您有如下数据结构:data(){return{user:{......
  • Java毕业设计:基于Springboot+vue的电影院管理系统
    【辰兮要努力】:hello你好我是辰兮,很高兴你能来阅读,昵称是希望自己能不断精进,向着优秀程序员前行!博客来源于项目以及编程中遇到的问题总结,偶尔会有读书分享,我会陆续更新Java前端、后台、数据库、项目案例等相关知识点总结,感谢你的阅读和关注,希望我的博客能帮助到更多的人,分享......
  • Java毕业设计:基于SpringBoot+Vue的养老院系统
    一、选题背景意义......
  • 基于springboot+vue.js+uniapp的小程序的英语学习交流平台附带文章源码部署视频讲解等
    文章目录前言详细视频演示具体实现截图技术栈后端框架SpringBoot前端框架Vue持久层框架MyBaits系统测试系统测试目的系统功能测试系统测试结论为什么选择我代码参考数据库参考源码获取前言......