🏆作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪,专注Java硬核干货分享,立志做到Java赛道全网Top N。
🏆本文收录于,Java基础教程系列,目前已经700+订阅,CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。
🏆姐妹篇,Java基础教程(入门篇),包含面向对象、基本数据类型、数组、继承和多态、泛型、枚举等Java基础知识点。
🏆姐妹进阶篇,Java基础教程(进阶篇),包含Java高并发、Spring、MySQL等Java进阶技术栈。
🏆全部订阅,可加入Java学习星球,完成Java从入门、实战、进阶全方位的Java知识体系学习。
目录
一、前言
二、百度百科
三、Vue安装
四、Vue入门语法
1、使用Vue实现hello world
2、vue列表展示
3、实现简单计数器
五、vue中的MVVM
六、理解vue生命周期
1、生命周期代码实例
2、生命周期
3、分析生命周期相关方法的执行时机
七、动态绑定属性
1、v-once
2、v-cloak
3、v-bind基础用法
4、v-bind绑定class属性
5、v-bind绑定class属性,简单写法:
6、v-bind绑定style样式
一、前言
大家好,我是哪吒,一个热爱技术的年轻人,架构师,是每一个程序员的梦想,因此,作为一个Java后端程序员,突击前端,迫在眉睫,而目前来说,最火的前端框架无疑就是Vue,我们公司前端也都是Vue,每次与前端联调的时候,因为对前端知识的匮乏,总是很无奈,不破不立,我决定花49天时间,系统的学习一下Vue。
因为酷爱斗破苍穹,这一系列就按照斗破苍穹中萧炎的成长历程为系列标题吧。
二、百度百科
Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式JavaScript框架。
与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用(SPA)提供驱动。
AngularJs是Vue早期开发的灵感来源。然而,AngularJS 中存在的许多问题,在 Vue 中已经得到解决。
Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件。
Vue.js 自身不是一个全能框架——它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时 ,Vue.js 也能驱动复杂的单页应用。
三、Vue安装
IDE使用WebStorm。
四、Vue入门语法
1、使用Vue实现hello world
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div id="app">{{message}}</div><script src="../js/vue.js"></script>
<script>//编程范式:声明式编程//var没有变量的作用域,var是js设计早期的缺陷// let:变量;const:常量let app = new Vue({el: '#app',//用于挂载要管理的元素data: {//定义数据message: '你好啊,哪吒'}})// 命令式编程// 1.创建div元素,设置id属性//2.定义一个变量叫message//3.将message变量放到前面的div中显示
</script>
</body>
</html>
2、vue列表展示
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div id="app"><ul><li v-for="item in girls">{{item}}</li></ul>
</div><script src="../js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {message: '你好啊,哪吒',girls: ['美杜莎','云韵','比比东','纳兰嫣然','雅妃']}})
</script>
</body>
</html>
3、实现简单计数器
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<div id="app"><h2>当前计数:{{counter}}</h2><!--<button v-on:click="counter++">+</button><button v-on:click="counter--">-</button>--><button v-on:click="add">+</button><button v-on:click="sub">-</button>
</div><script src="../js/vue.js"></script>
<script>// proxy代理const app = new Vue({el: '#app',data: {counter: 0},methods: {add: function (){this.counter++console.log('add被执行')},sub: function (){this.counter--console.log('sub被执行')}}})// 1.拿button元素// 2.添加监听事件
</script>
</html>
五、vue中的MVVM
MVVM有助于将图形用户界面的开发与业务逻辑或后端逻辑(数据模型)的开发分离开来,这是通过置标语言或GUI代码实现的。MVVM的视图模型是一个值转换器,这意味着视图模型负责从模型中暴露(转换)数据对象,以便轻松管理和呈现对象。在这方面,视图模型比视图做得更多,并且处理大部分视图的显示逻辑。视图模型可以实现中介者模式,组织对视图所支持的用例集的后端逻辑的访问。
六、理解vue生命周期
1、生命周期代码实例
2、生命周期
3、分析生命周期相关方法的执行时机
//===创建时的四个事件
beforeCreate() { // 第一个被执行的钩子方法:实例被创建出来之前执行console.log(this.message) //undefinedthis.show() //TypeError: this.show is not a function// beforeCreate执行时,data 和 methods 中的 数据都还没有没初始化
},
created() { // 第二个被执行的钩子方法console.log(this.message) //床前明月光this.show() //执行show方法// created执行时,data 和 methods 都已经被初始化好了!// 如果要调用 methods 中的方法,或者操作 data 中的数据,最早,只能在 created 中操作
},
beforeMount() { // 第三个被执行的钩子方法console.log(document.getElementById('h3').innerText) //{{ message }}// beforeMount执行时,模板已经在内存中编辑完成了,尚未被渲染到页面中
},
mounted() { // 第四个被执行的钩子方法console.log(document.getElementById('h3').innerText) //床前明月光// 内存中的模板已经渲染到页面,用户已经可以看见内容
},
//===运行中的两个事件
beforeUpdate() { // 数据更新的前一刻console.log('界面显示的内容:' + document.getElementById('h3').innerText)console.log('data 中的 message 数据是:' + this.message)// beforeUpdate执行时,内存中的数据已更新,但是页面尚未被渲染
},
updated() {console.log('界面显示的内容:' + document.getElementById('h3').innerText)console.log('data 中的 message 数据是:' + this.message)// updated执行时,内存中的数据已更新,并且页面已经被渲染
}
七、动态绑定属性
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body><div id="app">{{message}}<h2>{{firstName}} * {{lastName}}</h2><h2>{{counter * 2}}</h2>
</div><script src="../js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {message: '你好',firstName: '比比东',lastName: '美女',counter: 100}})
</script>
</body>
</html>
1、v-once
展示message的初始值,message值变化,界面也不会产生变化。
2、v-cloak
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>[v-cloak]{display: none;}</style>
</head>
<body>
<div id="app" v-cloak>{{message}}
</div><script src="../js/vue.js"></script>
<script>//在vue解析之前,div中有一个属性v-cloak//在vue解析之后,div中没有一个属性v-cloaksetTimeout(function(){const app = new Vue({el: '#app',data: {message: '你好'}})},1000)</script>
</body>
</html>
3、v-bind基础用法
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><!-- 错误的写法,这里不可以用mustache语法 --><!--{{imgUrl}}--><!-- v-bind --><img v-bind:src="imgUrl" alt=""><img :src="imgUrl" alt=""><a v-bind:href="aHref">百度一下</a>
</div><script src="../js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {message: '你好',imgUrl: 'D:\\CSDN\\static\\美杜莎1.jpg',aHref: 'http://www.baidu.com'}})
</script>
</body>
</html>
4、v-bind绑定class属性
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.active{color: red;}.line{text-decoration: underline;}</style>
</head>
<body>
<div id="app"><h2 v-bind:class="{active:isActive,line:isLine}">{{message}}</h2><button v-on:click="btnClick">按钮</button>
</div><script src="../js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {message: '你好',isActive: true,isLine: true},methods: {btnClick: function (){this.isActive = !this.isActive}}})
</script>
</body>
</html>
5、v-bind绑定class属性,简单写法:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.active{color: red;}.line{text-decoration: underline;}</style>
</head>
<body>
<div id="app"><h2 class="title" v-bind:class="{active:isActive,line:isLine}">{{message}}</h2><h2 class="title" v-bind:class="getClasses()">{{message}}</h2><button v-on:click="btnClick">按钮</button>
</div><script src="../js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {message: '你好',isActive: true,isLine: true},methods: {btnClick: function (){this.isActive = !this.isActive},getClasses: function (){return {active:this.isActive,line:this.isLine}}}})
</script>
</body>
</html>
效果也是一样的。
6、v-bind绑定style样式
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><h2 :style="{fontSize: finalSize + 'px', backgroundColor: finalColor}">{{message}}</h2><h2 :style="getStyles()">{{message}}</h2>
</div><script src="../js/vue.js"></script>
<script>const app = new Vue({el: '#app',data: {message: 'CSDN哪吒',finalSize: 50,finalColor: 'red'},methods: {getStyles: function (){return {fontSize: this.finalSize + 'px', backgroundColor: this.finalColor}}}})
</script>
</body>
</html>
上一篇:Vue基础知识总结 1:Vue入门
下一篇:Vue知识体系总结 3:Vue常用标签
🏆作者简介:哪吒,CSDN2022博客之星Top1、CSDN2021博客之星Top2、多届新星计划导师✌、博客专家💪,专注Java硬核干货分享,立志做到Java赛道全网Top N。
🏆本文收录于,Java基础教程系列,目前已经700+订阅,CSDN最强Java专栏,包含全部Java基础知识点、Java8新特性、Java集合、Java多线程、Java代码实例,理论结合实战,实现Java的轻松学习。
🏆姐妹篇,Java基础教程(入门篇),包含面向对象、基本数据类型、数组、继承和多态、泛型、枚举等Java基础知识点。
🏆姐妹进阶篇,Java基础教程(进阶篇),包含Java高并发、Spring、MySQL等Java进阶技术栈。
🏆全部订阅,可加入Java学习星球,完成Java从入门、实战、进阶全方位的Java知识体系学习。