第1章 Vue入门
Vue.js是构建Web界面的JavaScript库,也是一个通过简洁的API提供高效数据绑定和灵活组件的系统。
Weex
主要特点
- 轻量级的框架
- 双向数据绑定
声明式渲染是数据双向绑定的主要体现,同样也是Vue.js的核心 - 指令
- 组件化
是Vue.js最强大的功能之一,可大量减少代码编写量,组件还支持热重载(当我们做了修改时,不会刷新页面,只是对组件本身进行立刻重载,不会影响整个应用当前的状态。CSS也支持热重载。) - 客户端路由
Vue-router的Vue.js官方的路由插件 - 状态管理
就是一个单向的数据流,State驱动View的渲染,而用户对View进行操作产生Action,使State产生变化,从而使View重新渲染,形成一个单独的组件
Vue.js的优势
与其他几个框架比,最轻量化
npm速度慢的话,可以使用淘宝镜像安装
Vue-cli
vue-cli脚手架是Vue.js提供的一个官方命令行工具,用于快速搭建大型单页应用
创建项目——进入项目目录安装依赖项——运行项目
项目文件目录结构
1 | ├── build ——保存webpack的基本配置 |
数据挂载
1 | created() {} ——> mounted() {} ——> updated () {} |
MVVM模式
Model-View-ViewModelD 的缩写,是基于前端开发的架构模式
专注于View层
它的核心是MVVM中的VM,也就是ViewModel,负责连接View和Model,保证视图和数据的一致性
ViewModel是Vue.js的核心,它是一个Vue实例。
DOM Listeners 和Data Bindings看作两个工具,是实现双向绑定的关键。
第2章 Vue数据绑定
Vue模板语法
模板语法
1 | mustache 语法 “{{ }}” |
插值
1 | <p>你好: {{ name }}</p> |
表达式
Vue支持JavaScript的所有表达式
1 | {{ number + 1}} |
但有一个限制,每个绑定都只能包含单个表达式,所以下面的例子都不会生效。
1 | <!-- 这是语句,不是表达式 --> |
只适用简单的表达式,复杂的可以使用computed
响应式声明渲染机制
Vue是一个响应式系统,模型(Model)层只是普通的JavaScript对象,修改它则视图(View)自动更新。Vue的工作原理是当把一个普通的JavaScript对象传给Vue实例的data选项时,Vue的工作原理是一个普通的JavaScript对象传给Vue实例的data选项时,Vue会遍历此对象的所有属性,在属性被访问和修改时通知变化,并把数据渲染进DOM。
响应式声明渲染机制简介
采用简洁的模板语法声明式地将数据渲染进DOM的系统。
使用v-model绑定输入框
Vue属性绑定
1 | <a href= {{ url}}></a> |
Vue双向数据绑定
一种是表达式绑定,一种是属性名也是一种指令,如v-model就是双向绑定
Vue计算属性
计算属性
computed,有缓存功能,可防止复杂计算逻辑多次调用引起的性能问题
1 | computed: { |
1 | firstName: 'Foo', |
计算属性与methods的区别
计算属性只有在它的相关依赖发生变化时才回重新求值。这意味着只要book的属性还没有发生改变,多次访问totalPrice计算属性会立即返回之前的计算结果,而不必再次执行函数。
相比之下,每当触发重新渲染时,调用方法将总是再次执行函数。为什么需要缓存?假设有一个性能开销比较大的计算属性,需要遍历一个巨大的数组并做大量的计算,然后又缓存,所以每次访问都要重新执行。如果你不需要缓存功能,就使用methods。
计算属性的特点:
- 计算属性使数据处理结构清晰
- 依赖于数据,若数据更新,则处理结果自动更新
- 计算属性内部this指向vm实例
- 在模板调用时,直接写计算属性名即可。
- 常用的是getter方法,用于获取数据,也可以使用setter方法改变数据
- 相较于methods,不管改变依赖的数据是否改变,methods都会重新计算,但是依赖数据不变的时候,computed从缓存中获取,不会重新计算。
Vue生命周期
Vue生命周期详解
activated:需要配合动态组件keep-alive属性使用,在动态组件初始化渲染的过程中调用该方法
deactivated:需要配合动态组件keep-alive属性使用,在动态组件初始化移出的过程中调用该方法
Vue各生命周期适合开发的业务逻辑
1 | created:进行AJAX请求异步数据的获取、初始化数据 |
第3章 Vue指令
Vue指令概述
指令
1 | <p v-if="flag">插入或移除<p>标签</p> |
指令修饰符
1 | "."表示特殊后缀,表示指令应该以特殊的方式绑定 |
Vue指令详解
v-if
根据表达式的值在DOM中生成或移除一个元素
注意:v-if是一个指令,需要添加到一个元素上才有效,如果想要切换多个元素,可以把元素当作包装元素,使用v-if来切换元素
1 | <!-- <template>是Vue的容器元素,目前不支持v-show,但支持v-if --> |
v-else
1 | <span v-if="ok"> |
v-else-if
1 | <span v-if="type== 'A'"> |
指令v-for
根据一组数组的选项列表进行渲染,需要用一个item in items的特殊语法,items是源数据数组,item是数组元素迭代的别名。
v-for 迭代数组
1 | <li v-for="item in items" :key="item.message"> |
v-for 迭代对象
1 | (4)整数迭代 |
v-for Template
利用带有 v-for 的 来循环渲染一段包含多个元素的内容,template标签不显示,只是起到了包裹作用。
1 | <ol> |
v-on
v-on指令绑定一个事件监听器
官网文档-事件处理
1 | <button v-on:click="warn('Form cannot be submitted yet.', $event)"> |
事件修饰符
1 | <!-- 阻止单击事件继续传播 --> |
按键修饰符
.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right
系统修饰键
.ctrl
.alt
.shift
.meta
v-show
控制元素的显示隐藏,即控制元素的display,v-hide与v-show相反
v-if有更高的切换消耗,而v-show有更高的初始渲染消耗,因此,如果需要频繁切换,则使用v-show较好;
如果在运行时条件不大可能改变,则使用v-if较好。
Vue动态样式绑定
v-bind绑定class
1 | <!-- 采用对象表达式 --> |
绑定内联样式
1 | <div v-bind:style="{ color: activeColor, fontSize: fontSize + 'px' }"></div> |
Vue表单输入绑定
v-model
修饰符
.lazy
1 | 在默认情况下,v-model 在每次 input 事件触发后将输入框的值与数据进行同步 (除了上述输入法组合文字时)。 |
.number
1 | 如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符: |
.trim
1 | 如果要自动过滤用户输入的首尾空白字符,可以给 v-model 添加 trim 修饰符: |
Vue事件处理
监听事件
监听事件直接把事件写在v-on指令中.
1 | <div id="example-1"> |
方法事件处理器
然而许多事件处理逻辑会更为复杂,所以直接把 JavaScript 代码写在 v-on 指令中是不可行的。
因此 v-on 还可以接收一个需要调用的方法名称。
1 | <div id="example-2"> |
内联处理器中的方法
除了直接绑定到一个方法,也可以在内联 JavaScript 语句中调用方法
1 | <div id="example-3"> |
有时也需要在内联语句处理器中访问原始的 DOM 事件。可以用特殊变量 $event 把它传入方法:
1 | <button v-on:click="warn('Form cannot be submitted yet.', $event)"> |
- 本文作者: LQbank
- 本文链接: http://example.com/2020/06/15/《Vue-js前端开发技术》/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!