1.组件-内容模块化-复用
2.指令-功能抽象化-面向切面
3.混入-继承 or 装饰
4.过滤器-文本格式化
5.插件-功能规模化,模块化
6.路由-页面规模化

7.父组件-子组件参数传递
指令:v-if,v-else,v-else-if,v-show,v-for,
v-on,v-bind,v-model,v-slot


动态:
<a v-bind:[attributeName]="url"> ... </a>
<a v-on:[eventName]="doSomething"> ... </a>
v-slot:[dynamicSlotName]

缩写:
<!-- 完整语法 -->
<a v-bind:href="url">...</a>
<!-- 缩写 -->
<a :href="url">...</a>

<!-- 完整语法 -->
<a v-on:click="doSomething">...</a>
<!-- 缩写 -->
<a @click="doSomething">...</a>

结构:
data:
computed:计算属性:响应式依赖进行缓存的,【属性调用】
method: 方法,每次都计算【方法调用】

Prop:
注意在 JavaScript 中对象和数组是通过引用传入的,
所以对于一个数组或对象类型的 prop 来说,
在子组件中改变这个对象或数组本身将会影响到父组件的状态。

注意那些 prop 会在一个组件实例创建之前进行验证,
所以实例的属性 (如 data、computed 等)
在 default 或 validator 函数中是不可用的。

插槽(占位符):
定义: <slot name="header">默认内容</slot>
使用:
<template v-slot:header>
<h1>Here might be a page title</h1>
</template>
缩写: v-slot:header =>#header
动态: v-slot:[dynamicSlotName]

插槽 prop: 使用组件的值(在使用的时候自由调用)
<span>
<slot v-bind:user="user">
{{ user.lastName }}
</slot>
</span>

<current-user>
<template v-slot:default="slotProps">
{{ slotProps.user.firstName }}
</template>
</current-user>

解构(多个参数的时候):
<current-user v-slot="{ user }">
{{ user.firstName }}
</current-user>

注意:父级模板里的所有内容都是在父级作用域中编译的;
子模板里的所有内容都是在子作用域中编译的。

vuex

成员类型

角色 store调用 定义中参数 定义中参数调用 映射方法
ES2015的参数解构
State 数据源  
store.state.xxx
 
 
 
mapState
 
Getter 计算属性
store.getters.xxx(2)
(state, getters)
   state.xxx/getters.xxx mapGetters  
{state}
Mutation 同步方法  
store.commit('xxx', playload)
 (state,payload)   
state.xxx += payload.amount
mapMutations  
{ commit,state}
Action 异步方法  
store.dispatch('xxx')
  (context)  
 context.commit('xxxx')
mapActions  
{dispatch,commit,state}

 

路由方法

说明

声明式

编程式
push 向 history 添加新记录 <router-link :to="..."> router.push(...)
replace 替换掉当前的 history 记录 <router-link :to="..." replace> router.replace(...)
posted on 2020-05-15 17:15  极简  阅读(253)  评论(0编辑  收藏  举报