加快Vue项目的开发速度的方法(4)
下面我们看使用的流程
这样我们就分别创建了vue
和router
的文件,而且已经注入了内容。按照我们提前声明的组件
注意:这只是一个简单的思路,通过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>
内容版权声明:除非注明,否则皆为本站原创文章。