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 相关文章推荐
JavaScript中的Document文档对象
Jan 16 Javascript
基于jQuery的简单的列表导航菜单
Mar 02 Javascript
jquery提取元素里的纯文本不包含span等里的内容
Sep 30 Javascript
document.write的几点使用心得
May 14 Javascript
纯js实现手风琴效果
Apr 17 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
May 26 Javascript
angularjs实现简单的购物车功能
Sep 21 Javascript
详解ESLint在Vue中的使用小结
Oct 15 Javascript
Vue.js 父子组件通信的十种方式
Oct 30 Javascript
javascript(基于jQuery)实现鼠标获取选中的文字示例【测试可用】
Oct 26 jQuery
javascript设计模式 ? 职责链模式原理与用法实例分析
Apr 16 Javascript
Vue监视数据的原理详解
Feb 24 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转换IP地址到真实地址的方法详解
2013/06/09 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
php_imagick实现图片剪切、旋转、锐化、减色或增加特效的方法
2014/12/15 PHP
php微信公众号开发之音乐信息
2018/10/20 PHP
JavaScript之自定义类型
2012/05/04 Javascript
jQuery链式操作如何实现以及为什么要用链式操作
2013/01/17 Javascript
JQuery获取样式中的background-color颜色值的问题
2013/08/20 Javascript
jQuery内置的AJAX功能和JSON的使用实例
2014/07/27 Javascript
控制台报错object is not a function的解决方法
2014/08/24 Javascript
Js中使用hasOwnProperty方法检索ajax响应对象的例子
2014/12/08 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
vue实现商城秒杀倒计时功能
2019/12/12 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
Python 、Pycharm、Anaconda三者的区别与联系、安装过程及注意事项
2019/10/11 Python
手把手教你Python yLab的绘制折线图的画法
2019/10/23 Python
利用python实现PSO算法优化二元函数
2019/11/13 Python
HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)
2014/05/07 HTML / CSS
详解canvas绘图时遇到的跨域问题
2018/03/22 HTML / CSS
英国最受欢迎的价格比较网站之一:MoneySuperMarket
2018/12/19 全球购物
交通专业个人自荐信格式
2013/09/23 职场文书
趣味运动会广播稿
2014/09/13 职场文书
淘宝好评语句大全
2014/12/31 职场文书
2015年七一建党节活动总结
2015/03/20 职场文书
教师工作证明范本
2015/06/12 职场文书
公司员工奖惩制度
2015/08/04 职场文书
《棉鞋里的阳光》教学反思
2016/02/20 职场文书
导游词之青岛崂山
2019/12/27 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
SpringBoot集成Druid连接池连接MySQL8.0.11
2021/07/02 Java/Android
深入浅析Django MTV模式
2021/09/04 Python
SpringBoot整合Minio文件存储
2022/04/03 Java/Android
Python调用腾讯API实现人脸身份证比对功能
2022/04/04 Python