<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          幾個(gè)月nuxt.js項(xiàng)目使用后,實(shí)用知識(shí)點(diǎn)總結(jié)【干貨】

          共 5729字,需瀏覽 12分鐘

           ·

          2020-12-20 23:21

          關(guān)注公眾號(hào)?前端人,回復(fù)“加群

          添加無廣告優(yōu)質(zhì)學(xué)習(xí)群



          干了幾個(gè)月的nuxt項(xiàng)目,差點(diǎn)沒把自己給干翻。在公司沒開干nuxt項(xiàng)目之前,我也沒接觸過nuxt,潦潦草草看了幾眼官網(wǎng)就開干了,在這過程中也踩了不少坑,也寫了不少無謂的代碼,所以借助這次時(shí)間總結(jié)了一些實(shí)戰(zhàn)用到的知識(shí)點(diǎn)

          希望能幫到大家,能讓你少踩點(diǎn)坑,文采不好,湊合著看。

          middleware定義

          • nuxt.config
          • layout
          • pages

          middleware顧名思義就是中間件的意思,在中間價(jià)可以做路由攔截,參數(shù)過濾等等

          middleware

          nuxt.config 配置文件定義

          export?default{
          ?router:{
          ?????middleware:?['xxxx']?
          ?????//直接寫中間件文件名,比如middleware/auth.js,直接寫auth就ojbk
          ??}
          }

          特別提醒? :定義在nuxt.config中的中間件要在根目錄的middleware文件下,定義對(duì)應(yīng)的js文件,導(dǎo)出一個(gè)函數(shù)。

          layout頁面定義

          export?default?{
          ??middleware:({route,params,query})=>{
          ????console.log(route,params,query,?'layout')
          ??}
          }
          ###?pages頁面定義
          ```js
          export?default?{
          ??middleware:({route,params,query})=>{
          ????console.log(route,params,query,?'page')
          ??}
          }

          middleware的第一參數(shù)是一個(gè)上下文參數(shù),能夠解構(gòu)出route,params,query等等...參數(shù),足夠我們做各種騷操作。既然它們能夠定義在不同位置,那么它們的執(zhí)行順序就有前有后?。

          執(zhí)行順序:

          nuxt.config?=>?layout?=>?page

          validate 參數(shù)驗(yàn)證 (pages)

          validate鉤子主要是做頁面級(jí)別(pages)的參數(shù)驗(yàn)證操作,在它的上下文能夠解構(gòu)出params,query...參數(shù),最后return true代表驗(yàn)證通過,return false表示驗(yàn)證失敗。

          export?default?{
          ??validate({params,query}){
          ????console.log(params,query,'validate')
          ????return?true
          ??}
          }

          asyncData 服務(wù)端請(qǐng)求異步數(shù)據(jù) (pages)

          asyncData 主要做服務(wù)端數(shù)據(jù)請(qǐng)求渲染,在它上下文能夠解構(gòu)出axios,route,params...參數(shù),

          要解構(gòu)出axios,route,params...參數(shù),要解構(gòu)出axios,還需要做一些額外配置,往下拉有講到。

          解構(gòu)出$axios,就可以做ajax請(qǐng)求,最后把要渲染的數(shù)據(jù)return出去就行。

          export?default?{
          ??async?asyncData({$axios,route}){
          ????let?data?=?await?$axios('xxx/xxx/xx')
          ????return?{
          ?????data
          ????}
          ??}
          }

          擴(kuò)展路由(nuxt.config)

          在nuxt默認(rèn)為約定是路由,就是在pages在創(chuàng)建一個(gè)文件,或者一個(gè)文件夾就會(huì)自動(dòng)創(chuàng)建對(duì)應(yīng)的路由,無需手動(dòng)配置什么,方便極了

          這里就不多說,這里只要說一下,當(dāng)我們要對(duì)某個(gè)地址做一個(gè)特殊操作的時(shí)候,或者全面接管約定式路由的時(shí)候,就需要用擴(kuò)展路由了。

          假如想讓一個(gè)叫/hahaha/:id的路由也跳到詳情,也這樣做?

          export?default?{
          ??router:{
          ????extendRoutes:(routes,resolve)=>{
          ??????routes.push({
          ????????name:"hahaha",
          ????????path:'/hahaha/:id',
          ????????component:resolve(__dirname,'pages/detail/_id.vue')
          ??????})
          ????}
          ??}
          }

          假如要全面接管約定式路由,可以這樣做?

          export?default?{
          ??router:{
          ????extendRoutes(routes,?resolve){
          ?????return?[
          ???????{
          ?????????name:"home",
          ?????????path:"/",
          ?????????component:resolve(__dirname,'pages/index'),
          ?????????meta:{
          ???????????title:"home"
          ?????????}
          ???????}
          ???????...這里還可以繼續(xù)寫,一般如果要接管約定式路由的話,都會(huì)把它放到一個(gè)文件再引入
          ?????]
          ????}
          ??}
          }

          定制錯(cuò)誤頁面 (layout)

          處理錯(cuò)誤頁面,默認(rèn)情況下,nuxt提供了一個(gè)默認(rèn)的錯(cuò)誤頁面,如果你嫌它錯(cuò)的哇,也可以自己定制一個(gè)風(fēng)騷的錯(cuò)誤頁面,直接下layout目錄下定義一個(gè)error.vue文件就可以定制自己喜歡的錯(cuò)誤頁面了,它會(huì)代替默認(rèn)的錯(cuò)誤頁面,在error.vue的prop有個(gè)error屬于是包含錯(cuò)誤信息的

          <template>
          ??<div>
          ???錯(cuò)誤頁面{{?error?}}
          ??div>
          template>
          
          
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                    <th id="afajh"><progress id="afajh"></progress></th>
                    美女乱伦 | 狠狠操狠狠色 | 亚洲社区电影 | 伊人干综合 | 丁香色五月婷婷 |