美文网首页
如何在Vue中建立全局引用或者全局命令

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

作者: 闪帅念 | 来源:发表于2019-06-10 14:00 被阅读0次

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

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

main.js

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

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

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

dircetive.js

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

main.js

import focus from './components/directive/directive'

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

<main class="middle"><input type="" name="" v-focus></main>

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

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

mixins.js

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

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

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

import [playAudio,saveScrollPosition] from '../mixins'

mixins:[playAudio,saveScrollPosition]

这样就会很方便。

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

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

main.js

Vue.prototype.$http = axios

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

在xxx.vue

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

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

main.js

window.lodash = require('lodash') 

在xxx.vue

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

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

在此声明,文章引用出处:如何在Vue中建立全局引用或者全局命令 - 萧了个晓 - 博客园

相关文章

网友评论

      本文标题:如何在Vue中建立全局引用或者全局命令

      本文链接:https://www.haomeiwen.com/subject/jgvrxctx.html