practice

Vue

template

  • 把一个<template> 元素当做不可见的包裹元素,并在上面使用 v-if, 最终的渲染结果将不包含 <template>

props

//对于多类型场景
<template>
  <button :style="computedWidth">{{ computedWidth }}</button>
</template>

<script>
  export default {
    props: {
      width: [String, Number]
    },
    computed: {
      computedWidth () {
        let obj = {}
        if (typeof this.width === 'string') o.width = this.width
        if (typeof this.width === 'number') o.width = this.width + 'px'
        return obj
      }
    }
  }
</script>

watch

computed

  • 数据缓存、依赖响应式数据、减少模板中的计算逻辑

  • 最佳实践是computed定义一个属性,这个属性依赖多个响应式,watch这个属性

is && keep-alive

v-slot

mixins

  • Vue.extend策略同mixins相同

  • 混入属性发生冲突时,以组件数据优先(浅合并第一层属性)

  • 混入方法发生冲突时,会将函数合并为一个数组,优先执行混入方法,其次执行组件方法

$options

  • 静态属性传给$options而不是datacomputed

自定义事件事件命名

  • 自定义事件事件名为小写或-分隔

v-once

  • 组件包含大量静态内容时,可使用v-once来标记,缓存静态内容

$forceUpdate强制更新view

动态属性名

监听页面刷新和关闭

修改子组件样式

$nextTick

  1. mounted生命周期执行DOM操作

  2. 在数据变化后需要进行基于DOM结构的操作

基础组件全局注册

element-UI related

  • 禁止浏览器Auto complete

Vue Router

$router vs $route

  • this.$router指路由器,只写,this.$route指当前路由,只读

regex path

  • 当使用一个通配符时,$route.params内会自动添加一个名为pathMatch参数。它包含URL通过通配符被匹配的部分

  • 使用了push时,如果提供的path不完整,则params会被忽略,需要提供路由的name或手写完整的带有参数的path

命名视图

  • 单页多路由,命名视图:router-view可设置名字,如果router-view没有设置名字,那么默认为default

路由参数设置为组件属性

  • 不同路由的组件复用

路由设置参数

  • 路由设置有参数时,若跳转页面后再通过返回键返回时,路由会保留有参数,若通过push跳转返回,则不会保留该参数,这在第三方调用模块传参时需要注意

路由异步加载

刷新当前页面

刷新页面参数丢失

  • localStorage、sessionStorage、cookie

Vuex

刷新页面Vuex数据丢失

Vuex动态加载

自动注册vuex模块

mapState / mapMutations / mapGetters / mapActions

事件常量代替mutation类型,放到单独文件中

module

  • 开启namespaced:true

  • createNamespacedHelpers

Last updated