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