對 nuxt 插件的理解

nuxt 沒有main.js 文件了,

所以要想在根實例裏面的鉤子函數中添加代碼就很麻煩,比如,你想添加一個監聽刷新的事件,這個事件只能在根實例的鉤子函數裏面添加。

爲什麼呢?

因爲,如果是網頁的話,你不是監聽的當前這個組件的刷新事件,你是監聽整個app 的刷新事件,不論哪個組件顯示在屏幕上都應該存在這個監聽事件。所以應該在app 初始化完成後(根實例的mounted)的mouted 中添加監聽代碼,如果是在某個組件中添加的話,如果沒有打開這個組件就不會執行代碼,當前app 就沒有監聽事件。

那麼有人說了,爲什麼不在主頁的 組件裏面添加這個代碼呢,

因爲,如果別人沒有進入主頁呢?而是通過搜索引擎直接進入了其他的vue組件了,那麼這個app 還是沒有這個監聽事件。

 

2 插件裏面接收了一個context 上下文對象,對象中有 vue 根實例,所以你可以對根實例爲所欲爲,比如在根實例中添加原型,

在根實例中添加全局組件,在根實例總註冊全局自定義指令,等等。

 

3  這樣基本上main 的js 中能做的,這裏都能做了,因爲main.js 中也就是有一個 vue 根實例對象,你可以在根實例對象上做點手腳,等到根實例執行的時候這個也能執行。

 

4 如果你根本不需要根實例 vue , 你只是想像在 main.js 裏引入一個外部自定義js 文件那樣,就是想在項目初始化的時候執行下文件裏的一段代碼,那麼插件也能做到,你要做的就是定義一個js 文件,然後註冊插件,然後,nuxt 會自動把你的代碼編譯到main,js 文件裏面(可以這麼理解,事實不一定是這樣。)

5 唯一不能做的,我現在還不知道的就是沒有辦法獲取根實例的生命週期函數,因爲有些代碼要在聲明周期函數裏面執行纔可以。

 

 

發佈了90 篇原創文章 · 獲贊 50 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章