vue

vue 基础

构造器 :**new Vue() **
数据绑定 计算属性:
el :,data:{},watch:{} ,methods:{}, computed:{}
vue实例属性与方法:带有前缀 $,以便与data属性区分例如

$watch("a", function())
//观察vue实例里面的a变化后调用function(){},
//注意function(){}不能是箭头函数,因为箭头函数的this被绑定

vue生命周期

created mounted updated destoryed

vue 的this指向vue实例click

vue的模板语法

{{a}}

v-bind: =》用来响应式更新绑定属性
v-bind:href="" 缩写 ==> :href=""
v-bind:class:"{classA: tureOrFaule, classB: TureOrFaule}"

v-on: click ==> @click
v-on: $on(" ") 监听事件
v-on: $emit('' ") 触发事件

vue的过滤器????
条件渲染 v-if/v-show
列表渲染 v-for

vue_第1张图片

v-model 双向数据绑定

var app5 = new Vue({
    // 绑定到 dom 通过id ,在vue里的“,”(逗号)el data
结束后要有逗号 最后一个不用写
    el: '#app',  
    //数据要放在data里
    data: {
        //在html嵌入绑定数据message要用“{{...}}”表示
        message: 'Hello Vue.js!'
    },
    //function要放在methods里
    methods: {
        reverseMessage: function () {
            this.message = this.message.split('').reverse().join('')
        }
    }
})

vue组件

Vue.component(tagName, options)

vue_第2张图片
创建组件
vue_第3张图片
语法糖
vue_第4张图片
字符串模板
vue_第5张图片
vue_第6张图片

HTML 特性不区分大小写。当使用非字符串模版时,名字形式为 camelCase 的 prop 用作特性时,需要转为 kebab-case(短横线隔开):

使用v-model 来进行数据双向绑定?{{}}

vue_第7张图片
v-bind

Vue 实例都会代理其data对象里所有的属性。

var data = { a: 1 }
var vm = new Vue({
data: data
})

vm.a === data.a // -> true

// 设置属性也会影响到原始数据
vm.a = 2
data.a // -> 2

// ... 反之亦然
data.a = 3
vm.a // -> 3

Vue 实例暴露了一些有用的实例属性与方法。这些属性与方法都有前缀$,以便与代理的 data 属性区分

var data = { a: 1 }
var vm = new Vue({
el: '#example',
data: data
})

vm.$data === data // -> true
vm.$el === document.getElementById('example') // -> true

// $watch 是一个实例方法
vm.$watch('a', function (newVal, oldVal) {
// 这个回调将在 `vm.a` 改变后调用
})

vm.$watch('a', function (newVal, oldVal) {// 这个回调将在 vm.a 改变后调用})

vue项目实践

v-bind
指令将该元素的href属性与表达式url的值绑定
v-on
它用于监听 DOM 事件

注册组件

// 全局注册
Vue.component('my-component', {
template: '
A custom component!
' }) // 创建根实例 new Vue({ el: '#example' })
var Child = {
template: '
A custom component!
' } new Vue({ // ... components: { // 将只在父模板可用 'my-component': Child } })

date必须是函数(使用组件时)

使用$on(eventName)
监听事件
使用$emit(eventName)
触发事件

var data = { counter: 0 }

Vue.component('simple-counter', {
template: '',
// data 是一个函数,因此 Vue 不会警告,
// 但是我们为每一个组件返回了同一个对象引用
data: function () {
return data
}
})

new Vue({
el: '#example-2'
})

vue-router

Hello App!

Go to Foo Go to Bar

如果使用模块化机制编程, 要调用 Vue.use(VueRouter)

// 0. 如果使用模块化机制编程, 要调用 Vue.use(VueRouter)

// 1. 定义(路由)组件。
// 可以从其他文件 import 进来
const Foo = { template: '
foo
' } const Bar = { template: '
bar
' } // 2. 定义路由 // 每个路由应该映射一个组件。 其中"component" 可以是 // 通过 Vue.extend() 创建的组件构造器, // 或者,只是一个组件配置对象。 // 我们晚点再讨论嵌套路由。 const routes = [ { path: '/foo', component: Foo }, { path: '/bar', component: Bar } ] // 3. 创建 router 实例,然后传 `routes` 配置 // 你还可以传别的配置参数, 不过先这么简单着吧。 const router = new VueRouter({ routes // (缩写)相当于 routes: routes }) // 4. 创建和挂载根实例。 // 记得要通过 router 配置参数注入路由, // 从而让整个应用都有路由功能 const app = new Vue({ router }).$mount('#app') // 现在,应用已经启动了!

vuex

//install 
npm install vuex
// loading vuex and use
import vuex from 'vuex'
import vue from 'vue'

vue.use(vuex)

在 Vue.js 中,父子组件的关系可以总结为 props down, events up 。父组件通过 props 向下传递数据给子组件,子组件通过 events 给父组件发送消息。看看它们是怎么工作的。

vue_第9张图片
注意组件名称 如何引用

你可能感兴趣的:(vue)