Nuxt.js 教程(一)

第一章 Nuxt.js 簡(jiǎn)介

官網(wǎng):https://zh.nuxtjs.org/

需求分析

  • 采用 vue.js 開(kāi)發(fā)的應(yīng)用系統(tǒng)SEO不友好监署,需要解決SEO的問(wèn)題
  • 比如:新聞門(mén)戶、博客系統(tǒng)有SEO的需求,希望被搜索引擎收錄,百度排名靠前等。

了解搜索引擎優(yōu)化 SEO

利用搜索引擎的規(guī)則提高網(wǎng)站在有關(guān)搜索引擎內(nèi)的自然排名。目的是讓其在行業(yè)內(nèi)占據(jù)領(lǐng)先地位,獲得品牌收益饵隙。很大程度上是網(wǎng)站經(jīng)營(yíng)者的一種商業(yè)行為,將自己或自己公司的排名前移沮脖。

采用什么技術(shù)可以利于 SEO 呢金矛?下面要先理解服務(wù)端渲染和客戶端渲染

服務(wù)端渲染和客戶端渲染(SSR)

什么是客戶端渲染

  1. 瀏覽器(客戶端)通過(guò) AJAX 向服務(wù)端(java servlet)發(fā)送 http請(qǐng)求數(shù)據(jù)接口。
  2. 服務(wù)端將獲取的接口數(shù)據(jù)封裝成 JSON 勺届,響應(yīng)給瀏覽器绷柒。
  3. 瀏覽器拿到JSON就進(jìn)行渲染html頁(yè)面,生成DOM元素涮因,然后將頁(yè)面展示給用戶废睦。

客戶端渲染特點(diǎn):

  1. 服務(wù)端只響應(yīng)數(shù)據(jù),不生成 html 頁(yè)面
  2. 瀏覽器(客戶端)負(fù)責(zé)發(fā)送請(qǐng)求獲取服務(wù)端的數(shù)據(jù)养泡,然后渲染成 html 頁(yè)面嗜湃。

什么是服務(wù)端渲染(SSR)

  1. 瀏覽器(客戶端)向服務(wù)端(java servlet)發(fā)送 http請(qǐng)求數(shù)據(jù)接口。
  2. 服務(wù)端 (servlet )會(huì)生成html頁(yè)面澜掩,響應(yīng)給瀏覽器购披。
  3. 瀏覽器直接將接收到html頁(yè)面進(jìn)行展示。
    服務(wù)端渲染特點(diǎn):
  4. 服務(wù)端只響應(yīng)數(shù)據(jù)肩榕,不生成 html 頁(yè)面
  5. 瀏覽器(客戶端)負(fù)責(zé)發(fā)送請(qǐng)求獲取服務(wù)端的數(shù)據(jù)刚陡,然后渲染成 html 頁(yè)面惩妇。

為什么使用服務(wù)器端渲染(SSR)

與傳統(tǒng)的SPA(單頁(yè)面應(yīng)用程序)相比,服務(wù)端渲染的優(yōu)勢(shì)主要有哪些:

  • 更好的 SEO筐乳,由于搜索引擎爬蟲(chóng)抓取工具可以直接查看完全渲染的頁(yè)面歌殃。
  • 更快的內(nèi)容到達(dá)時(shí)間(首屏加載更快)因?yàn)榉?wù)端只需要返回渲染好的HTML,這部分代碼量很小的蝙云,所以
    用戶體驗(yàn)更好氓皱。

權(quán)衡之處:

  • 開(kāi)發(fā)成本比較高,比如某些聲明周期鉤子函數(shù)(如beforeCreate勃刨、created)能同時(shí)運(yùn)行在服務(wù)端和
    客戶端波材,因此第三方庫(kù)要做特殊處理,才能在服務(wù)器渲染應(yīng)用程序中運(yùn)行身隐。
  • 由于服務(wù)端渲染要用Nodejs做中間層廷区,所以部署項(xiàng)目時(shí),需要處于Node.js server運(yùn)行環(huán)境贾铝。在高流量環(huán)境
    下躲因,還要做好服務(wù)器負(fù)載和緩存策略。

Vue.js 如何實(shí)現(xiàn) SSR

  1. 基于官方Vue SSR指南文檔的官方方案忌傻,官方方案具有更直接的控制應(yīng)用程序的結(jié)構(gòu),更深入底層搞监,更加靈活水孩,同時(shí)在使用官方方案的過(guò)程中,也會(huì)對(duì)Vue SSR有更加深入的了解琐驴。
  2. vue.js 通用應(yīng)用框架 NUXT 俘种, NUXT 提供了平滑的開(kāi)箱即用的體驗(yàn),它建立在同等的 Vue.js 技術(shù)棧之上绝淡,但抽象出很多模板宙刘,并提供了一些額外的功能,例如靜態(tài)站點(diǎn)生成牢酵。通過(guò)NUXT可以根據(jù)約定的規(guī)則悬包,快速的實(shí)現(xiàn)Vue SSR。

