vue语法精简(方便开发查阅)
vue语法精简(方便开发查阅)
本文只是方便开发的时候快速查阅到相关语法,想看详细内容请看官网(时间久了写法都忘了,~~哭)
指令
vue create app 创建项目
{{msg}} 文本插值
v-once 一次性渲染插值
v-html 输出html
v-if 是否显示,(1.多个同级标签,使用template包裹 2.使用key区分不同元素)
v-else
v-else-if
v-show 是否显示,css层面的
v-on:click 监听点击事件
v-on:click.prevent 阻止默认行为
v-bind:class="{ active: isActive }" 绑定class
v-bind:style="{ color: activeColor}" 绑定style
v-for="(item, index) in items" 遍历数据,(1.in可以使用of代替 2.绑定key区分不同的元素)
v-for="(value, key, index) in object" 便利对象
v-on:keyup.enter="submit" 按键修饰符(v-on:keyup.13="submit")
v-model="message" 表单双向绑定
特殊的标签和属性
<slot></slot> 插槽,代指组件标签嵌套的内容
<component v-bind:is="currentTabComponent"></component> 动态组件
<keep-alive> 缓存组件状态
<component v-bind:is="currentTabComponent"></component>
</keep-alive>
this.$root 访问根组件
this.$parent 访问父组件
<base-input ref="usernameInput"></base-input>
this.$refs.usernameInput 访问组件元素
props验证(String Number Boolean Array Object Date Function Symbol)
props: {
// 基础的类型检查 (`null` 匹配任何类型)
propA: Number,
// 多个可能的类型
propB: [String, Number],
// 必填的字符串
propC: {
type: String,
required: true
},
// 带有默认值的数字
propD: {
type: Number,
default: 100
},
// 带有默认值的对象
propE: {
type: Object,
// 对象或数组默认值必须从一个工厂函数获取
default: function () {
return { message: 'hello' }
}
},
// 自定义验证函数
propF: {
validator: function (value) {
// 这个值必须匹配下列字符串中的一个
return ['success', 'warning', 'danger'].indexOf(value) !== -1
}
}
}
变异方法
直接调用下面这些方法,vue会自动更新
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
使用下面方法,修改指定的键值
Vue.set(object, key, value)
使用下面方法,为对象添加属性
Object.assign({}, this.obj, {key: ..., value: ...})
事件修饰符
.stop 阻止冒泡
.prevent 阻止默认行为
.capture 使用捕获
.self 当前元素触发事件
.once 事件触发一次
.passive 滚动行为优化(<div v-on:scroll.passive="onScroll">...</div>)
.native 原生事件
按键修饰符
.enter
.tab
.delete (捕获“删除”和“退格”键)
.esc
.space
.up
.down
.left
.right
.ctrl
.alt
.shift
.meta
自定义keycode
Vue.config.keyCodes.f1 = 112
// v-on:keyup.f1
表单修饰符
v-model.lazy="msg" // 在“change”时而非“input”时更新
v-model.number="msg" // 将用户的输入值转为数值类型
v-model.trim="msg" // 自动过滤用户输入的首尾空白字符
生命周期函数
beforeCreate
created
beforeMount
mounted
beforeUpdate
beforeDestroy
destroyed
计算属性
基本语法
<span>{{filterMsg}}</span> data: function() {
return {
message: '我是原始的属性'
}
},
computed: {
filterMsg: function() {
return "|||||" + this.message + "||||"
}
}
set
<input type="text" v-model="filterMsg">
<span>{{filterMsg}}</span> data: function() {
return {
message: "我是原始的属性"
};
},
computed: {
filterMsg: {
get: function() {
return "|||||" + this.message + "||||";
}, set: function(val) {
this.message = val.substring(5).slice(0,-4);
}
}
}
监听属性
<input type="text" v-model="message">
<span>{{filterMsg}}</span>
data: function() {
return {
message: "",
filterMsg: ""
}
},
watch: {
message: function(val) {
this.filterMsg = "|||||" + val + "||||"
}
}
子组件通过事件向父组件传递信息
父组件
<template>
<div>
<Test @parentFn="fn" />
</div>
</template>
<script>
import Test from "./Test";
export default {
components: {Test},
methods: {
fn: function(val) {
console.log(val);
}
}
};
</script>
子组件
<template>
<button @click="$emit('parentFn', '子组件传递的参数')">点击</button>
</template>
在组件上使用v-model
父组件
<template>
<div>
<Test :value="searchText" @input="searchText = $event"/>
</div>
</template>
<script>
import Test from "./Test";
export default {
components: { Test },
data: function() {
return {
searchText: ""
}
},
watch: {
searchText: function(val) {
console.log(val);
}
}
};
</script>
子组件
<template>
<input :value="value" @input="$emit('input', $event.target.value)">
</template>
<script>
export default {
props: ['value']
}
</script>
动画
动画示例1
<transition name="fade">
<p v-if="show">hello</p>
</transition>
.fade-enter-active, .fade-leave-active {
transition: opacity .5s;
}
.fade-enter, .fade-leave-to {
opacity: 0;
}
动画示例2
<transition name="slide-fade">
<p v-if="show">hello</p>
</transition>
.slide-fade-enter-active {
transition: all .3s ease;
}
.slide-fade-leave-active {
transition: all .8s cubic-bezier(1.0, 0.5, 0.8, 1.0);
}
.slide-fade-enter, .slide-fade-leave-to{
transform: translateX(10px);
opacity: 0;
}
动画示例3
<transition name="bounce">
<p v-if="show">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris facilisis enim libero, at lacinia diam fermentum id. Pellentesque habitant morbi tristique senectus et netus.</p>
</transition>
.bounce-enter-active {
animation: bounce-in .5s;
}
.bounce-leave-active {
animation: bounce-in .5s reverse;
}
@keyframes bounce-in {
0% {
transform: scale(0);
}
50% {
transform: scale(1.5);
}
100% {
transform: scale(1);
}
}
vue语法精简(方便开发查阅)的更多相关文章
- vuex语法精简(方便开发查阅)
vuex语法精简(方便开发查阅) store结构 state Getter Mutation actions vuex语法精简(方便开发查阅) 本文只是方便开发的时候快速查阅到相关语法,想看详细内容请 ...
- python 全栈开发,Day89(sorted面试题,Pycharm配置支持vue语法,Vue基础语法,小清单练习)
一.sorted面试题 面试题: [11, 33, 4, 2, 11, 4, 9, 2] 去重并保持原来的顺序 答案1: list1 = [11, 33, 4, 2, 11, 4, 9, 2] ret ...
- idea 添加 VUE 的语法支持和开发
<一>VUE的开发分两种,一种是直接在HTML文件中使用,一种是VUE文件的形式开发 1,首先我们先让 HTML 文件支持 VUE 的语法指令提示 2,File -> Setting ...
- spring boot + vue + element-ui全栈开发入门——集成element-ui
一.IDE开发工具 常用的开发工具有webstorm和sublime. 我个人喜好用Atom+插件的形式 打开Atom,在file --> settings --> packages中收 ...
- 【06】Vue 之 组件化开发
组件其实就是一个拥有样式.动画.js逻辑.HTML结构的综合块.前端组件化确实让大的前端团队更高效的开发前端项目.而作为前端比较流行的框架之一,Vue的组件和也做的非常彻底,而且有自己的特色.尤其是她 ...
- 循序渐进VUE+Element 前端应用开发(1)--- 开发环境的准备工作
之前一直采用VS进行各种前端后端的开发,随着项目的需要,正逐步融合纯前端的开发模式,开始主要选型为Vue + Element 进行BS前端的开发,后续会进一步整合Vue + AntDesign的界面套 ...
- 循序渐进VUE+Element 前端应用开发(4)--- 获取后端数据及产品信息页面的处理
在前面随笔<循序渐进VUE+Element 前端应用开发(3)--- 动态菜单和路由的关联处理>中介绍了在Vue + Element整合框架中,实现了动态菜单和动态路由的处理,从而可以根据 ...
- 循序渐进VUE+Element 前端应用开发(6)--- 常规Element 界面组件的使用
在我们开发BS页面的时候,往往需要了解常规界面组件的使用,小到最普通的单文本输入框.多文本框.下拉列表,以及按钮.图片展示.弹出对话框.表单处理.条码二维码等等,本篇随笔基于普通表格业务的展示录入的场 ...
- 循序渐进VUE+Element 前端应用开发(13)--- 前端API接口的封装处理
在前面随笔<循序渐进VUE+Element 前端应用开发(12)--- 整合ABP框架的前端登录处理>介绍了一个系统最初接触到的前端登录处理的实现,但往往对整个系统来说,一般会有很多业务对 ...
随机推荐
- java set初始化问题
set在执行add方法时,多次报空指针异常,后来发现Set初始化时,如果是 Set<Type> set = null; 这样的话,在执行 set.add(element)的时候会报空指针异 ...
- Getting 'The AWS Access Key Id you provided does not exist in our records' error with Amazon MWS
I upgraded from one version of Amazon MWS (marketplace web service) version https://mws.amazonservic ...
- HDU1565 方格取数 &&uva 11270 轮廓线DP
方格取数(1) Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Su ...
- System.ComponentModel.DataAnnotations 命名空间和RequiredAttribute 类
System.ComponentModel.DataAnnotations 命名空间提供定义 ASP.NET MVC 和 ASP.NET 数据控件的类的特性. RequiredAttribute 指定 ...
- wikioi 1028 花店橱窗布置 最大权匹配
中文题意不描述. 链接:http://wikioi.com/problem/1028/ 这题一开始很裸的最大权二分匹配.但是原来没有接触过,KM的这个最大权不大会.然后一开始以为用最大费用最大流直接就 ...
- CF 148D Bag of mice 概率dp 难度:0
D. Bag of mice time limit per test 2 seconds memory limit per test 256 megabytes input standard inpu ...
- Java语言发展史和eclipse配置
body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...
- 对象存储在什么地方(java编程思想)
用引用操作对象.创建了一个引用,需要进行初始化(与事物进行关联),才能正常使用.new将引用于对象进行关联 对象存储到什么地方? 程序运行时,对象是怎么进行放置安排的呢?特别是内存是怎么分配的呢?对这 ...
- LambdaMART简介——基于Ranklib源码(二 Regression Tree训练)
上一节中介绍了 $ \lambda $ 的计算,lambdaMART就以计算的每个doc的 $\lambda$ 值作为label,训练Regression Tree,并在最后对叶子节点上的样本 $la ...
- BZOJ2935: [Poi1999]原始生物(欧拉回路)
2935: [Poi1999]原始生物 Time Limit: 3 Sec Memory Limit: 128 MBSubmit: 150 Solved: 71[Submit][Status][D ...