前端學習 -- NuxtJS學習筆記

      網友投稿 956 2025-04-06

      文章內容輸出來源:大前端高薪訓練營


      代碼倉庫地址:https://gitee.com/jiailing/nuxtjs-demo,在多個分支里都有代碼

      一、Nuxt.js是什么

      一個基于Vue.js生態的第三方開源服務端渲染應用框架

      它可以幫我們輕松的使用Vue.js技術棧構建同構應用

      官網:https://zh.nuxtjs.org/

      Github倉庫:https://github.com/nuxt/nuxt.js

      二、Nuxt.js的使用方式

      初始化項目

      已有的Node.js服務端項目

      直接把Nuxt當做一個中間件集成到Node Web Server中

      現有的Vue.js項目

      非常熟悉Nuxt.js

      至少百分之10的代碼改動

      三、初始化Nuxt.js應用方式

      官方文檔:https://zh.nuxtjs.org/guide/installation

      方式一:使用create-nuxt-app

      方式二:手動創建

      四、Nuxt.js路由

      pages文件夾下的文件會自動生成路由

      a標簽

      它會刷新整個頁面,不推薦使用

      首頁

      nuxt-link組件

      https://router.vuejs.org/zh/api/#router-link-props

      首頁

      編程式導航

      https://router.vuejs.org/zh/guide/essentials/navigation.html

      methods: { onClick () { this.$router.push('/') } }

      1

      2

      3

      4

      5

      Vue Router動態路由匹配

      https://router.vuejs.org/zh/guide/essentials/dynamic-matching.html

      Nuxt

      https://zh.nuxtjs.org/guide/routing#%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1

      user/_id.vue,動態路由參數文件名由下劃線開頭。

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      Vue Router 嵌套路由

      https://router.vuejs.org/zh/guide/essentials/nested-routes.html

      Nuxt.js嵌套路由

      https://zh.nuxtjs.org/guide/routing#%E5%B5%8C%E5%A5%97%E8%B7%AF%E7%94%B1

      可以通過 vue-router 的子路由創建 Nuxt.js 應用的嵌套路由。創建內嵌子路由,你需要添加一個 Vue 文件,同時添加一個與該文件同名的目錄用來存放子視圖組件。

      Warning: 別忘了在父組件(.vue文件) 內增加 用于顯示子視圖內容。

      參考文檔:https://zh.nuxtjs.org/api/configuration-router

      在項目根目錄下創建nuxt.config.js

      /** * Nuxt.js 配置文件 nuxt.config.js */ module.exports = { router: { base: '/abc', // routes就是路由配置表,是個數組,resolve是解析路由路徑的 extendRoutes(routes, resolve) { routes.push({ name: 'custom', path: '*', component: resolve(__dirname, 'pages/404.vue') }), routes.push({ name: 'hello', path: '/hello', component: resolve(__dirname, 'pages/about.vue') }) } } }

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      五、Nuxt.js視圖

      你可以定制化 Nuxt.js 默認的應用模板。

      定制化默認的 html 模板,只需要在 src 文件夾下(默認是應用根目錄)創建一個 app.html 的文件。

      默認模板為:

      {{ HEAD }} {{ APP }}

      1

      2

      3

      4

      5

      6

      7

      8

      9

      Nuxt.js 允許你擴展默認的布局,或在 layout 目錄下創建自定義的布局。

      可通過添加 layouts/default.vue 文件來擴展應用的默認布局。

      提示: 別忘了在布局文件中添加 組件用于顯示頁面的主體內容。

      默認布局的源碼如下:

      1

      2

      3

      可以在組件中通過layout屬性修改默認布局組件:

      Index頁面的布局組件變成了foo,但是about頁面還是default,因為about頁面沒有修改其layout屬性,所以默認的布局文件還是default

      六、Nuxt.js異步數據

      Nuxt.js 擴展了 Vue.js,增加了一個叫 asyncData 的方法,使得我們可以在設置組件的數據之前能異步獲取或處理數據。

      https://zh.nuxtjs.org/guide/async-data

      基本用法

      它會將asyncData返回的數據融合組件data方法返回數據一并給組件

      調用時機:服務端渲染期間和客戶端路由更新之前(保證了服務端和客戶端都要運行處理數據)

      注意事項

      只能在頁面組件中使用,非頁面組件中不會調用asyncData方法,如果子組件中需要數據,可以通過props方式傳遞數據

      沒有this,因為它是在組件初始化之前被調用的

      當你想用的動態頁面內容有利于SEO或者是提升首屏渲染速度的時候,就在asyncData中發送請求數據。如果是非異步數據或者普通數據,則正常的初始化到data中即可。

      Pages/index.vue

      1

      大前端學習 -- NuxtJS學習筆記

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      pages/components/Foo.vue

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      static這個文件夾可以直接作為根路徑訪問

      https://zh.nuxtjs.org/guide/async-data#%E4%B8%8A%E4%B8%8B%E6%96%87%E5%AF%B9%E8%B1%A1

      pages/article/_id.vue

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      Components/Foo.vue

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      pages/index.vue

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      18

      19

      20

      21

      22

      23

      24

      25

      26

      27

      28

      29

      30

      31

      32

      33

      34

      35

      36

      37

      38

      JavaScript web前端

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps表格怎樣設置只讀模式的教程(wps表格變成只讀模式怎么辦)
      下一篇:wps畢業論文排版教程
      相關文章
      国产亚洲美女精品久久久久狼| 亚洲精品无码成人片在线观看 | 亚洲成人高清在线观看| 亚洲国产成人片在线观看| 国产偷窥女洗浴在线观看亚洲| 亚洲精品tv久久久久久久久久| 国产成人综合亚洲绿色| 亚洲成av人在线观看网站| 亚洲av纯肉无码精品动漫| 日韩国产精品亚洲а∨天堂免| 亚洲AV无码专区国产乱码不卡| 亚洲av日韩专区在线观看| 爱爱帝国亚洲一区二区三区| 麻豆亚洲AV成人无码久久精品| 久久久亚洲精华液精华液精华液| 国产精品亚洲综合网站| 国产亚洲精品美女久久久久| 国产精品日本亚洲777| 亚洲午夜无码AV毛片久久| 国产亚洲午夜高清国产拍精品| 中文字幕亚洲乱码熟女一区二区| 亚洲亚洲人成综合网络| 久久精品夜色国产亚洲av| 2022年亚洲午夜一区二区福利| 亚洲综合图片小说区热久久| 亚洲一区无码中文字幕乱码| 亚洲国产日韩精品| 亚洲av无码一区二区三区人妖| 亚洲AV无码乱码精品国产| 国产精品亚洲美女久久久| 亚洲精品乱码久久久久久按摩| 亚洲丁香色婷婷综合欲色啪| 亚洲激情在线视频| 亚洲人6666成人观看| 亚洲乱妇老熟女爽到高潮的片| www.亚洲色图| 亚洲美女又黄又爽在线观看| 亚洲综合婷婷久久| 国产成+人+综合+亚洲专| 亚洲av色香蕉一区二区三区| 中文字幕精品亚洲无线码一区 |