nuxt知識(shí)匯總

說白了,基于vue的ssr(服務(wù)器渲染)就是將之前vue編程中通過

進(jìn)行渲染而致使seo搜索爬蟲抓取不到完整html的這一弊端進(jìn)行改進(jìn),通過編寫renderer代碼實(shí)現(xiàn)在服務(wù)器端渲染(合并)出完成html輸出到瀏覽器。

而nuxt.js就是對(duì)vue實(shí)現(xiàn)此功能的高度封裝,將原本vue不能seo、不能查看完整源代碼的應(yīng)用變成了一個(gè)能支持seo能查看完成源代碼支持爬蟲抓取的應(yīng)用,并且還提供了額外的功能,比如靜態(tài)站點(diǎn)生成。

so,使用nuxt.js的優(yōu)點(diǎn):

1)自動(dòng)生成路由文件,不用自己配置

2)模板輸出之前就已經(jīng)請(qǐng)求完數(shù)據(jù),所以其實(shí)最后輸出的是html的靜態(tài)文件嗎?


nuxt.js服務(wù)器渲染流程


nuxt.js文件

1)no-ssr.js

主要判斷是否需要將子組件進(jìn)行渲染,如果不需要或者用默認(rèn)布局等,則不能渲染。

2)nuxt-child.js

主要是遍歷所有組件,對(duì)transition效果和listener的一些相關(guān)的配置,并把組件和相關(guān)transition關(guān)聯(lián)起來。

3)nuxt-loading.vue

主要是對(duì)加載是否成功的一些函數(shù)的定義和css屬性等的配置。

4)nuxt.vue

將子組件引入(也包括error頁)

5)app.template.html

是nuxt所有模板的html展示頁面,dom結(jié)構(gòu)。

6)App.vue

是項(xiàng)目的主文件vue,

就在這里(相當(dāng)于
)。

7)client.js

包括處理熱加載,加載中間件等配置,還創(chuàng)建了vue實(shí)例,將#__nuxt加進(jìn)去,并將path加入到router中,然后在創(chuàng)建vue,將他們都創(chuàng)建了實(shí)例,串起來了。

8)index.js

創(chuàng)建app工廠,并將router和store都注入到所有的子組件中。

9)server.js

實(shí)現(xiàn)服務(wù)器渲染。

10)store.js

是vuex(狀態(tài)管理架構(gòu))里用來儲(chǔ)存狀態(tài)的,可以共享給其他的vue組件,就是存儲(chǔ)數(shù)據(jù)和管理數(shù)據(jù)方法的倉庫,實(shí)現(xiàn)方式是將數(shù)據(jù)和方法以對(duì)象形式傳入其實(shí)例中。要注意一個(gè)應(yīng)用或是項(xiàng)目中只能存在一個(gè)Store實(shí)例!

11)utils.js

配置需要的一些函數(shù)和方法。





掛載過程如下:

vue瀏覽器渲染和nuxt的服務(wù)器渲染對(duì)比:







注意:

以上用的是vue init nuxt-community/starter-template新手模板安裝的源碼解釋內(nèi)容,用vue init nuxt-community/express-template模板也差不多(不過沒有了store文件夾),這些新手模板安裝完成后,已經(jīng)封裝了store狀態(tài)管理內(nèi)容,通過的是createApp工廠模式為每個(gè)組件創(chuàng)建實(shí)例,然后將router和store加入進(jìn)去,使得每個(gè)組件都能用this.$store。

但是當(dāng)不用模板而完全自己構(gòu)建的話,就需要構(gòu)建vuex狀態(tài)樹來對(duì)組件的store進(jìn)行管理,在surmon項(xiàng)目中的狀態(tài)管理用的是vuex狀態(tài)樹的模塊方式:

1)store目錄下的每個(gè).js?文件都轉(zhuǎn)換成狀態(tài)樹指定命名的子模塊(eg:todos.js)

2)在頁面組件(eg:todos.vue)下可以使用todos模塊:this.$store.state.todos.list

具體可參見https://zh.nuxtjs.org/guide/vuex-store

用vuex狀態(tài)樹去管理store就用store里的數(shù)據(jù)去渲染頁面,就不用再new Vue了。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容