# Vue基础培训
<br>
## 1 培训简介
### 1.1 内容
<p @click="changeShow1">本次培训是一次较为基础的培训,目的让大家能够产生对Vue的兴趣,了解Vue和jQuery之间的区别以及初学一下Vue。</p>
<img v-show="showImg1" @click="changeShow2" src='https://t1.picb.cc/uploads/2020/03/04/k3qNjR.md.png' style="width:500px;display:none;">
<img v-show="showImg1 && showImg2" src='https://t1.picb.cc/uploads/2020/03/04/k3qQY8.jpg' style="width:500px;display:none;">
### 1.2 目标
认真学完之后,大家拿到Vue工程源码的时候,能够将它运行起来,并且能够了解大部分常用的Vue基础语法,做到能够大致阅读和简单修改Vue源码。
<br><br>
## 2 Vue项目的运行
### 2.1 下载并安装nodejs
<a href="https://nodejs.org/zh-cn/download/" target="_blank">下载链接</a>
安装完成之后,打开命令行工具,输入 node -v,如果出现相应的版本号,则说明安装成功。
### 2.2 了解npm
npm包管理器(类似Java中的maven),是集成在node中的,所以,直接输入 npm -v就会显示出npm的版本信息。
npm常用命令:
npm install packagename --save 或 -S(生产环境依赖)
npm install packagename --save-dev 或 -D(开发环境依赖)
npm install packagename -g 或 --global(全局)
npm uninstall(卸载)
npm update(更新)
npm run build(编译)
将Vue工程代码打包成html,js,css的目录结构包
注:当安装不上依赖的时候可以优先切换npm源(npm config set registry http://r.cnpmjs.org/)
<img src='https://t1.picb.cc/uploads/2020/03/02/kvDZv7.png'>
### 2.3 拿到工程源码,安装依赖并运行。
npm install 直接安装依赖。原理就是包管理器会去检索package.json文件,并且安装json文件中的包。
并且会增加一个node_modules文件夹,工程所需要的所有依赖包都会安装到该文件中。依赖安装完成之后,
运行npm run dev 或者npm run serve 命令即可启动应用。具体使用哪一条命令可以在package.json中查看。
<img src='https://t1.picb.cc/uploads/2020/03/02/kvDOpW.md.png'>
<br><br>
## 3 Vue概述与基础知识点
### 3.1 Vue概述
3.1.1 什么是Vue
Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。
Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链
以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
Vue有三个核心概念:数据驱动,组件系统,生命周期。
用原生JavaScript事件驱动通常是这样的流程:
先通过特定的选择器查找到需要操作的节点 -> 给节点添加相应的事件监听,然后用户执行某事件(点击,输入
,后退等等) -> 调用 JavaScript 来修改节点这种模式对业务来说是没有什么问题,但是从开发成本和效率
来说会比较不理想,特别是在业务系统越来越庞大的时候。另一方面,找节点和修改节点这件事,效率本身就很低,
因此出现了数据驱动模式。
Vue的一个核心思想是数据驱动。所谓数据驱动,是指视图是由数据驱动生成的,我们对视图的修改,不会直接操作 DOM,而是通过修改数据,其流程如下:
用户执行某个操作 -> 反馈到 VM 处理(可以导致 Model 变动) -> VM 层改变,通过绑定关系直接更新页面对应
位置的数据可以简单地理解:数据驱动不是操作节点的,而是通过虚拟的抽象数据层来直接更新页面。主要就是因为
这一点,数据驱动框架才得以有较快的运行速度(因为不需要去折腾节点),并且可以应用到大型项目。
<a href="https://cn.vuejs.org/v2/guide/" target="_blank">Vue官方教程</a>
3.1.2 Vue与jquery的区别
jquery是一个前端js库,相当于是一个工具类,而Vue是一个基于MVVM模型的框架。
jQuery是使用选择器($)选取DOM对象,对其进行赋值、取值、事件绑定等操作,数据和界面是在一起的。比如
需要获取label标签的内容:$("lable").val();它还是依赖DOM元素的值。
Vue则是通过Vue对象将数据和View完全分离开来了。对数据进行操作不再需要引用相应的DOM对象,可以说数据和
View是分离的,他们通过Vue对象这个vm实现相互的绑定。这就是传说中的MVVM。
3.1.3 MVC与MVVM的区别
MVC
<img src='https://t1.picb.cc/uploads/2020/03/04/k3qRGN.png'>
M(Model)模型:用来存放应用的所有数据对象。
V(View)视图:视图层是呈现给用户的,用户与之产生交互。
C(Controller)控制器:控制器是模型和视图的纽带。
MVVM
<img src='https://t1.picb.cc/uploads/2020/03/04/k3qxpe.png'>
M(Model)对应数据层的域模型,它主要做域模型的同步。
V(View)作为视图模板,用于定义结构、布局。
VM(ViewModel)一个同步View 和 Model的对象,起着连接View和Model的作用,同时用于处理View中的逻辑。
MVVM与MVC最大的区别就是:它实现了View和Model的自动同步,也就是当Model的属性改变时,我们不用再自己手动
操作Dom元素,来改变View的显示,而是改变属性后该属性对应View层显示会自动改变。整体看来,MVVM比MVC精简很多,
不仅简化了业务与界面的依赖,还解决了数据频繁更新的问题,不用再用选择器操作DOM元素。
### 3.2 Vue基础语法
3.2.1 双花括号{{}},模板中显示变量值
3.2.2 指令
v-if 判断指令
v-if 指令用于条件性地渲染一块内容。这块内容只会在指令的表达式返回 truthy(除 false、0、""、null、
undefined 和 NaN 以外皆为真值) 值的时候被渲染。也可以用 v-else 添加一个“else 块”,或者用
v-else-if 添加一个“else if 块”。
v-show 显隐指令
另一个用于根据条件展示元素的选项是 v-show 指令,不同的是带有 v-show 的元素始终会被渲染并保留在
DOM中。v-show 只是简单地切换元素的 CSS 属性 display。
v-for 循环指令
v-for 指令需要使用 item in items 形式的特殊语法,其中 items 是源数据数组,而 item 则是被迭代的
数组元素的别名。
v-model 双向数据绑定指令
v-model 指令在表单 <input>、<textarea> 及 <select> 元素上创建双向数据绑定。它会根据控件类型自动
选取正确的方法来更新元素。
v-html 原始HTML指令 (不建议使用,容易导致xss跨站脚本攻击)
v-text 文本指令
v-bind 属性绑定指令 (缩写:)
v-on 事件绑定指令 (缩写@)
v-on 指令监听 DOM 事件,并在触发时运行一些 JavaScript 代码。
<a href="https://codepen.io/cyt68/pen/BaNpLOv" target="_blank">在线运行示例</a>
3.2.3 事件绑定修饰符
.stop 阻止单击事件继续传播
.prevent 阻止默认事件
.capture 添加事件监听器时使用事件捕获模式
.self 只当在 event.target 是当前元素自身时触发处理函数
.once 事件将只会触发一次
.passive 告诉浏览器你不想阻止事件的默认行为
还有按键修饰符,鼠标按钮修饰符等
<a href="https://codepen.io/cyt68/pen/RwPpVOO" target="_blank">在线运行示例</a>
3.2.4 计算属性与侦听属性
计算属性computed,计算属性是基于它们的响应式依赖进行缓存的。
::: demo
```js
computed: {
reversedMessage: function () {
return this.message.split('').reverse().join('');
}
}
```
:::
侦听属性watch,当需要在数据变化时执行异步或开销较大的操作时,这个方式是最有用的。
::: demo
```js
watch: {
message: function () {
window.alert(this.message);
}
}
```
:::
<a href="https://codepen.io/cyt68/pen/dyovvXM" target="_blank">在线运行示例</a>
### 3.3 Vue生命周期
<img src="https://cn.vuejs.org/images/lifecycle.png" width="760">
beforeCreate
实例组件刚创建,元素DOM和数据都还没有初始化
created
数据data已经初始化完成,方法也已经可以调用,但是DOM未渲染,多用于数据获取。
beforeMount
DOM未完成挂载,数据也初始化完成,但是数据的双向绑定还是显示{{}},这是因为Vue采用了
Virtual DOM(虚拟Dom)技术。先占住了一个坑。
mounted
数据和DOM都完成挂载,在上一个周期占位的数据把值给渲染进去,多用于dom处理。
beforeUpdate
只要是页面数据改变了都会触发,数据更新之前,页面数据还是原来的数据,当你请求赋值一
个数据的时候会执行这个周期,如果没有数据改变不执行。
updated
只要是页面数据改变了都会触发,数据更新完毕,页面的数据是更新完成的。beforeUpdate和
updated要谨慎使用,因为页面更新数据的时候都会触发,在这里操作数据很影响性能和容易死循环。
beforeDestroy
这个周期是在组件销毁之前执行。
destroyed
组件已销毁。
<a href="https://codepen.io/cyt68/pen/MWwpmZp" target="_blank">在线运行示例</a>
<script>
export default {
data() {
return {
showImg1: false,
showImg2: false
}
},
methods: {
changeShow1() {
this.showImg1 = !this.showImg1;
},
changeShow2() {
this.showImg2 = !this.showImg2;
}
}
}
</script>
- 概要
- 技术介绍
- 框架与环境
- vue开发
- 开发规范
- 前端开发规范
- 总体原则
- HTML规范
- HTML&css规范
- vue编码规范
- Javascript规范
- 后端开发规范
- cap4
- 自定义控件
- 前端2.0(PC+移动)
- PC前端
- 后端
- 移动端
- 移动端接口
- 低版本协同升级到V5 8.0适配说明
- 自定义按钮
- 自定义按钮(无流程)
- 自定义控件(列表插槽)
- 自定义按钮(筛选条件)
- 低版本协同升级到V5 8.0适配说明
- 门户空间
- 门户与栏目挂载
- 栏目开发及流程说明
- 页面模板
- 客开通路及插件体系
- 表单设计器扩展配置
- 使用步骤
- 配置说明
- 事件API
- Demo示例
- 运行态客开通路
- 插件使用步骤
- 插件接口
- 事件接口
- 钩子相关接口
- 表单操作接口
- Demo示例
- 插件机制
- 表单运行态接口(旧)
- 白名单插件
- 版本记录
- vue组件库
- 开发指南
- 开发文档规范
- 业务组件介绍
- 业务组件
- table组件
- 分页组件
- title组件
- 统计排队组件
- code组件
- 条件筛选
- 批量导入
- 上传Excel
- 批量更新
- 批量刷新
- UI组件
- 按钮组件
- 复选组件
- 取色器组件
- 示例组件
- 水平选择组件
- 选图标组件
- 提示组件
- 单选组件
- 搜索组件
- 选择组件
- 穿梭框组件
- 标签组件
- 文本组件
- 树组件
- 验证组件
- 菜单组件
- iframe组件
- toolbar
- 统计组件
- 饼图
- 柱状图
- 图标
- 业务关系开发指南
- 自定义触发
- 自定义关联
- 后端API
- 更新表单数据缓存
- 发起表单流程
- 取得指定表单PDF或截图
- 无流程批量添加
- 无流程批量删除
- 无流程批量更新
- 无流程批量导出
- 客开培训文档
- Vue基础培训
- Vue实战培训
- Vue进阶培训
- VueCLI3培训
- cap3
- 自定义控件
- 后端
- 移动端
- 前端编译
- 表单运行态接口
- 协同云