vue抽取公共方法———方法一


方法一:Vue插件

1.概述

作用:滿足vue之外的需求,特定場景的需求

比如說,讓你在每個單頁面組件里,都可以調用某個方法(公共方法),或者共享某個變量等

2.使用方法

【聲明插件】- 【寫插件】-【注冊插件】-【使用插件】

生命插肩和寫插件是同時進行的,注冊插件到Vue對象中,最后在Vue組件的時候使用寫的插件

聲明插件

 插件的需求都是公共部分,所以會創建文件夾utils,里面創建一個js文件,基本內容如下:

install的第一個參數Vue表示Vue的實例,也就是Vue對象,第二個參數opt表示的是設置選項,是指在調用這個插件時可以傳一個對象。

比如這個對象調用時接受一個參數no,在插件中,我需要將這個no賦值給Vue對象的另一個data,就可以這樣

注冊插件

注冊插件其實就是用import引入后,然后通過Vue.use(插件名),就跟vue-router和vue-resource一樣。

例如:我們通常在main.js中引入各種東西,並且組件的根實例也在這里。

通過import引入文件,然后在創建根組件之前,讓Vue對象通過use方法注冊插件,通過這兩步,就可以使用插件了。

3.寫插件、使用插件

按照官方文檔,寫插件有四種方法,示例如下:(鏈接:https://cn.vuejs.org/v2/guide/plugins.html#ad)

3.1【添加實例方法或屬性】

1.核心思想是,通過prototype來添加方法和屬性

2.寫:

  

3.用:

4.假如添加的是屬性:

如:Vue.prototype.no= 1;

會發生什么事情呢?

1.不管是【按值傳遞類型】還是【按引用傳遞類型】,該變量都不會被不同組件所共享,更准確的說,假如有A,B兩個組件。A里面的no數值改變,B組件里的no數值是不會跟着改變的。

2.    當組件里沒有該屬性時,調用時,顯示的是通過插件獲取的值;

  當組件里有該屬性時,調用是,顯示的是該組件里該屬性的值;

  所以,函數也是這樣的,組件里的同名函數總是會覆蓋插件提供的函數。

3.2【添加全局方法或屬性】

1.核心思想:就是給Vue對象添加一個方法或屬性。

和3.1區別是,3.1是給組件內部使用的,相當於組件Methods里定義的方法,而3.2是給Vue對象使用的。

例如:有一個方法test(),那么:

  通過3.1添加,是在組件里,通過this.test()來調用

  通過3.2添加,是在外面通過Vue實例,如Vue.test()來調用

2.寫:

Vue.test= function (){   alert(2)   }

3.用:

Vue.test()

3.3【注入組件】

1.核心思想:

就像寫Vue組件時,那樣寫,方法名保持一致,其會在執行組件對應的方法名之前執行,或者不需要這種需求,只是簡單注入到各個組件methods中

2.寫:

【注入給非Vue實例本身就有的方法】:

假如是給比如methods屬性的某個方法,例如上圖的showBank,若組件中有showBank就不會執行插件中的這個showBank,如果組件中沒有才會執行插件中的這個showBank。其實就是同名先執行組件本身中的方法。

3.用:

和正常寫在組件內部methods屬性里面的方法使用方式一樣,注入其實就是和寫在內部methods中等同!

3.4【添加全局資源】

和正常方法類似,甚至幾乎一樣,可以添加【自定義指令】【過濾器】【過渡】等,這里以【過濾器】為例

1.寫:

2.用:

{{num | formatTime}}

4.demo示例

版權聲明:參考自http://blog.csdn.net/qq20004604


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM