springboot vue 项目(VUE框架)
1 概述
VUE是一款前端框架 ,免除了JavaScript中的DOM操作 ,简化书写
在JavaScript中有很多没有逻辑的繁琐的重复操作 ,如下
而VUE改善了这个问题 ,简化了DOM书写 。
VUE是基于MVVM(Model-View-ViewModel)思想 ,实现数据的双向绑定 ,将编程的关注点放在数据上 。之前的操作是将重点放在了DOM书写上。而要了解MVVM思想首先要了解MVC思想
C 就是咱们 js 代码 ,M 就是数据 ,而 V 是页面上展示的内容 ,如下图是我们之前写的代码,如下是我们之前写的代码
MVC思想是没法进行双向绑定的 。双向绑定是指当数据模型数据发生变化时 ,页面展示的会随之发生变化 ,而如果表单数据 发生变化,绑定的模型数据也随之发生变化 。接下来我们聊聊 MVVM 思想 ,如下图是三个组件图解
图中的 Model 就是我们的数据 , View 是视图,也就是页面标签 ,用户可以通过浏览器看到的内容; Model 和 View 是通 过 ViewModel 对象进行双向绑定的 ,而 ViewModel 对象是 Vue 提供的 。接下来让大家看一下双向绑定的效果 ,下图是提 前准备的代码 ,输入框绑定了 username 模型数据 ,而在页面上也使用 {{}} 绑定了 username 模型数据 ,如下
通过浏览器可以看见如下页面
当我们在输入框中输入内容 ,而输入框后面随之实时的展示我们输入的内容 ,这就是双向绑定的效果 。
2 入门
VUE使用起来比较简单 ,大致分为三个步骤
1 新建HTML页面,引入Vue.js文件
<script src="js/vue.js"></script>2 在JS代码区域 ,创建Vue核心对象 ,进行数据绑定
new Vue({ el: "#app", data() { return { username: "" } } });创建VUE对象时,需要传递一个js对象 ,而对象需要有如下属性:
el:用来指定哪儿些标签受 Vue 管理 。 该属性取值 #app 中的 app 需要是受管理的标签的id属性值 data:用来定义数据模型 methods:用来定义函数(这个后面会用到)3 编写视图
<div id="app"> <input name="username" v-model="username" > {{username}} </div>{{}} 是 Vue 中定义的 插值表达式 ,在里面写数据模型,到时候会将该模型的数据值展示在这个位置 。
整体代码如下
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <input v-model="username"> <!--插值表达式--> {{username}} </div> <script src="js/vue.js"></script> <script> //1. 创建Vue核心对象 new Vue({ el:"#app", data(){ // data() 是 ECMAScript 6 版本的新的写法 return { username:"" } } /*data: function () { return { username:"" } }*/ }); </script> </body> </html>3 VUE指令
指令:HTML 标签上带有 v- 前缀的特殊属性 ,不同指令具有不同含义 。例如:v-if ,v-for…常用指令如下
3.1 v-bind & v-model 指令
v-bind该指令可以给标签原有属性绑定模型数据 。这样模型数据发生变化 ,标签属性值也随之发生变化 例如:
<a v-bind:href="url">百度一下</a>上面的v-bind可以写成: ,如下
<!-- v-bind 可以省略 --> <a :href="url">百度一下</a> v-model该指令可以给表单项标签绑定模型数据 。这样就能实现双向绑定效果。例如:
<input name="username" v-model="username">代码演示:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <a v-bind:href="url">点击一下</a> <a :href="url">点击一下</a> <input v-model="url"> </div> <script src="js/vue.js"></script> <script> //1. 创建Vue核心对象 new Vue({ el:"#app", data(){ return { username:"", url:"https://www.baidu.com" } } }); </script> </body> </html>通过浏览器打开上面页面 ,并且使用检查查看超链接的路径 ,该路径会根据输入框输入的路径变化而变化 ,这是因为超链接 和输入框绑定的是同一个模型数据
3.2 v-on指令
我们在页面定义一个按钮 ,并给该按钮使用 v-on 指令绑定单击事件 ,html代码如下
<input type="button" value="一个按钮" v-on:click="show()">而使用 v-on 时还可以使用简化的写法,将 v-on: 替换成 @ ,html代码如下
<input type="button" value="一个按钮" @click="show()">上面代码绑定的 show() 需要在 Vue 对象中的 methods 属性中定义出来
new Vue({ el: "#app", methods: { show(){ alert("我被点了"); } } });注意:v-on: 后面的事件名称是之前原生事件属性名去掉on 。例如
单击事件 : 事件属性名是 onclick ,而在vue中使用是 v-on:click 失去焦点事件:事件属性名是 onblur,而在vue中使用时 v-on:blur整页代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <input type="button" value="一个按钮" v-on:click="show()"><br> <input type="button" value="一个按钮" @click="show()"> </div> <script src="js/vue.js"></script> <script> //1. 创建Vue核心对象 new Vue({ el:"#app", data(){ return { username:"", } }, methods:{ show(){ alert("我被点了..."); } } }); </script> </body> </html>3.3 条件判断指令
接下来通过代码演示一下 。在 Vue中定义一个 count 的数据模型 ,如下
//1. 创建Vue核心对象 new Vue({ el:"#app", data(){ return { count:3 } } });现在要实现 ,当 count 模型的数据是3时,在页面上展示 div1 内容;当 count 模型的数据是4时 ,在页面上展示 div2 内 容; count 模型数据是其他值时 ,在页面上展示 div3 。这里为了动态改变模型数据 count 的值 ,再定义一个输入框绑定 count 模型数据 。html 代码如下:
<div id="app"> <div v-if="count == 3">div1</div> <div v-else-if="count == 4">div2</div> <div v-else>div3</div> <hr> <input v-model="count"> </div>整页代码如下:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <div v-if="count == 3">div1</div> <div v-else-if="count == 4">div2</div> <div v-else>div3</div> <hr> <input v-model="count"> </div> <script src="js/vue.js"></script> <script> //1. 创建Vue核心对象 new Vue({ el:"#app", data(){ return { count:3 } } }); </script> </body> </html>通过浏览器打开页面并在输入框输入不同的值 ,效果如下
然后我们在看看 v-show 指令的效果 ,如果模型数据 count 的值是3时 ,展示 div v-show 内容 ,否则不展示 ,html页面代码如下
<div v-show="count == 3">div v-show</div> <br> <input v-model="count">浏览器打开效果如下:
通过上面的演示 ,发现 v-show 和 v-if 效果一样,那它们到底有什么区别呢?我们根据浏览器的检查功能查看源代码
通过上图可以看出 v-show 不展示的原理是给对应的标签添加 display css属性 ,并将该属性值设置为 none ,这样就达到 了隐藏的效果 。而 v-if 指令是条件不满足时根本就不会渲染。
3.4 v-for指令
这个指令看到名字就知道是用来遍历的,该指令使用的格式如下:
<标签 v-for="变量名 in 集合模型数据"> {{变量名}} </标签>注意:需要循环那个标签 , v-for 指令就写在那个标签上 。
如果在页面需要使用到集合模型数据的索引 ,就需要使用如下格式:
<标签 v-for="(变量名,索引变量) in 集合模型数据"> <!--索引变量是从0开始,所以要表示序号的话 ,需要手动的加1--> {{索引变量 + 1}} {{变量名}} </标签>代码演示:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <div id="app"> <div v-for="addr in addrs"> {{addr}} <br> </div> <hr> <div v-for="(addr,i) in addrs"> {{i+1}}--{{addr}} <br> </div> </div> <script src="js/vue.js"></script> <script> //1. 创建Vue核心对象 new Vue({ el:"#app", data(){ return { addrs:["北京","上海","西安"] } } }); </script> </body> </html>通过浏览器打开如下
4 生命周期
生命周期的八个阶段:每触发一个生命周期事件 ,会自动执行一个生命周期方法 ,这些生命周期方法也被称为钩子方法 。
下图是 Vue 官网提供的从创建 Vue 到效果 Vue 对象的整个过程及各个阶段对应的钩子函数
看到上面的图 ,大家无需过多的关注这张图 。这些钩子方法我们只关注 mounted 就行了 。
mounted :挂载完成 ,Vue初始化成功 ,HTML页面渲染成功 。而以后我们会在该方法中发送异步请求 ,加载数据 。
创心域SEO版权声明:以上内容作者已申请原创保护,未经允许不得转载,侵权必究!授权事宜、对本内容有异议或投诉,敬请联系网站管理员,我们将尽快回复您,谢谢合作!