Vue之mixin全局的用法详解


Posted in Javascript onAugust 22, 2018

先贴上官方定义。

个人觉得全局mixin就是给全部Vue文件添加一些公用的实例(方法,过滤器and so on)

使用场景:货币单位,时间格式。这些如果在用到的页面使用的话代码会重复的很多,所以在全局混入这些实例会减少代码量,可维护性也比较高。

ex:

step1: 先定义mixin.js

const mixin = {
 methods: {
  /**
   * 格式化时间
   * @param {string|number|object|Array} dateTime - 时间,可以是一个字符串、时间戳、表示时间的对象、Date对象或者******表示时间的数组
   * @param {string} [fmt] - 格式
   * @returns {string} 返回格式化后的日期时间,默认格式:2018年1月11日 15:00
   * @see [momentjs]{@tutorial http://momentjs.cn/}
   */
  formatDate (dateTime, fmt = 'YYYY年M月DD日 HH:mm:ss') {
   if (!dateTime) {
    return ''
   }
   moment.locale('zh-CN')
   dateTime = moment(dateTime).format(fmt)
   return dateTime
  }
 }
}export defaullt mixin

step2:在main.js文件里面

import mixin from './mixin'
Vue.mixin(mixin)

全局混入是.mixin没有s

step3:在你的vue文件里面就可以使用mixin里面定义好的东西比如

 

data() {
  return {
   userName: "等你",
   time: this.formatDate(new Date()),
   arr: [1,2,3,4,5,'文字'],
   result: []
  }
 }

这个vue文件的数据源data里面的time就是引用混入进来的方法。

使用mixins里的方法

设置路由

// src/router/index.js
import Vue from 'vue'
import Router from 'vue-router'
Vue.use(Router)

export default new Router({
 mode:'history',
 routes: [
  {
   path:'/',
   redirect:'/index'
  },
  {
   path: '/about',
   name: 'About',
   component:resolve => require(['@/pages/About'],resolve)
  },
  {
   path: '/index',
   name: 'Index',
   component:resolve => require(['@/pages/Index'],resolve)
  },
  {
   path: '/product',
   name: 'Product',
   component:resolve => require(['@/pages/Product'],resolve)
  }
 ]
})

页面调用mixins里的loadPage方法

<p @click="loadPage('Index')">Index</p>

Index页面如下

// src/pages/Index
<template>
 <div>
  <p>这是index页面</p>
  <p @click="loadPage('Index')">Index</p>
  <p @click="loadPage('About')">About</p>
  <p @click="loadPage('Product')">Product</p>
 </div>
</template>
<script>
 export default{

 }
</script>
<style>

</style>

至此,全局混入大功告成,有心的读者也可以试试局部混入(主要用于后期代码维护)。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery EasyUI 中文API Button使用实例
Apr 14 Javascript
javascript showModalDialog 内跳转页面的问题
Nov 25 Javascript
JavaScript中的细节分析
Jun 30 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
May 11 Javascript
跟我学习javascript的call(),apply(),bind()与回调
Nov 16 Javascript
Bootstrap导航栏各元素操作方法(表单、按钮、文本)
Dec 28 Javascript
封装属于自己的JS组件
Jan 27 Javascript
AngularJS的依赖注入实例分析(使用module和injector)
Jan 19 Javascript
js绑定事件和解绑事件
Apr 27 Javascript
element-ui多文件上传的实现示例
Apr 10 Javascript
Nuxt.js实现一个SSR的前端博客的示例代码
Sep 06 Javascript
详解Vue3.0 + TypeScript + Vite初体验
Feb 22 Vue.js
React中使用UEditor百度富文本的方法
Aug 22 #Javascript
VUE 全局变量的几种实现方式
Aug 22 #Javascript
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
Aug 22 #Javascript
基于vue.js中关于下拉框的值默认及绑定问题
Aug 22 #Javascript
微信小程序有旋转动画效果的音乐组件实例代码
Aug 22 #Javascript
vue2.0 下拉框默认标题设置方法
Aug 22 #Javascript
VUE中v-on:click事件中获取当前dom元素的代码
Aug 22 #Javascript
You might like
php通过COM类调用组件的实现代码
2012/01/11 PHP
关于PHP实现异步操作的研究
2013/02/03 PHP
php命名空间学习详解
2014/02/27 PHP
php简单实现快速排序的方法
2015/04/04 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
javascript面向对象的方式实现的弹出层效果代码
2010/01/28 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
基于JS实现EOS隐藏错误提示层代码
2016/04/25 Javascript
BootStrapValidator校验方式
2016/12/19 Javascript
JS基于面向对象实现的多个倒计时器功能示例
2017/02/28 Javascript
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
详解webpack多页面配置记录
2018/01/22 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
webpack css加载和图片加载的方法示例
2018/09/11 Javascript
原生JS 实现的input输入时表格过滤操作示例
2019/08/03 Javascript
vue实现select下拉显示隐藏功能
2019/09/30 Javascript
python操作数据库之sqlite3打开数据库、删除、修改示例
2014/03/13 Python
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
Python探索之ModelForm代码详解
2017/10/26 Python
Python反射用法实例简析
2017/12/22 Python
python实现数据库跨服务器迁移
2018/04/12 Python
Python3实现从排序数组中删除重复项算法分析
2019/04/03 Python
使用python写一个自动浏览文章的脚本实例
2019/12/05 Python
python GUI库图形界面开发之PyQt5窗口布局控件QStackedWidget详细使用方法
2020/02/27 Python
Python telnet登陆功能实现代码
2020/04/16 Python
python如何写个俄罗斯方块
2020/11/06 Python
python 基于Apscheduler实现定时任务
2020/12/15 Python
利用HTML5的新特点实现图片文件异步上传
2014/05/29 HTML / CSS
法国创作个性化T恤衫和其他定制产品平台:Tostadora
2018/04/08 全球购物
服装设计师求职信
2014/06/04 职场文书
三八妇女节寄语
2015/02/27 职场文书
2015年社区综治工作总结
2015/04/21 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang
详解Oracle块修改跟踪功能
2021/11/07 Oracle
MySQL的prepare使用以及遇到的bug
2022/05/11 MySQL