nuxt generate
來產生靜態版本的網站,他會被放在 dist
的資料夾中,他會替每個路徑都產生一個 HTML 檔案,這也讓他的 SEO 與在離線環境中的表現更好。Nuxt 會自動地根據你在 page 資料夾中的檔案結構來生成對應的路徑。
_
(pages/users/_id.vue
)作為前綴;如果想取得此路徑的參數,可以用 this.$route.params.id
來取得。除了在 mounted()
中將資料取回之外,在 Nuxt 中,還可以用 fetch 與 asyncData 兩種方式從 API 取回資料。
fetch
:這個 hook 可以在任何的元件中使用,他也提供了一些取得 loading 狀態、錯誤訊息的方式。asyncData
:這個 hook 只能在 page 的元件中使用,與 fetch 不同的是,用這個 hook 取資料的時候不會出現 loading 的狀態;取而代之的是,在資料取回來之前,route 都會被鎖著。Nuxt 提供了三種讓你設定 meta-data 的方式:
export default {
head: {
title: 'my website title',
meta: [
{ charset: 'utf-8' },
{ name: 'viewport', content: 'width=device-width, initial-scale=1' },
{
hid: 'description',
name: 'description',
content: 'my website description'
}
],
script: [
{
src: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js'
}
],
link: [
{
rel: 'icon',
type: 'image/x-icon',
href: '/favicon.ico'
},
{
rel: 'stylesheet',
href: 'https://fonts.googleapis.com/css?family=Roboto&display=swap'
}
]
}
}
<script>
export default {
head: {
title: 'Home page',
meta: [
{
hid: 'description',
name: 'description',
content: 'Home page description'
}
],
}
}
</script>
<template>
<h1>{{ title }}</h1>
</template>
<script>
export default {
data() {
return {
title: 'Home page'
}
},
head() {
return {
title: this.title,
meta: [
{
hid: 'description',
name: 'description',
content: 'Home page description'
}
],
script: [
{
src: 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js'
}
],
link: [
{
rel: 'stylesheet',
href: 'https://fonts.googleapis.com/css?family=Roboto&display=swap'
}
]
}
}
}
</script>
Nuxt 所預設的部分已經涵蓋了大多數我們會遇到的情形,如果需要將其蓋過的話可以在 nuxt.config.js
上進行設定(設定的項目繁多,不在此一一列出,可參考標題的官方文件連結)
在路徑切換的時候,可以使用這個來顯示載入的效果。
nuxt.config.js
進行樣式的設定與啟用與否this.$nuxt.$loading.start()
、結束:this.$nuxt.$loading.finish()
export default {
mounted() {
this.$nextTick(() => {
this.$nuxt.$loading.start()
setTimeout(() => this.$nuxt.$loading.finish(), 500)
})
}
nuxt.config.js
中進行設定:
export default {
loading: '~/components/LoadingBar.vue'
}
這些 Nuxt 所提供的元件是全域通用的,所以不用特地 import 也能使用(因數量繁多,可移至官方文件詳讀)
在 nuxt.config.js 將 copmonents 設定為 true 後,在引入 components 的時候就不用再 scripts 標籤內的 components 進行宣告了。
可以透過這個元件來建立路徑切換時的動態效果。