vue
一 、vue 是什么?
vue是一个构建用户界面的(UI) 的js 库
是一个构建数据驱动的渐进式框架,vue.js的目标是通过尽可能的简单的API实现响应的数据绑定和组合的视图组件。基于MVVM (Model View ViewModel ) 设计的模式书写。
vue 只关注视图层,可以快速的创建用户界面。
vue的目标是通过尽可能的简单的API 实现响应的数据绑定和组合的视组件。
二、Vue 的特点
体积小
gzip 压缩之后20k,并且不依赖其他基础库。
更高的运行效率
基于虚拟的dom ,一种可以预先通过js (在内存中)进行各种运算,把最终的dom 操作计算出来,并优化的技术,由于这种对dom操作的预处理操作,并没有真的是操作dom,所以叫做虚拟dom.
数据的双向绑定
让开发者不用再去操作dom 对象,把更多的精力投入到业务逻辑上。
生态丰富、学习成本本
市场上拥有大量常熟、稳定的基于vue.js 的UI 框架、常用组件! 拿来即用。快速开发
vue的优点:
渐进式的框架、轻量级。数据的双向绑定,指令系统v-xx,组件化系统,单页面应用。操作虚拟的dom 节点。
三、vue 项目的环境搭建
vue是一个JavaScript 框架,是一个以JavaScript 编写的库。
vue是一个JavaScript 文件形式发布的,可以通过script 标签添加到网页中。
3.1 CDN 引入
<script src="https://cdn.bootcss.com/vue/2.3.3/vue.js"></script>
CDN 全称是content delivery network ,即内容分发网络,CDN 的通俗的理解就是网站加速,可以让客户端快速访问资源。
3.2 使用vue 官方脚手架(vue-cli)
vue-cli 是一个基于vue.js 进行的快速开发的完整系统,是一个官方的脚手架。可以帮助我们快速创建vue 项目目录。
分为:
1、生产环境,项目开发结束,部署上线阶段
2、开发坏境,项目属于开发阶段
安装过程:
下载脚手架
yarn add vue-cli -g
查看vue-cli 的版本
vue -V
创建项目
vue init webpack 项目名 或者 vue creade 项目名称
接下来就是选项了。废话不多说,你可以根据你需要的选项进行选择。有一个口诀可以分享给你们。
前面4个enter,后面4个N,最后一个enter
建立好项目之后,cd 项目名称。 进入项目
让你的项目跑起来:
yarn start 或者 npm run dev / yarn serve (具体的可以看你的package.json)
如果是想要运行完了之后自动打开网页: 需要找到你的根目录下的config.js 文件
四、正式进入vue项目:
4.1vue项目-目录文件说明:
4.2文件目录说明:
1.main.js 是我们的入口文件,也初始化了vue的实例对象,并且也是对所需要的的插件的引用。
2.app.vue 是我们的根组件,所有页面都是app.vue 下面切换的,可以理解为所有的组件都是app.vue 的子组件,可以把头部底部每个页面都出现的文件都放在app.vue 里面,以及在里面写公用的css代码。
3、index.html 文件入口,内容简单
4.package.json 主要存放的项目依赖的目录,dependencies 为生产依赖,devDependencies 为开发依赖。
5、node_modules 为依赖的模块,文件较大,项目管理(git,svn) 提交的时候记得忽略此项。
6.config - index.js 文件,项目的配置(全局变量js文件),是默认的配置,没有问题,基本上就不用去改。根据需要,更改。
接下来,我们就进入文件的目录:
注意:所有的是vue的文件,后缀名都是**.vue** ,快速搭建基本结构 vbase,自行选择:vbase-less,vbase-scss等等
4.3插件说明:
1、使用less步骤:
安装
yarn add less@3.10.3 --save
yarn add less-loader@5.0.0 --save
备注:担心node版本过高用不起less ,我是特意下载了对应的版本,大家根据自己的情况,可以不指定版本
备注:
-S 即--save(保存)
包名会被注册在package.json的dependencies里面,在生产环境下这个包的依赖依然存在。
-D,即dev(生产)
包名会被注册在package.json的devDependencies里面,仅在开发环境下存在的包用-D,如less、sass-loader这些解析器
区别:
-S 是--save 的简写, -D 是 --save-dev
devDependencies 中的插件只用于开发坏境,不用于生产坏境,而dependencies是需要发布到生产坏境中,像babel、webpack这些压缩代码、打包的工具,在实际运行中不需要,所以用-D;想elementui、echarts这些插件在实际运行中也是需要的,所以用-S。
如果是你的less 安装了还运行不了,那就看一下,你安装的版本了。
卸载less
yarn remove less-loader
yarn remove les45s
可以安装两个插件,有助于我们快速开发
五、基础知识点
1、组件
1.1什么是组件?
所谓的组件,就是封装起来的具有独立功能的UI部件。
整个UI 框架是一个通过小组件构成的大组件,每个组件职位关心自己部分应该有的逻辑。彼此是独立的。
组件的特点:可复用、可组合、易维护。
1.2单文件组件
一个xx.vue 文件就是一个单文件组件,功能逻辑独立,由template、 script 、 style 三部分组成的。
<template>
<div>
HTML:这里是写HTML基本结构的,注意有且仅有一个根节点
</div>
</template>
<script>
这里是写js逻辑的,默认暴露出去的是一个dom 节点
export default {}
</script>
<style lang="less" scoped>
这里写的是css 样式
</style>
注意:
style 标签可以通过lang="scss" 选择预处理语言,需要安装对应的loader模块。
style标签上可以通过scoped 让样式私有化
template有且仅有一个根节点 。原因是原生js 只可以创建父子节点,不可以创建子节点
1.3 自定义组件
1、引入组件(引入一个你需要用的组件,已经写好的xx.vue)
2、注册组件(需要再components 上面去注册)
3、使用组件(注册叫什么名字,你就当做标签名使用就完事)
<template>
<div>
<!-- 使用组件 -->
<Hollw :message="val1"></Hollw>
</div>
</template>
<script>
import Hollw from "./components/Hello.vue";// 引入组件
export default {
components: {
Hollw,//注册组件
},
};
</script>
<style lang="less" scoped>
</style>
2、Mustach 表达式和配置选项
2.1 data 配置选项 和Mustach 模板语法
目前的template 模板中数据是写死的,如何渲染动态的数据呢,这个时候就需要data配置选项和mastach 表达式了。
| 1、mustach 表达式 |
|---|
| 语法:{{表达式}} |
| 2、配置选项: |
| el : 挂载dom |
| data: 准备数据,必须是函数,每次返回的是一个新的对象。 |
| methods:{} 方法() 函数 |
| components:{"标签名":引入的组件的变量名} |
3、vue 提供了哪些指令?
3.1 什么是指令:
指令是写在标签上一种自定义的属性,主要是把vue 实例中的数据,输出到html 中(vue 实例对象和html 关联)
<标签 id=”” class=”” V-*=”xxx”></标签> // “ V-“ 开头的就是指令
3.2 常用指令
v-text 和 v-html
| 指 令 | 作用 | 说明 |
|---|---|---|
| v-text 和 v-html | 页面动态数据的回显,常见的v-text 直接使用“{{表达式}}”替代,v-html 显示富文本数据。 | v-text 不能识别html 标签,v-html可以解析html |
| v-show和v-if | 控制页面内容的显示和隐藏,常见的v-show 显示或者隐藏切换频繁,v-if 显示 | v-show 是通过控制display来显示和隐藏,而v-if 是操作dom节点。如果频繁的切换显示和隐藏就用v-show,使用v-if 性能低。绑定数据发生改变时,v-if 会重新渲染页面,而v-show不会。 |
| v-if 和v-else-if 和 v-else | 用于页面结构中的逻辑判断。 | 配合使用,逻辑和js 中的条件判断语句一致,会从上往下,找到满足条件的第一个表达式,渲染该dom 。指令元素之间必须要紧密相间 |
| v-for | 循环数组和对象 | 循环数组:v-for=”(元素的值, 元素的索引) in 数组”;循环对象: v-for=”(元素的值, 键名,元素的索引) in 对象” |
| v-mode | 只能使用表单。让表单和数据双向绑定。 | 适用的标签:input(输入框 单选框 多选框 ) select textarea |
| v-on | v-on:事件名="函数名(参数1,参数2)" | 简写:@事件名=“函数名” |
4、事件对象:
在鼠标事件或者是其他事件函数中,具有事件对象的函数,传参事件,若有实参传入,且需要事件对象的话,需要加上$event 。参数一一对应即可。而不需要其他参数时,那就直接在定义函数的地方使用形参。这个形参就是事件对象。
例如:
5、v-model:
作用表单元数据的绑定:体现了架构的思想—mvvm ,数据双向绑定,1.数据层改变,视图层跟着改变,视图层改变,数据层也跟着改变.
6、修饰符
6.1事件修饰符:
.stop 阻止事件冒泡
.prevent 阻止默认行为
.self 只在event.target 时当前自身时触发处理函数
.one 一次性事件绑定
6.2 键盘修饰符
.enter .up .left .down .right
6.3 表单修饰符
.lazy 不会实时数据绷定,在change事件中进行数据绑定.number 将输入的内容,转化为number数据类型.trim 过滤手尾空白的字符
7、 computed 计算属性
计算属性的本质是属性,这个属性是通过计算得到的,说明是要函数处理之后才能拿到的值。
备注:
页面第一次加载的时,该函数会默认执行(的第一次执行)。会给这个计算属性赋一个初始的值,依赖属性变化时,该函数会再次执行。
注意:
- 计算属性的值,一定是个函数,而且这个函数一定要有返回值。
- 计算属性处理的函数里面this的指向是当前vue 实例对象
- 页面第一次加载时,计算属性的函数会第一次执行,给这个属性赋一个初始值
- 计算属性可以直接在template 里面渲染,说明他也是当前实例对象的属性
- 依赖的属性发生变化的时候,计算属性的值函数会再次执行。
8、监听器 watch
作用:用来监听data里面的数据变化,一旦数据发生改变,就睡自动执行相关的函数。
分类:深监听和浅监听
浅监听:监听基本类型
深监听:监听引用数据类型
watch和computed 区别
watch:监听的data和computed 中数据的变化,可以进行异步操作
computed:定义属性,该属性是通过计算得到的,不可以进行异步操作,通过return 返回处理的数据
六、生命周期
1、概念
一个vue 实例生命的周期,也就是vue实例从开始到结束的过程,从创建到销毁的过程。
2、生命周期的阶段
2.1 创建阶段
beforecreate:创建之前的钩子函数
作用:一般不适用个,在做一些需要之前需要做的事情。
注意: 这里不可以操作data中的数据,因为data没有初始化
created : 创建之后的钩子函数
作用:一般用于数据请求,开启定时器
2.2 挂载阶段
a.看看有没有 el 或者 $mount
b.把data 中的 数据和模板 翻译生成 虚拟的dom 节点(JS 对象)
beforemount : 挂载之前
注意:在这个函数里面,页面没有真正的渲染出来,只是有了虚拟的dom 节点(js对象)
mounted : 挂载之后
作用: 把虚拟的dom 真正的渲染到页面上,页面上有了真实的dom 从这里开始就可以使用$refs 获取dom 节点
初始化一些插件相关的配置,也可以发送数据请求
2.3 更新阶段
beforeupdata : 更新之前
作用:做一些判断,是否要新
updata: 更新之后
2.4 销毁阶段
beforeDestroy:销毁之前
作用:销毁之前做一些操作
beforeDestroy : 销毁之后
作用:释放定时器相关的内容,销毁之后。事件绑定都不存在