Vue 基础入门 | 学习笔记
Vue 使用总结
组件化编程思想 在 component 文件夹内编写的组件可以通过 import 引入页面使用(标签)(引入页面 components 内注册)
Vue 模板语法
-
使用实现数据绑定,变量写在 data 中
-
v-once 属性和 const 差不多 定义为常量、不可变 模板:v-once=‘变量名’
-
v-html 属性可在 data 中写入 html 语句进行渲染 模板: v-html=‘变量名’
-
{{ }}
格式的数据绑定可写入- 数学计算式
- 三目运算
- JS 功能函数
-
v-bind 属性可给标签绑定属性
-
模板语法: v-bind=:属性=‘变量名’ 变量在 data 中定义、描述
-
缩写: :属性=‘变量名’
-
例: :disabaled=‘msg’ data 中 msg:true
-
-
v-on 属性给标签绑定事件 不止于 click
- 模板: v-on:事件名=‘函数名’ 缩写: @事件名=‘函数名’
- 例: @click=‘change()’
- methods 中写入函数
Vue 条件语句 遍历循环渲染
-
v-if 条件渲染
-
模板: v-if=‘变量名’ v-if=“变量==条件”
-
此外还有 v-else-if v-else 语法相同
-
复用相同组件时绑定 key 属性重新渲染(包括 v-for 遍历)
-
-
v-show 属性条件渲染
- 模板: v-show=“变量” 变量在 data 中定义
- 变量 true 显示,false 不显示
- 和 v-if 不同的是 v-if 中变量为 false 时不渲染 v-show 渲染只是把 disabled 属性改为了 true
-
v-for 循环属性实现条件渲染
- 模板: v-for=“item in items”在 data 中写入 items 清单(数组)
- 可传入多值 item 替换为(属性 1,属性 2,属性 3)即可
Vue computed 计算属性
-
不同于 methods 中的方法,触发每次都会执行;
-
computed 中的操作只要变量值没有改变,函数不会重新执行,依赖于缓存数据
-
计算属性一个函数分为 getter 函数(获取值)和 setter 函数(修改值)(再带 value 参数)
Vue watch 监听属性
-
可用 v-model 绑定数据 后台监听,一旦变量改变 执行函数
-
watch 内写入函数 data 内声明 v-model 绑定的变量
-
函数名和变量名相同自带 newv 和 oldv 参数为新值和旧值
Vue 样式属性绑定
-
使用 v-bind 绑定 class
- 模板: :class=“变量”
- 变量在 data 中声明 变量中写入 style 中定义好的样式
- 如 :class=“a” data 中 a:“aclass” style 中 .aclass{fontSize:20px}
- 可通过:class={样式名:变量名,样式名:变量名}的形式绑定多样式
- 变量通过 boolean 值决定是否使用样式 函数中可实现动态改变样式
-
使用 v-bind 绑定 style
- 模板: :style="{样式名:变量 , 样式名: 变量}
Vue 事件处理器
-
在 methods 中写的函数可用@click 绑定到标签上
-
v-bind 绑定的事件可添加多种修饰符(以下有@click 作为模板讲解):
- @click.stop 属性 防止向上一层传播
- 例如 div 中的 p 标签绑定@click.stop,p 标签点击事件执行,div 的点击事件不会执行
- @click.prevent 属性 组织触发的函数执行
- 属性修饰符可以串联如@click.stop.prevent
- 其他修饰符:
- .passive 不阻止事件的默认行为(@scroll.passive=""滑动时触发)
- .once 只触发一次
- .self 只有是当前元素时触发
- .capture 添加事件监听器
-
@keyup 监听键盘按键按下式调用
-
如 @keyup.enter=‘’‘’
-
支持监听多按键 如 @keyup.enter.ctrl
-
-
.exact 修饰符表示只有按下当前按键时才触发(不能同时按下其他按键)
- 如 @keyup.ctrl.exact
- 鼠标按键修饰符:.middle .left .right
- @click.stop 属性 防止向上一层传播
Vue 表单处理
-
input、textarea 表单都可以用 v-model 实现双向数据绑定
-
复选框 绑定相同的 v-model 在 data 内定义数组即实现数据双向绑定
-
:value 可实现绑定 value 值
-
.lazy 修饰符每次选择后数据同步
-
.number 修饰符只允许输入数字
-
.trim 不允许输入空格
Vue 脚手架安装
-
components 内放入页面、组件
-
App.vue 首页
-
只允许存在一个根目录如 div
-
script 内可用 import 引入组件
-
如 import MENU(组件名) from ‘路径’
-
Export default 内必须写入 name(当前组件名称)
-
Data(){}用方法写,return 框内声明变量
-
Main.js 内通过 import 引入 Vue、App 组件和使用到的插件(并用 Vue.use 方法使用插件)
-
并 new Vue 对象 并注册使用的插件例如 router
-
Index.html 写好 div(id=app)作项目入口
父子组件传输数据
方法一(父传子)
-
传递页面在 data 内写好函数 在组件标签内写入 :方法名=‘方法名’即可
-
被传递页面内 script 写入 props:[‘参数名’]进行接收
-
模板:
//父组件 HTML menus为父组件变量 |
方法二 (子传父)
-
通过在被引入页面标签上写入@引入量=“引入量”,在引入页面写入 this.$emit(‘引入量’,形参)触发自定义事件引入 即可执行该函数 此时不能 this.addMenu(未引入)
-
模板:
//父组件 addMenu为父组件变量 |
方法三 (组件间)
-
使用引用 ref 属性写入标签索引量
-
引入页面 mounted 生命周期内写入 this.$refs.menu(索引).$on(‘addMenu(引入量)’,this.addMenu(当前页面被引入量))
-
在被引入页面写入 this.$emit(‘引入量’,形参)触发自定义事件引入
//宿组件HTML、Js this.addMenu为宿组件变量 |
方法四(组件间)
-
Pubsub 方法(不止于父子组件)两个页面都要 import Pubsub
-
在接参的页面(函数在此页面)mounted 内写入 Pubsub.subscribe(‘函数名’,(msg,形参)=>{回调函数})
-
在传参页面使用的函数内写入 Pubsub.publish(‘函数名’,形参)
//事先npm安装pubsub |
slot 插槽
-
slot 插槽用法 注册组件 import,component 组件内 div 用 slot 标签写插槽标记好 name
-
插槽页面使用 div slot=“name” ,动态改写插槽
//引用插槽组件HTML |
ajax 框架通信
ajax 框架 vue-resource
-
main.js 里 import,Vue.use(VueResource)
-
方法不止于 get 详情:https://github.com/pagekit/vue-resource
-
模板:
//main.js |
ajax 框架 axios 方法
-
不可全局注册 所有使用页面内 import
-
方法不止于 get 详情:https://github.com/pagekit/vue-resource/blob/develop/docs/http.md
import axios from 'axios'; |
Vue-router
-
路由基本用法:建立 pages 和 router 文件夹,配置好页面,路由 js 文件内引入 vue、vuerouter 和路由页面
-
使用 vue.use(VueRouter)使用路由 export default new VueRouter({routes})
-
import 路由页面并在 routes 内注册(path、component、name),children 对象可写子路由,redirect 可重定向写默认页面
-
使用路由的页面内写入 router-link 和 router-view to 属性写路由路径
-
Main.js 内 import 引入路由 js 文件,vue 对象内写入 router
-
用 keep-alive 标签包裹的路由标签可以保留缓存
Router.js:
import Vue from 'vue'; |
main.js:
import Vue from 'vue'; |
Vue 组件:
<ul> |
路由组件传参
路由组件传参分为 param 和 query 传参两种方式
param:
-
在 router-link 标签内将 to 属性改为绑定属性 :to 并将路径和参数改为以下格式
-
以下 student.id 为传输参数
<ul> |
-
将使用页面的 router path 属性后面加上/:id
-
如: path:‘subMenu3/:id’,
-
引入页面以此获取参数
<div> Id:{{$route.params.id}}<br /></div> |
query:
- 将上放 path 后面的/:id 去掉
//源组件 |
编程式路由导航
-
主要有三个方法:
- push(压入栈)
- repalce(替换)
- back(回退)
- push 可退回
- replace 不可退回
-
用法为绑定点击事件(执行函数)到标签
- 执行函数(methods 内)内编写
- this.$router.push(or replace)(
路径
)
模板:
this.$router.push(`/menu2/subMenu3?id=${id}`); |
动画、过渡
- 在进入/离开的过渡中,会有 6 个 class 切换。
- v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
- v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
- v-enter-to:2.1.8 版及以上 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。
- v-leave:定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
- v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
- v-leave-to:2.1.8 版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。
掘金:前端 LeBron
知乎:前端 LeBron
持续分享技术博文,关注微信公众号 👇🏻