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

摘要:
1通常,vue中有许多vue组件,每个组件都是一个文件。可能需要引用同一模块。如果插件是基于vue.js编写的,我们可以使用vue。使用(…)main.js2。但如果我们想添加一个全局命令并使每个vue文件都可用呢?因此,在我们编写一个新的saveScrollPosition并将其公开之后,将其混合到所需的页面中会很方便。

1 一般在vue中,有很多vue组件,这些组件每个都是一个文件。都可能需要引用到相同模块(或者插件)。我们不想每个文件都import 一次模块。

如果是基于vue.js编写的插件我们可以用 Vue.use(...)

main.js

如何在Vue中建立全局引用或者全局命令第1张

 2 但是如果想添加一个全局命令,同时又让每个vue的文件都能用到怎么办?

第一步:最好建立一个全局的命令文件例如:directive/directive.js

第二步:利用Vue.directive()建立一个全局命令,并将它暴露出来,例如一个focus 让表单自动聚焦

directive.js

 如何在Vue中建立全局引用或者全局命令第2张

第三部步:在main.js(入口JS文件)中将它引入,可以省略文件后缀

main.js

如何在Vue中建立全局引用或者全局命令第3张

这样任何一个Vue文件只要这样v-focus(命令名),就可以很方便的用到了

如何在Vue中建立全局引用或者全局命令第4张

3  Vue.directive() 的命令一般都是自动运行的或者说初始化等等触发的,并不能用于异步事件,怎么办?

于是我们可以用到'mixins'混合命令,你最好建立一个专门的文件夹用于存放混合命令,例如:

mixins.js

如何在Vue中建立全局引用或者全局命令第5张

比如 saveScrollPosition (不是vue中的saveScrollPosition)可以每次在路由跳转之间保存住浏览位置信息

注意:vue2.0 中 路由跳转之间会自动保存位置信息 但是有Bug(位置信息之间会相互干扰)。

 所以我们从新写一个saveScrollPosition暴露出去后,在你需要的页面中混入

如何在Vue中建立全局引用或者全局命令第6张

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

这样就会很方便。

4 如果你需要应用一个插件,同时他并不是基于vue.js的插件命令编写的,那你可以将它赋予Vue的原型上

例如:我想全局引用axios,我们可以这样

main.js

如何在Vue中建立全局引用或者全局命令第8张

然后this.$http.get(url) 等等

xxx.vue

如何在Vue中建立全局引用或者全局命令第9张

5 将需要的变量挂在到window对象上

例如:第三方库Lodash.js,moment.js等等

main.js

如何在Vue中建立全局引用或者全局命令第10张

xxx.vue

如何在Vue中建立全局引用或者全局命令第11张

注意:这种方式不适合服务端渲染,服务端并没有window对象

强调一点:以上所有的引入都必须通过入口JS文件去引入,这样才能适用于全局

免责声明:文章转载自《如何在Vue中建立全局引用或者全局命令》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇分享一次大厂的辛酸面试经历vim--分屏快捷键下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue中添加文字或图片水印

首先引用warterMark.js,内容如下 'use strict' var watermark = (className,str,type) =>{ let dom =document.getElementsByClassName(className) let canvas = document.createElement('...

如何机智判断页面是刷新还是关闭,背景:vue项目,需求:关闭页面,下次直接跳到登陆页

最近项目有这么个需求:要在关闭当前系统的窗口的时候,退出登录, 因为如果不退出登录可能存在安全风险,其实我想说,电脑没事别借给别人活着离开工位记得一定要锁屏,其实我们设置了cookie失效时间的,过了一段时间会自动清空cookie。 经过我查资料,自身尝试网上的各种方法,发现都有问题。 总结这一路的尝试: 一、页面加载时只执行onload ,页面关闭时只执...

vue长按事件

<template> <div class="authorization"> <div class="main"> <div class="login-logo"> <img :src="http://t.zoukankan.com/logo" alt=""> <div class="tex...

学习vue结合ajax查询出后台数据

第一步:先获取后台的API 这里已经写好了后台,API是bookAction_getAllBook 第二步:创建jsp文件并导入vue.js和JQuery.js 第三步:写上Model 第四步:写上View 这时页面上的显示的数据都是写死的,这时候就需要写上ajax通过它来获取到后台的数据并把它显示出来 第五步:ajax 先把model定义成一...

uniapp、vue,vuex中state改变,getters不动态改变的完美解决方案!

//想必各位朋友一定经历着,改变state,getters却不改变的痛苦,接下来博主给出解决方案; //方案很简单,第一步,改变state时,如改变state中的cart属性时,引入vue,使用vue set添加未定义的flag,如下: import Vue from 'vue'; //一定要引入vue,接下来要使用 //mutations Ad...

vue v-model 的注意点

在使用表单元素 input 的 v-model 指令时,碰到一个问题: 如上图,修改 input 的内容,以便随时显示;但显示时明显慢一步。 <template> <div> <input type="text" v-model="obj.val" @keyup="onUpdate"> <sp...