目前典型的前端三大框架:Angular.js、React.js、Vue.js。其中,Vue.js框架更容易上手,灵活度更高,在企业级开发中受到前端开发人员的青睐。
Vue.js的官方文档中是这样介绍的:简单小巧的核心,渐进式的技术栈,足以应付任何规模的应用。
Vue.js的官方文档介绍详情:介绍 — Vue.js (vuejs.org)https://cn.vuejs.org/v2/guide/index.html
官方文档创建HelloWorld例子:介绍 — Vue.js (vuejs.org)https://cn.vuejs.org/v2/guide/
创建一个HelloWorld.html文件,然后通过如下方式引入 Vue:
Vue.js 的核心是一个允许采用简洁的模板语法来声明式地将数据渲染进 DOM 的系统:
{{ message }}
运行结果:
与知名的前端框架Angular.js等一样,Vue.js在设计上也是使用的MVVM(Mode-View-ViewModel)模式。
- M:模型(Model) :负责数据存储,对应data 中的数据。
- V:视图(View) :负责页面展示,对应DOM元素。
- VM:视图模型(ViewModel) :负责业务逻辑处理,对数据进行加工后交给视图展示,对应 Vue 实例对象。
Vue.js自定义了一种xxx.vue文件,可以把HTML、CSS、JS代码写到一个文件中,从而实现对一个组件的封装,一个xxx.vue文件就是一个单独的组件。
使用脚手架Vue-cli创建的一个大觅项目,项目模板自带的单文件组件HelloWorld.vue。
HelloWorld.vue示例代码:
{{ msg }}
在单文件组件中,data必须是一个函数,它返回一个对象,返回的对象的数据供组件实现。
Vue实例是Vue框架的入口,也是前端的ViewModel,它包含了页面中的业务逻辑处理、数据模型等。使用脚手架Vue-cli创建的一个大觅项目中的main.js就是项目的入口文件。
main.js部分示例代码:
new Vue({
el: '#app',
router,
components: { App },
template: ' '
})
语法:{{ ... }}
插值表达式可以理解为使用双大括号来包裹JS代码,作用是将双大括号中的数据替换成对应属性值进行展示。
插值表达式中可以写入以下内容:
- JSON数据
- 数字
- 字符串
- 插值表达式
示例代码(HelloWorld.vue):
{{ msg }}
{{10}}
{{"string"}}
{{1+1}}
{{'hello'+name}}
{{2>3?'true':'false'}}
在插值表达式中需要注意区分变量和字符串,使用引号包裹的为字符串,没有使用引号包裹的都会被系统解析成变量名和方法名。
所谓“生命周期”,是指示例对象从构造函数开始执行(被创建)到GC(GarbageCollection,垃圾回收)回收销毁的整个存在时期,在生命周期中被自动调用的函数叫做生命周期函数,也被形象地称为生命周期钩子函数。
生命周期函数的作用:
在Vue实例对象从创建到被回收的整个过程中,不同的时期会有不同的钩子函数,可以利用不同时期的钩子函数完成不同的操作。例如需要在某个时期去获取后台数据、在某个时期去更新数据等。
表2.2 生命周期函数
生命周期函数 | 含义 |
beforeCreate(创建前) | 组件实例刚刚被创建,组件属性计算之前,比如data属性等 |
Created(创建后) | 组件实例刚刚被创建完成,属性已经绑定,此时DOM还未生成, $el属性还不存在 |
beforeMount(载入前) | 模板编译、挂载之前 |
mounted(载入后) | 模板编译、挂载之后 |
beforeUpdate(更新前) | 组件更新之前 |
updated(更新后) | 组件更新之后 |
beforeDestroy(销毁前) | 组件销毁前调用 |
destroyed(销毁后) | 组件销毁后调用 |
几个常用的生命周期函数,以及在这些函数中可以完成的事情:
beforeCreate生命周期函数在组件实例刚被创建的时候增加一些loading事件。
created生命周期函数可以结束loading事件,完成一些初始化,实现函数自执行。
mounted是比较重要的生命周期函数,可以发起后端请求,取回数据,接收页面之间传递的参数、由子组件向父组件传递参数等。
代码示例(HelloWorld.vue):
{{ msg }}
语法 在HTML元素的开始标签 v-bind:属性名="常量||变量名"
简写 :属性名="常量||变量名"
示例代码:
很多时候,我们希望动态的来切换class,比如:
绑定class有两种方式:
单个属性的对象语法示例代码:
对象语法中也可以传入多个属性来动态切换class。而且动态绑定的class可以与普通的class共存。
多个属性的对象语法示例代码:
当需要应用多个class时,可以使用数组语法,给 :class 绑定一个数组,应用一个class列表。
示例代码:
使用三元表达式来根据条件切换class,示例代码:
使用v-bind:style(即 :style )可以给元素绑定内联样式,方法与 :class 类似。
第一种写法:
{{ msg }}
绑定内联样式
第二种写法:
{{ msg }}
绑定内联样式