前端學習之nuxtjs
兩個非同步任務沒有關聯關係,可以改為並行執行節省時間
Promise.all返回執行的所有非同步任務結果組成的陣列
dayjs一個輕量級的時間處理類庫
markdown-it一個將普通文字轉換為markdown的庫
pm2一個可以後臺管理node服務的庫,不會佔用命令列
路由
Nuxt.js依據pages目錄結構自動生成vue-router模組的路由配置
路由導航
- a標籤:會重新整理整個頁面,不要使用
- nuxt-link元件:https://router.vuejs.org/zh/api/#router-link-props
- 程式設計式導航:https://router.vuejs.org/zh/guide/essentials/navigation.html
動態路由
以_為開頭的檔案會自動歸為動態路由
巢狀路由
建立和父元件同名的資料夾,在該資料夾中建立的.vue檔案會變成父元件的巢狀路由,在父元件中使用nuxt-child標籤用於顯示子檢視內容
自定義路由配置
- base
在nuxt.config.js中配置base來設定路由根路徑
- extendRoutes
用來擴充套件路由,使其它路由也能指向該檔案
// routes:一個陣列,路由配置表
// resolve:解析路由元件路徑
extendRoutes (routes, resolve) {
routes.push({
path: '/hello',
name: 'hello',
component: resolve(__dirname, 'pages/about.vue')
})
}
- linkActiveClass
用來設定當前啟用路由的樣式為高亮,如果要精確匹配路由還需要在nuxt-link里加上exact屬性
模板
在src資料夾下建立app.html檔案來定製化Nuxt.js預設的html模板
<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
<head {{ HEAD_ATTRS }}>
{{ HEAD }}
</head>
<body {{ BODY_ATTRS }}>
<!-- 渲染的內容最終會注入到這裡 -->
<h1>app.html</h1>
{{ APP }}
</body>
</html>
佈局
Nuxt.js允許擴充套件預設的佈局,或在layouts目錄下建立自定義的佈局,別忘了在佈局檔案中新增<nuxt />元件用於顯示頁面的主體內容
- 在src目錄下建立layouts資料夾,建立.vue檔案作為自定義佈局,其中default.vue是預設的佈局
- 在元件中使用layout屬性來指定當前元件的佈局檔案,不宣告則使用default.vue作為摸人佈局
非同步資料-asyncData
-
基本用法
- 它會將asyncData返回的資料融合元件data方法返回資料一併給元件
- 呼叫時機:服務端渲染期間和客戶端路由更新之前
-
注意事項
- 只能在頁面元件中使用
- 沒有this,因為它是在元件初始化之前被呼叫的
當你想要動態頁面內容有利於 SEO 或者是提升首屏渲染速度的時候,就在asyncData中發請求拿資料
asyncData的引數可以拿到所有的屬性和方法
身份驗證(JWT)
js-cookie:客戶端做資料持久化儲存的外掛
cookieparser:服務端解析cookie的外掛
- 初始化客戶端容器資料
// nuxtServerInit是一個特殊的action方法
// 這個action會在服務端渲染期間自動呼叫
// 作用:初始化容器資料,傳遞資料給客戶端使用
nuxtServerInit ({ commit }, { req }) {
let user = null
// 如果請求頭中有Cookie
if (req.headers.cookie) {
const parsed = cookieparser.parse(req.headers.cookie)
try {
user = JSON.parse(parsed.user)
} catch (err) {
}
}
commit('setUser', user)
}
中介軟體
中介軟體允許定義一個自定義函式執行在一個頁面或一組頁面渲染之前
每一箇中介軟體應放置在middleware目錄,檔名的名稱將成為中介軟體名稱
一箇中介軟體接受一個context作為引數
客戶端和服務端的頁面均可攔截
監聽query引數改變
預設情況下query的改變不會呼叫asyncData方法,如果要監聽這個行為可以設定頁面元件的watchQuery屬性監聽引數
外掛
在執行Vue.js應用程式之前可以執行js外掛
注在Vue元件的生命週期內,只有beforeCreate和created這兩個方法會在客戶端和服務端被呼叫,其它生命週期函式僅在客戶端被呼叫
使用方法:建立plugins資料夾,並在裡面建立需要用到的外掛,再在配置檔案中註冊
將axios作為外掛使用可以在裡面獲取到上下文物件
HTML頭部
在頁面元件中使用head() {}來定製化頁面特有的meta標籤和title屬性
head () {
return {
title: this.title,
meta: [
{
// 為meta標籤配置唯一的標識號
hid: 'description',
name: 'description',
content: 'description'
}
]
}
}
Nuxt打包部署
傳統部署方式
- 配置Host + Port(nuxt.config.js)
- 壓縮釋出包(.nuxt、static、nuxt.config.js、package.json、package-lock.json)
- 把釋出包傳到服務端
- 解壓
- 安裝依賴
- 啟動服務
現代化部署方式
相關文章
- NuxtJS 學習記錄之 @nuxtjs/auth 中介軟體服務端失效原因之 https 驗證失敗UXJS服務端HTTP
- 前端學習之Bootstrap學習前端boot
- 前端學習之HTML-1前端HTML
- 前端如何學習機器學習之TensorFlow.js前端機器學習JS
- 前端學習筆記之ES6~~~前端筆記
- 安心學習,重學前端之(js基礎篇(1))前端JS
- 前端學習前端
- 精讀《Nuxtjs》UXJS
- 2020-11-06前端學習之HTML結束前端HTML
- 前端學習之PHP基礎函式總結前端PHP函式
- 前端學習(2370):元件之間的通訊方式前端元件
- 前端學習(2371):元件之間的通訊方式前端元件
- 2017.02.05 — 前端學習前端
- 如何學習前端?前端
- 前端學習(2335):angular之內建結構指令ngif前端Angular
- 前端學習(2333):angular之元件傳值之子傳父前端Angular元件
- 前端學習(2332):angular之元件傳值之父傳子前端Angular元件
- NuxtJS快速入門UXJS
- Web前端如何學?Web前端學習方法分享Web前端
- 前端學習路線前端
- web前端學習方案Web前端
- 前端學習(四)--jQuery前端jQuery
- 學習前端相關前端
- 前端學習筆記前端筆記
- web前端學習之路Web前端
- web前端學習指南Web前端
- 12.26 前端-每日學習前端
- 前端週刊第62期:學習學習再學習前端
- 前端學習之路之自適應設計(sass語法)前端
- 前端學習之路之SPA(單頁應用)設計原理前端
- 前端學習-vue影片學習013-pinia前端Vue
- 前端學習-flutter學習-010-按鈕前端Flutter
- 前端學習-flutter學習-006-包管理前端Flutter
- 鄧洋前端學習——Flex佈局之flex-basis屬性前端Flex
- web前端教程之JavaScript學習筆記之遞迴函式Web前端JavaScript筆記遞迴函式
- 前端學習-vue影片學習015-其他API前端VueAPI
- 想要學習web前端需要學習那些課程Web前端
- 如果要學習web前端,需要學習什麼Web前端