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

1 通常在vue中,有不少vue組件,這些組件每一個都是一個文件。均可能須要引用到相同模塊(或者插件)。咱們不想每一個文件都import 一次模塊。

若是是基於vue.js編寫的插件咱們能夠用 Vue.use(...)vue

main.jsios

 

 2 可是若是想添加一個全局命令,同時又讓每一個vue的文件都能用到怎麼辦?

第一步:最好創建一個全局的命令文件例如:directive/directive.jsaxios

第二步:利用Vue.directive()創建一個全局命令,並將它暴露出來,例如一個focus 讓表單自動聚焦異步

directive.jsthis

 

第三部步:在main.js(入口JS文件)中將它引入,能夠省略文件後綴url

main.jsspa

這樣任何一個Vue文件只要這樣v-focus(命令名),就能夠很方便的用到了插件

 

3  Vue.directive() 的命令通常都是自動運行的或者說初始化等等觸發的,並不能用於異步事件,怎麼辦?

因而咱們能夠用到'mixins'混合命令,你最好創建一個專門的文件夾用於存放混合命令,例如:對象

mixins.jsblog

好比 saveScrollPosition (不是vue中的saveScrollPosition)能夠每次在路由跳轉之間保存住瀏覽位置信息

注意:vue2.0 中 路由跳轉之間會自動保存位置信息 可是有Bug(位置信息之間會相互干擾)。

 因此咱們重新寫一個saveScrollPosition暴露出去後,在你須要的頁面中混入

這樣就會很方便。

 

4 若是你須要應用一個插件,同時他並非基於vue.js的插件命令編寫的,那你能夠將它賦予Vue的原型上

例如:我想全局引用axios,咱們能夠這樣

main.js

而後this.$http.get(url) 等等

xxx.vue

5 將須要的變量掛在到window對象上

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

main.js

xxx.vue

注意:這種方式不適合服務端渲染,服務端並無window對象

 

強調一點:以上全部的引入都必須經過入口JS文件去引入,這樣才能適用於全局

相關文章
相關標籤/搜索