什么是 Nuxt.js

  • Nuxt.js是一個(gè)基于Vue.js的通用應(yīng)用框架
  • 通過(guò)對(duì) 客戶端/服務(wù)端 基礎(chǔ)框架的抽象組織馍乙,Nuxt.js主要關(guān)注的是應(yīng)用的UI渲染
  • Nuxt.js的目標(biāo)是創(chuàng)建一個(gè)靈活的應(yīng)用框架布近,你可以基于它初始化新項(xiàng)目的基礎(chǔ)代碼結(jié)構(gòu)
  • 作為框架Nuxt.js為 客戶端/服務(wù)端 這種典型的應(yīng)用架構(gòu)模式提供了許多有用的新特性

為什么要使用 Nuxt.js

主要是為了實(shí)現(xiàn)服務(wù)端的渲染(SSR),利用Nuxt.js的服務(wù)端渲染來(lái)解決 Vue 項(xiàng)目的 SEO

Nuxt.js 工作原理

  1. 瀏覽器(客戶端)發(fā)送 http 請(qǐng)求到 Node.js 服務(wù)端
  2. 部署在 Node.js 的應(yīng)用 Nuxt.js 接收到瀏覽器請(qǐng)求丝格,會(huì)去請(qǐng)求后臺(tái)接口服務(wù)端
  3. 后臺(tái)接口服務(wù)端會(huì)響應(yīng) JSON 數(shù)據(jù)撑瞧,Nuxt.js 獲取數(shù)據(jù)后進(jìn)行服務(wù)端渲染成 html 。
  4. 然后 Nuxt.js 將 html 頁(yè)面響應(yīng)給瀏覽器显蝌。
  5. 瀏覽器直接將接收到html頁(yè)面進(jìn)行展示

Nuxt.js 使用了 vue.js + webpack + babel 三大技術(shù)架構(gòu)预伺,集成了 Vue.js 中以下組件/框架,用于開(kāi)發(fā)完整而強(qiáng)大的Web 應(yīng)用:

  • Vue 2
  • Vue-Router
  • Vuex (當(dāng)配置了 Vuex 狀態(tài)樹(shù)配置項(xiàng) 時(shí)才會(huì)引入)
  • Vue 服務(wù)器端渲染 (排除使用 mode: 'spa' )
  • Vue-Meta
    壓縮并 gzip 后,總代碼大小為:57kb (如果使用了 Vuex 特性的話為 60kb)酬诀。
    另外脏嚷,Nuxt.js 使用 Webpack 和 vue-loader 、 babel-loader 來(lái)處理代碼的自動(dòng)化構(gòu)建工作(如打包料滥、代碼分層然眼、壓縮等等)。

Nuxt 生命周期流程圖分析

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末葵腹,一起剝皮案震驚了整個(gè)濱河市高每,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌践宴,老刑警劉巖鲸匿,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異阻肩,居然都是意外死亡带欢,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)烤惊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)乔煞,“玉大人,你說(shuō)我怎么就攤上這事柒室《杉郑” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵雄右,是天一觀的道長(zhǎng)空骚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)擂仍,這世上最難降的妖魔是什么囤屹? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮逢渔,結(jié)果婚禮上肋坚,老公的妹妹穿的比我還像新娘。我一直安慰自己肃廓,他們只是感情好冲簿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著亿昏,像睡著了一般峦剔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上角钩,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天吝沫,我揣著相機(jī)與錄音呻澜,去河邊找鬼。 笑死惨险,一個(gè)胖子當(dāng)著我的面吹牛羹幸,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播辫愉,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼栅受,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了恭朗?” 一聲冷哼從身側(cè)響起屏镊,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎痰腮,沒(méi)想到半個(gè)月后而芥,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膀值,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年棍丐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片沧踏。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡歌逢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出翘狱,到底是詐尸還是另有隱情秘案,我是刑警寧澤,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布盒蟆,位于F島的核電站,受9級(jí)特大地震影響师骗,放射性物質(zhì)發(fā)生泄漏历等。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一辟癌、第九天 我趴在偏房一處隱蔽的房頂上張望寒屯。 院中可真熱鬧,春花似錦黍少、人聲如沸寡夹。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)菩掏。三九已至,卻和暖如春昵济,著一層夾襖步出監(jiān)牢的瞬間智绸,已是汗流浹背野揪。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瞧栗,地道東北人斯稳。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像迹恐,于是被迫代替她去往敵國(guó)和親挣惰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容