vue基本语法
模板语法
文本
使用{{}}进行数据绑定
// 这里的msg为data或props参数
Message: {{ msg }}
原始html
// 这里的rawHtm为ldata或props参数
属性
使用表达式
{{ number + 1 }}{{ ok ? 'YES' : 'NO' }}{{ message.split('').reverse().join('') }}
指令
指令带有v前缀的属性
现在你看到我了
参数
// 使用v-bind绑定参数,href为参数
...
// 使用v-on进行事件绑定,click为事件名
...
动态参数
...
...
修饰符
缩写
v-bind
v-bind -> :
...->...
v-on
v-on -> @
...->...
计算属性和侦听器 计算属性
Original message: "{{ message }}"
【vue基本语法】Computed reversed message: "{{ reversedMessage }}"
var vm = new Vue({
el: '#example',
data: {
message: 'Hello'
},
computed: {
// 计算属性的 getter
reversedMessage: function () {
// `this` 指向 vm 实例
return this.message.split('').reverse().join('')
}
}
})
结果:
Original message: "Hello"Computed reversed message: "olleH"
计算属性默认只有getter,可以根据需要提供setter
computed: {
fullName: {
// getter
get: function () {
return this.firstName + ' ' + this.lastName
},
// setter
set: function (newValue) {
var names = newValue.split(' ')
this.firstName = names[0]
this.lastName = names[names.length - 1]
}
}
侦听器
{{ fullName }}
var vm = new Vue({
el: '#demo',
data: {
firstName: 'Foo',
lastName: 'Bar',
fullName: 'Foo Bar'
},
// 当对于的属性发生变化时会执行方法
watch: {
firstName: function (val) {
this.fullName = val + ' ' + this.lastName
},
lastName: function (val) {
this.fullName = this.firstName + ' ' + val
}
}
})
Class与Style绑定 可以传入对象
// 当对应的class为true时才会被设置上
可以传入数组
data: {
activeClass: 'active',
errorClass: 'text-danger'
}
绑定内联样式
条件渲染 v-if
Vue is awesome!
也可以加入v-else
Vue is awesome!
Oh no
可以在元素上使用条件渲染
TitleParagraph 1
Paragraph 2
Paragraph 1
Paragraph 2
v-else-if
ABCNot A/B/C
可以使用v-show
Hello!
注意,v-show 不支持 元素,也不支持 v-else。列表渲染
一般来说,v-if 有更高的切换开销,而 v-show 有更高的初始渲染开销。因此,如果需要非常频繁地切换,则使用 v-show 较好;如果在运行时条件很少改变,则使用 v-if 较好。
// 这里加入key属性,以便它能跟踪每个节点的身份
-
{{ item.message }}
var example1 = new Vue({
el: '#example-1',
data: {
items: [
{ message: 'Foo' },
{ message: 'Bar' }
]
}
})
编译方法
Vue 将被侦听的数组的变异方法进行了包裹,所以它们也将会触发视图更新
push()
pop()
shift()
unshift()
splice()
sort()
reverse()
表单输入输出 使用v-model指令与表单元素创建双向数据绑定。
文本
Message is: {{ message }}
多行文本
Multiline message is:{{ message }}
复选框
单个复选框,绑定到布尔值
多个复选框,绑定到同一个数组
Checked names: {{ checkedNames }}
单选按钮
Picked: {{ picked }}
选择框
单选
Selected: {{ selected }}
多选
Selected: {{ selected }}
默认选择文本,当设置value时会获取到选中项的value事件处理 事件处理方法
var example2 = new Vue({
el: '#example-2',
data: {
name: 'Vue.js'
},
// 在 `methods` 对象中定义方法
methods: {
greet: function (event) {
// `this` 在方法里指向当前 Vue 实例
alert('Hello ' + this.name + '!')
// `event` 是原生 DOM 事件
if (event) {
alert(event.target.tagName)
}
}
}
});
内联处理器中的方法
new Vue({
el: '#example-3',
methods: {
say: function (message) {
alert(message)
}
}
});
//访问原始的DOM事件
使用$event变量传入
methods: {
warn: function (message, event) {
// 现在我们可以访问原生事件对象
if (event) event.preventDefault()
alert(message)
}
}
事件修饰符
.stop
.prevent
.capture
.self
.once
.passive......
//可以使用多个修饰符
按键修饰符
按键码
//全局自定义按键修饰符
Vue.config.keyCodes.f1 = 112
自定义事件
this.$emit('myEvent');
注意在 JavaScript 中对象和数组是通过引用传入的,所以对于一个数组或对象类型的 prop 来说,在子组件中改变这个对象或数组本身将会影响到父组件的状态。使用第三个vue组件,利用on和emit解决跳转当前页面错误问题
import Vue from "vue";
var eventBus = new Vue();
// 定义事件
eventBus.on("eventName", function(path){
this.$router.push(path);
});
// 调用
eventBus.emit("eventName", path);
组件
export default {
name: '',//组件名
components: {}, //使用的组件
props: {},//属性
data(){
return {}//数据,这里要改为方法
},
watch: {
//监听
},
computed: {},//计算属性
methods: {},//事件方法
created () { },//创建成功后调用
mounted () {}//挂载成功后调用
}
导入组件
import test from "./components/test";
export default{
// 这里对组件进行绑定
components: {
test
}}
props
HTML 中的特性名是大小写不敏感的,所以浏览器会把所有大写字符解释为小写字符。这意味着当你使用 DOM 中的模板时,camelCase (驼峰命名法) 的 prop 名需要使用其等价的 kebab-case (短横线分隔命名) 命名:
props: ['postTitle']
// html中
// 如果你使用字符串模板,那么这个限制就不存在了
所有的prop都使得其父子prop之间形成一个单向下行绑定:父级 prop 的更新会向下流动到子组件中,但是反过来则不行。这样会防止从子组件意外改变父级组件的状态使用data接收prop初始值
props: [size],
data(){
return {
dSize: this.size
}
}
使用计算属性接收prop初始值
props: [size],
computed: {
dSize: function(){
return this.size
}
}
推荐阅读
- vue-cli|vue-cli 3.x vue.config.js 配置
- 做一件事情的基本原理是什么()
- 2020-04-07vue中Axios的封装和API接口的管理
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 六步搭建ES6语法环境
- dubbo基本认识
- VueX--VUE核心插件
- HTML基础--基本概念--跟着李南江学编程
- 7、前端--jQuery简介、基本选择器、基本筛选器、属性选择器、表单选择器、筛选器方法、节点操作、绑定事件
- vue组件中为何data必须是一个函数()