现实背景:很多时候我们会在全局调用一些方法。

  实现方式两种:官网的实现use方法,然后你也可以用野路子直接在Vue.prototype上面定义。

  先说野路子,因为其实野路子就是最根本的实现方式,官方的use实现也是一样的,只是use很好的封装了。

/*

*main.js中实例Vue时添加方法
*/
import Vue from 'vue';
//这样以后你就可以在该项目下的其他组件中使用hello了,直接调用 this.hello('正字表达狮')。
Vue.prototype.hello = function(name){
console.log(`hello ${name}`)
} new Vue({
el: '#app',
router,
store,
render: h => h(App)
})

  

原理很简单,因为Vue实质上就是一个对象。大多数对象都会存在原型对象,在Vue原型上添加了方法之后,new Vue()实例化时vm就继承了该方法。因为其他组件也会继承vm所以所有的组件都可以调用该方法。接下来看看Vue.use()。

  首先我新建一个deta.js。里面封装一个对象。

const date = {
tickToLong(tick) {
let seconds = tick / 1000;
let h = Math.floor(seconds / 60 / 60);
let m = Math.floor((seconds - 60 * 60 * h) / 60);
let s = Math.floor(seconds - 60 * 60 * h - 60 * m);
return h + ':' + m + ':' + s
},
tickToTime(tick){
let date = new Date(tick);
let h = date.getHours() > 9 ? date.getHours() : '0' + date.getHours();
let i = date.getMinutes() > 9 ? date.getMinutes() : '0' + date.getMinutes();
let s = date.getSeconds() > 9 ? date.getSeconds() : '0' + date.getSeconds();
return h+':'+i+':'+s
}
} const install = function(vm, options) {//插件必须有这样一个install方法。
vm.prototype._date = date;
}
export default { install }

  可以看到里面有一个install方法,然后将该方法暴露出来。install方法是必须的,可看官网use相关部分。我们发现install里面其实就是我们野蛮的第一中种方式。install当中的vm实际上就是Vue这个对象。所以本质上两种方式都是在vue原型上面添加了方法。当然建议大家在工作中不要使用第一种方法。因为别人会觉得你很low啊,而且你的main文件会莫名其妙多很多代码,自己看着也很难受啊。

但是由于模块比较多,我对于每个模块分配了不同的组件,发现一个项目中有许多相同的方法,
在每个组件中我都需要进行重复的编写。 所以,我希望能够将这些公共的方法,抽离出来放到同一个 js 中,这里就取名 util.js

3、实现方法

1、方法一

暴露接口的方式,直接在组件中进行引用

首先在 util.js 单独文件中写两个方法:

在组件中引用,测试了无法在 main.js 中全局引用(有方法请告诉我):

import {a,b} from '../static/js/util.js'

调用:

test: function() {
a();
b();
}

2、方法二:

将公共方法集成到 Vue 原型上,Vue.prototype.name

首先在 util.js 中写方法:

在 main.js 中进行全局引用:

调用:

this.adminApi.a();
this.adminApi.b();

转 https://segmentfault.com/u/allenchinese/activities?page=5

必备技能六、Vue中实现全局方法的更多相关文章

  1. vue中代理实现方法

    vue中代理实现方法如下: const path = require('path'); function resolve(dir) { return path.join(__dirname, dir) ...

  2. 必备技能六、Vue框架引入JS库的正确姿势

    在Vue.js应用中,可能需要引入Lodash,Moment,Axios,Async等非常好用的JavaScript库.当项目变得复杂庞大,通常会将代码进行模块化拆分.可能还需要跑在不同的环境下,比如 ...

  3. vue中的全局组件和局部组件的应用

    1全局组件 vue框架: https://www.vue-js.com/?tab=all 组件树 solt 内置分发组件 应用见局部组件 2局部组件 2.1局部组件的使用:生子 - 挂子 - 用子 & ...

  4. Android中Application全局方法(变量)的调用

    Application和Actovotu,Service一样是android框架的一个系统组件,当android程序启动时系统会创建一个 application对象,用来存储系统的一些信息.通常我们是 ...

  5. Vue中使用mui方法

    第一步 下载 下载网址:http://dev.dcloud.net.cn/mui/ui/ 点击GitHub进行下载 第二步 Vue中引入Mui 将下载好的文件解压 把文件中dist中的三个文件复制到自 ...

  6. vue中methods一个方法调用另外一个方法

    转自http://blog.csdn.net/zhangjing1019/article/details/77942923 vue在同一个组件内: methods中的一个方法调用methods中的另外 ...

  7. 如何在Vue中建立全局引用或者全局命令

    1 一般在vue中,有很多vue组件,这些组件每个都是一个文件.都可能需要引用到相同模块(或者插件).我们不想每个文件都import 一次模块. 如果是基于vue.js编写的插件我们可以用 Vue.u ...

  8. vue中创建全局单文件组件/命令

    1.在 vue中如果我们使用基于vue.js编写的插件,我们可以使用Vue.use() 如在main.js中: 2.添加全局命令,让每个vue单文件组件都可以使用到: 第一步:最好建一个全局的命令文件 ...

  9. vue 中注册全局组件

    1  全局注册组件 建一个 js 文件, 注册全局组件, 并且暴露出去 然后再在 main.js  中引入       在页面就可以直接使用了    2 全局注册过滤器 建立文件, 包含所有过滤器方法 ...

随机推荐

  1. EXAM-2018-8-9

    EXAM-2018-8-9 B 水题 注意理解题意 有坑 G 博弈 观察发现 总是会进行到最后两个,或者先手取完全部,再特判一下只有一张牌的情况 H 九连环 通过找规律 我们可以得出递推式: F[n] ...

  2. jmeter测试get post 笔记

    0 环境 系统环境:win7 1 操作 1 post 新建线程组 2 get 和post新建类似 http请求 只是新建一个参数化我测试的2个url http://127.0.0.1:8080/cry ...

  3. resent|aspiration|deficiency|diagnosed|distract|emphasize

    VERB 怨恨;憎恶;愤恨If you resent someone or something, you feel bitter and angry about them. She resents h ...

  4. python掉包侠与深浅拷贝

    今日所得 包 logging模块 hashlib模块 openpyxl模块 深浅拷贝 包 在学习模块的时候我们了解过模块的四种表现形式,其中的一种就是包. 什么是包? 它是一系列模块文件的结合体,表示 ...

  5. 统计学方法(PCA、ICA、RCA、LCA)

    ---------------------------------------------------------------------------------------------------- ...

  6. MOOC(7)- case依赖、读取json配置文件进行多个接口请求-学习mock(7)

    学习mock # learn_mock_7.py # 单元测试结合mock思路 import unittest from mock import mock from day_20200208_mooc ...

  7. Docker 安装 CentOS

    Docker 安装 CentOS CentOS(Community Enterprise Operating System)是 Linux 发行版之一,它是来自于 Red Hat Enterprise ...

  8. C语言数据类型char

    char简介 char是C/C++中的基本数据类型,可容纳单个字符的一种基本数据类型. char占一个字节,也就是8个bit(二进制位),0000 0000 ~ 1111 1111,在无符号类型时ch ...

  9. 【待填坑】LG_4996_咕咕咕

    正解思路和[AHOI]的中国象棋非常相似,同样是利用状态不一定一定要表示出来,利用组合数学递推节省枚举时间.

  10. byte的取值范围是-128~127,那么包含-128和127吗?

    本帖最后由 王德升老师 于 2019-12-27 17:56 编辑 byte的取值范围为什么是-128~127?如果面试官问你取值范围包含127吗?1. 首先我们知道Java中byte类型是1个字节占 ...