Java前端Vue
前端开发模式的发展
静态页面
最初的网页以HTML为主,是纯静态的网页。网页是只读的,信息流只能从服务的到客户端单向流通。开发人员也只关心页面的样式和内容即可。
异步刷新,操作DOM
1995年,网景工程师Brendan Eich 花了10天时间设计了JavaScript语言,随着JavaScript的诞生,我们可以操作页面的DOM元素及样式,页面有了一些动态的效果,但是依然是以静态为主。
ajax盛行:2005年开始,ajax逐渐被前端开发人员所重视,因为不用刷新页面就可以更新页面的数据和渲染效果。此时的开发人员不仅仅要编写HTML样式,还要懂ajax与后端交互,然后通过JS操作Dom元素来实现页面动态效果。比较流行的框架如Jquery就是典型代表
MVVM,关注模型和视图–相当于后端的MVC,但是前端的MVVM比MVC强大
2008年,google的Chrome发布,随后就以极快的速度占领市场,超过IE成为浏览器市场的主导者。
2009年,Ryan Dahl在谷歌的Chrome V8引擎基础上,打造了基于事件循环的异步IO框架:Node.js。
node.js的伟大之处不在于让JS迈向了后端开发,而是构建了一个庞大的生态系统。
2010年,NPM作为node.js的包管理系统首次发布,开发人员可以遵循Common.js规范来编写Node.js模块,然后发布到NPM上供其他开发人员使用。目前已经是世界最大的包模块管理系统
随后,在node的基础上,涌现出了一大批的前端框架:
MVVM模式
在MVVM之前,开发人员从后端获取需要的数据模型,然后要通过DOM操作Model渲染到View中。而后当用户操作视图,我们还需要通过DOM获取View中的数据,然后同步到Model中
双向绑定
而MVVM中的VM要做的事情就是把DOM操作完全封装起来,开发人员不用再关心Model和View之间是如何互相影响的:(双向绑定)
把开发人员从繁琐的DOM操作中解放出来,把关注点放在如何操作Model上。
注:所有的获取页面元素或者给页面元素赋值的操作都是DOM操作
可能会面临的面试题:
面试题1:解释一下MVVM?
M:model数据层
V:view视图层
VM:将model层和view层绑定在一起的层,这一层vue已经自动完成好了
面试2:MVC和MVVM的区别是什么?
在MVVM之前,开发人员从后端获取需要的数据模型,然后要通过DOM操作Model渲染到View中。而后当用户操作视图,我们还需要通过DOM获取View中的数据,然后同步到Model中。
而MVVM中的VM要做的事情就是把DOM操作完全封装起来,开发人员不用再关心Model和View之间是如何互相影响的:
只要我们Model发生了改变,View上自然就会表现出来。 当用户修改了View,Model中的数据也会跟着改变。认识Vue
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
渐进式:
1 我们可以像使用jQuery一样,使用vue – 熟悉vue的基础语法
2 采用node的方式去使用vue --企业级开发模式 – 掌握vue企业级开发模式
前端框架三巨头:Vue.js(150k)、React.js(118k)、AngularJS(45k),vue.js以其轻量易用著称,vue.js和React.js发展速度最快,AngularJS已经是老三,而且还在继续下降。
官网:https://cn.vuejs.org/
参考:https://cn.vuejs.org/v2/guide/
Git地址:https://github.com/vuejs
尤雨溪,Vue.js 创作者,Vue Technology创始人,致力于Vue的研究开发。
总结:
1 vue是一个mvvm框架,就是后端的MVC框架,但是功能更强大
2 vue的最全面的文档是官方文档
3 vue现在很火
快速入门
1. 创建工程
创建一个maven工程:
名字位置找到自己的地方即可:
2.安装vue
下载地址:https://github.com/vuejs/vue
https://github.com/vuejs/vue/blob/dev/dist/vue.js
使用CDN
或者也可以直接使用公共的CDN服务:
<!-- 开发环境版本,包含了用帮助的命令行警告 --> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> 12
或者:
<!-- 生产环境版本,优化了尺寸和速度 --> <script src="https://cdn.jsdelivr.net/npm/vue"></script> 12
只用一个即可。
3.vue入门案例
1.HTML模板
在vue-demo目录新建一个HTML:
在hello.html中,我们编写一段简单的代码:
h2中要输出一句话:xx 非常帅。效果图如下所示:
2.vue渲染
然后我们通过Vue进行渲染:
<!-- 引入vue --> <script src="vue-2.6.10.js"></script> <!-- 1 必须要有父容器,所有内容只能写在这个父容器中,父容器一定要有id属性,id的值自定义,但是一般叫 app --> <div id="app"> <!-- 此处需要获取Vue对象中的name,{ { }}两个大括号获取data中的属性的值--> <h2>{ { name}}很帅</h2> </div> <!-- 通过vue控制x显示的内容 --> <script> // 方向一:当改变data.属性内容的时候,view中自动更新 // 方向二:当在页面改变name的时候,data中的name也会自动更新 var vm = new Vue({ el:"#app",//el就是element的简写,指向父容器的id data:{ // data 专门用来存放数据 name:"奇哥", } }); </script>
123456789101112131415161718192021222324252627首先通过 new Vue()来创建Vue实例
然后构造函数接收一个对象,对象中有一些属性:
el:是element的缩写,通过id选中要渲染的页面元素,本例中是一个div data:数据,数据是一个对象,里面有很多属性,都可以渲染到视图中 name:这里我们指定了一个name属性页面中的h2元素中,我们通过{ {name}}的方式,来渲染刚刚定义的name属性。
打开页面查看效果:
更神奇的在于,当你修改name属性时,页面会跟着变化:
此处可以改变name的值,当name的值改变的时候,整个数据也都会发生改变;
3.双向绑定
方向一:当data中的数据发生改变的时候,页面的显示也会自动改变
方向二:当页面的 文本框的值 发生改变的时候,data中的属性也会对应发生改变
我们对刚才的案例进行简单修改:
<div id="app"> <input type="text" v-model="num"> <h2> { { name}} 非常帅, 有{ { num}}位女神为他着迷。 </h2> </div> <script src="vue-2.6.10.js"></script> <script type="text/javascript"> // 生成一个Vue实例 var app = new Vue({ el:"#app", // el,即element。要渲染的的页面元素 data:{ // 数据 name:"奇哥", num:1 } }) </script>
123456789101112131415161718192021222324 我们在data添加了新的属性:num 在页面中有一个input元素,通过v-model与num进行绑定。 同时通过{ {num}}在页面输出效果:
我们可以观察到,输入框的变化引起了data中的num的变化,同时页面输出也跟着变化。
没有任何dom操作,这就是双向绑定的魅力。
4.事件处理
我们在页面添加一个按钮:
<input type="button" value="+" v-on:click="num++"> <input type="button" value="-" v-on:click="num--"> 12
效果:
4.Vue实例
1.创建Vue实例每个 Vue 应用都是通过用 Vue 函数创建一个新的 Vue 实例开始的:
var vm = new Vue({ // 选项 }) 1234
在构造函数中传入一个对象,并且在对象中声明各种Vue需要的数据和方法,包括:el、data、methods 等
2.模板或元素el : 我们可以通过el属性来指定。
例如一段html模板:
<div id="app"> </div> 123
然后创建Vue实例,关联这个div
var vm = new Vue({el:"#app" }) 1234
这样,Vue就可以基于id为app的div元素作为模板进行渲染了。在这个div范围以外的部分是无法使用vue特性的。
3.数据当Vue实例被创建时,它会尝试获取在data中定义的所有属性,用于视图的渲染,并且监视data中的属性变化,当data发生改变,所有相关的视图都将重新渲染,这就是“响应式“系统。
html:
<div id="app"> { { name}} <input type="text" v-model="name"/> </div> 123456
js:
var vm = new Vue({ el:"#app", data:{ name:"刘德华" } }) 12345678
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script> </head> <body> <div id="app"> { { name}} <input type="text" v-model="name"/> </div> <script > var vm = new Vue({ el:"#app", data:{ name:"刘德华" } }) </script> </body> </html>
12345678910111213141516171819202122232425262728 name的变化会影响到input的值 input中输入的值,也会导致vm中的name发生改变 4.方法Vue实例中除了可以定义data属性,也可以定义方法,并且在Vue的作用范围内使用。
html:
<div id="app"> { { num}} <button v-on:click="add">加</button> </div> 123456
js写法一:
<div id="app"> { { num}} <button v-on:click="add">加</button> </div> <script src="vue-2.6.10.js"></script> <script> var vm = new Vue({ el:"#app", data:{ num:0 }, methods:{ add:function(){ this.num++; } } }); </script>
123456789101112131415161718192021222324js写法二:
<!DOCTYPE html> <html lang="en" xmlns:v-on="http://www.w3.org/1999/xhtml"> <head> <meta charset="UTF-8"> <title>事件</title> <script src="vue-2.6.10.js"></script> </head> <body> <div id="app"> num的值:{ { num}}<br> <!-- v-on :指令, 是Vue中的语法123456789101112
相关知识
基于java jsp ssm vue网上鲜花店网站设计实现vue
基于Vue的花店管理系统
Java 基于 SpringBoot +vue 的线上花店销售系统
从前端到后端——完整的Web开发指南
基于java jsp ssm vue手机销售库存管理系统vue
Java实现鲜花销售系统
基于springboot的“花开富贵”花园管理系统java项目
java毕业设计网上花店系统(Springboot+mysql+jdk1.8+maven3.39)
基于Java毕业设计新型冠状病毒防控咨询网站2020源码+系统+mysql+lw文档+部署软件
java毕业设计网上花店商城的设计与实现(Springboot+mysql+jdk1.8+maven3.39)
网址: Java前端Vue https://www.huajiangbk.com/newsview949346.html
上一篇: 解决 vue 项目一直出现 so |
下一篇: 浅谈Web前端工程师的晋升之路: |
推荐分享

- 1君子兰什么品种最名贵 十大名 4012
- 2世界上最名贵的10种兰花图片 3364
- 3花圈挽联怎么写? 3286
- 4迷信说家里不能放假花 家里摆 1878
- 5香山红叶什么时候红 1493
- 6花的意思,花的解释,花的拼音 1210
- 7教师节送什么花最合适 1167
- 8勿忘我花图片 1103
- 9橄榄枝的象征意义 1093
- 10洛阳的市花 1039