加快Vue项目的开发速度的方法(4)

下面我们看使用的流程


这样我们就分别创建了vuerouter的文件,而且已经注入了内容。按照我们提前声明的组件

注意:这只是一个简单的思路,通过Node强大的文件处理能力,我们能做的事情远不止这些。

发挥Mixins的威力

Vue中的混入mixins是一种提供分发 Vue 组件中可复用功能的非常灵活的方式。听说在3.0版本中可能会用Hooks的形式实现,但这并不妨碍它的强大。基础部分的可以看这里。这里主要来讨论mixins能在什么情景下帮助我们。

比如我们的大量的表格页面,仔细一扒拉你发现非常多的东西都是可以复用的例如分页表格高度加载方法laoding声明等一大堆的东西。下面我们来整理出来一个简单的list.vue

const list = {
 data () {
  return {
   // 这些东西我们在list中处理,就不需要在每个页面再去手动的做这个了。
   loading: false, // 伴随loading状态
   pageNo: 1, // 页码
   pageSize: 15, // 页长
   totalCount: 0, // 总个数
   pageSizes: [15, 20, 25, 30], //页长数
   pageLayout: 'total, sizes, prev, pager, next, jumper', // 分页布局
   list: []
  }
 },
 methods: {
  // 分页回掉事件
  handleSizeChange(val) {
   this.pageSize = val
   // todo
  },
  handleCurrentChange (val) {
   this.pageNo = val
   // todo
  },
  /**
   * 表格数据请求成功的回调 处理完公共的部分(分页,loading取消)之后把控制权交给页面
   * @param {*} apiResult 
   * @returns {*} promise
   */
  listSuccessCb (apiResult = {}) {
   return new Promise((reslove, reject) => {
    let tempList = [] // 临时list
    try {
     this.loading = false
     // todo
     // 直接抛出
     reslove(tempList)
    } catch (error) {
     reject(error)
    }
   })
  },
  /**
   * 处理异常情况
   * ==> 简单处理 仅仅是对表格处理为空以及取消loading
   */
  listExceptionCb (error) {
   this.loading = false
   console.error(error)
  }
 },
 created() {
  // 这个生命周期是在使用组件的生命周期之前
  this.$nextTick().then(() => {
   // todo
  })
 }
}
export default list

下面我们直接在组件中使用这个mixins

import mixin from '@/mixins/list' // 引入
import {getList} from '@/api/demo'
export default {
 name: 'mixins-demo',
 mixins: [mixin], // 使用mixins
 data () {
  return {
  }
 },
 methods: {
  // 加载列表
  load () {
   const para = {
   }
   this.loading = true
   getList(para).then((result) => {
    this.listSuccessCb(result).then((list) => {
     this.list = list
    }).catch((err) => {
     console.log(err)
    })
   }).catch((err) => {
    this.listExceptionCb(err)
   })
  }
 },
 created() {
  this.load()
 }
}
</script>
      

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/191.html