D17 - 探索 Nuxt 前端結構:深入理解 app.vue 與 layouts/default.vue

更新於 發佈於 閱讀時間約 10 分鐘

哈囉,大家好!經過前面的努力,我們已經成功建立了 Nuxt 的開發環境,並初步了解了它的使用方式。在前一篇文章中,我們建立了第一個頁面,並準備好了後續開發所需的套件。現在,是時候深入了解 Nuxt 的前端結構,並開始規劃我們的應用介面了。

今天,我想和大家分享 Nuxt 前端結構與介面規劃,特別是 app.vue 和 layouts/default.vue 之間的關係,以及它們在應用程式中的作用。


一、Nuxt 前端結構概覽

在開始規劃介面之前,理解 Nuxt 的前端結構是非常重要的。Nuxt 以約定大於配置的理念,提供了清晰的目錄結構,讓我們可以更專注於開發本身。

1. 目錄結構回顧

  • pages/:存放頁面組件,Nuxt 會自動根據這裡的檔案生成路由。
  • layouts/:用於定義頁面的佈局,例如導航列、頁腳等。
  • components/:存放可重用的 Vue 元件。
  • plugins/:用於註冊需要在 Vue 實例化之前執行的插件。
  • nuxt.config.js:Nuxt 的主要配置檔案。

2. 關鍵檔案介紹

在 Nuxt 中,app.vue 和 layouts/default.vue 是控制應用程式結構的兩個關鍵檔案。理解它們的作用,能夠讓我們更有效地規劃介面。


二、深入理解 app.vue 與 layouts/default.vue

1. app.vue 的作用

app.vue 是 Nuxt 應用的 全域根組件,它位於整個應用的最外層。所有的頁面和佈局都會被包裹在 app.vue 中。

  • 全域設定:如果你需要對應用的所有部分統一添加一些全域設定(如 、 的全域樣式或腳本),app.vue 是放置這些內容的地方。
  • 結構控制:app.vue 控制整個應用的頂層結構,可以在這裡引入全域性的組件或設置。
    範例:簡單的 app.vue 文件
<template>
<div id="app">
<NuxtLayout />
</div>
</template>

<script setup>
// 這裡可以加入全域性的組件或邏輯
</script>

<style>
/* 全域樣式 */
</style>

在這個範例中, 用來渲染對應的佈局,例如 layouts/default.vue。這意味著每個頁面都會被指定的佈局包裹。

2. layouts/default.vue 的作用

layouts/default.vue 是應用的 預設佈局。如果某個頁面沒有指定特殊的佈局,Nuxt 會自動使用 default 佈局。layouts/default.vue 主要用來定義應用中大多數頁面的佈局,例如導航列、側邊欄、頁腳等。

  • 頁面佈局:在這裡可以統一設計頁面的結構,包含重複出現的部分。
  • 內容插槽:使用 元件來渲染頁面的內容。
    範例:簡單的 layouts/default.vue
<template>
<div>
<Header /> <!-- 自訂的導航列元件 -->
<main>
<NuxtPage />
</main>
<Footer /> <!-- 自訂的頁腳元件 -->
</div>
</template>

<script setup>
// 可以在這裡引入共用的元件
import Header from '~/components/Header.vue'
import Footer from '~/components/Footer.vue'
</script>

<style scoped>
/* 佈局專屬的樣式 */
</style>

在這個範例中,我們在佈局中引入了 Header 和 Footer 元件,並使用 來渲染頁面的具體內容。

3. 主要區別

  • app.vue 是全域的根組件:它包裹了整個應用程式,所有佈局、頁面、插件等都會被包含在 app.vue 中。它相當於 Nuxt 應用的基礎架構。
  • layouts/default.vue 是頁面的佈局:控制頁面在此佈局下的顯示方式。如果你有多個佈局,可以根據頁面需求來切換不同的佈局。

4. 使用情境

  • 全域設定或全域元件:使用 app.vue,例如全域的樣式、插件或狀態管理工具的初始化。
  • 頁面佈局和結構:使用 layouts/default.vue,例如設置導航列、側邊欄、頁腳等。

三、規劃應用程式的介面結構

了解了 app.vue 和 layouts/default.vue 的作用後,我們可以開始規劃我們的應用介面。

1. 設計全域元件

首先,我們可以在 components/ 目錄下建立一些全域性的元件,例如:

  • Header.vue:導航列,包含網站的 LOGO 和主要導航連結。
  • Footer.vue:頁腳,包含版權資訊和相關連結。
  • Sidebar.vue(可選):側邊欄,提供額外的導航或功能選項。

範例:建立 Header.vue

<template>
<header class="bg-blue-600 text-white p-4">
<nav class="container mx-auto flex justify-between">
<h1 class="text-xl font-bold">財務管理系統</h1>
<ul class="flex space-x-4">
<li><NuxtLink to="/">首頁</NuxtLink></li>
<li><NuxtLink to="/transactions">交易紀錄</NuxtLink></li>
<li><NuxtLink to="/accounts">銀行帳戶</NuxtLink></li>
</ul>
</nav>
</header>
</template>

<script setup>
// 這裡暫時不需要特別的邏輯
</script>

<style scoped>
/* Header 專屬的樣式 */
</style>

2. 更新 layouts/default.vue

將我們的全域元件整合到預設佈局中。

<template>
<div>
<Header />
<main class="container mx-auto py-4">
<NuxtPage />
</main>
<Footer />
</div>
</template>

<script setup>
import Header from '~/components/Header.vue'
import Footer from '~/components/Footer.vue'
</script>

<style scoped>
/* 佈局專屬的樣式 */
</style>

3. 規劃頁面結構

在 pages/ 目錄下,我們可以建立以下頁面:

  • index.vue:首頁,簡單介紹應用程式或展示摘要資訊。
  • transactions.vue:交易紀錄頁面,列出所有交易。
  • accounts.vue:銀行帳戶頁面,管理銀行帳戶資訊。

4. 使用組件與佈局

在各個頁面中,我們可以使用組件來組合內容,確保程式碼的重用性和維護性。

範例:更新 pages/transactions.vue

<template>
<div>
<h2 class="text-2xl font-bold mb-4">交易紀錄</h2>
<TransactionList />
</div>
</template>

<script setup>
import TransactionList from '~/components/TransactionList.vue'
</script>

<style scoped>
/* 頁面專屬的樣式 */
</style>

四、個人建議

  • 善用佈局:利用 layouts 來統一管理頁面的結構,減少重複的程式碼。
  • 拆分組件:將可重用的部分拆分成組件,放在 components/ 目錄下。
  • 清晰的目錄結構:按照 Nuxt 的約定,將檔案放在正確的目錄,讓專案結構清晰明瞭。
  • 全域與局部的區分:將全域性的設定和元件放在 app.vue 或全域的插件中,局部的內容則放在對應的佈局或頁面中。

小結

透過對 app.vue 和 layouts/default.vue 的深入理解,我們可以更有效地規劃 Nuxt 應用的前端結構。這不僅有助於提升開發效率,還能讓程式碼更加易於維護。

記住,良好的結構設計是成功專案的基石。透過合理地利用框架提供的功能,我們可以打造出高品質、可維護的應用程式。

Next

今天,我們深入了解了 Nuxt 的前端結構,並規劃了應用程式的介面。接下來,我們將:

  • 整合後端 API:實現與 Laravel 後端的資料互動,讓應用程式具有實際功能。
  • 處理身份驗證:實作登入、註冊功能,保護使用者資料。
  • 優化使用者介面:使用 Tailwind CSS 進一步美化介面,提升使用者體驗。

讓我們繼續保持熱情,迎接接下來的挑戰吧!相信透過不斷的學習和實踐,我們都能成為更好的開發者。

如果你喜歡這篇文章,歡迎分享給更多人。我們下次見!


留言
avatar-img
留言分享你的想法!
avatar-img
詹姆士的軟體易開罐
27會員
88內容數
這是一系列以軟體開發為主題的輕鬆分享,內容涵蓋了技術選擇、開發經驗、實戰應用等多方面的議題。無論是如何在眾多框架中做出選擇,還是如何應對技術轉移的挑戰,這裡有幽默、有趣的對話風格,將複雜的技術問題轉化為易懂的故事。
2024/12/22
這是我第一次參加 iThome 鐵人賽,原本並沒有打算參加,但在整理專案時,我忽然想把屬於自己的內容公開分享,而不僅僅藏在雲端裡。於是,我獨自規劃、撰寫並完成了一個完整的開發系列文章。在這段過程中,我體會到獨自開發的挑戰與成就,並希望能將這些經驗分享給每一位正在努力前行的你。
Thumbnail
2024/12/22
這是我第一次參加 iThome 鐵人賽,原本並沒有打算參加,但在整理專案時,我忽然想把屬於自己的內容公開分享,而不僅僅藏在雲端裡。於是,我獨自規劃、撰寫並完成了一個完整的開發系列文章。在這段過程中,我體會到獨自開發的挑戰與成就,並希望能將這些經驗分享給每一位正在努力前行的你。
Thumbnail
2024/12/15
這篇文章介紹建立分類列表頁面以及新增和編輯功能。文中詳細說明瞭頁面結構、資料取得、錯誤處理等重要步驟,並強調了共用元件和資料驗證的一致性。通過這次開發,讀者將獲得關於如何在Nuxt中操作動態路由的深入理解,同時提高使用者體驗。希望本篇能幫助讀者順利完成相關功能建置。
Thumbnail
2024/12/15
這篇文章介紹建立分類列表頁面以及新增和編輯功能。文中詳細說明瞭頁面結構、資料取得、錯誤處理等重要步驟,並強調了共用元件和資料驗證的一致性。通過這次開發,讀者將獲得關於如何在Nuxt中操作動態路由的深入理解,同時提高使用者體驗。希望本篇能幫助讀者順利完成相關功能建置。
Thumbnail
2024/12/14
哈囉,大家好!在前面的文章中,我們已經規劃了前端介面,並盤點了所需的頁面與功能。 現在,是時候開始動手實作了。今天,我們將專注於 銀行帳戶列表頁面(Bank Accounts)以及 新增/編輯銀行帳戶頁面(Add/Edit Bank Account)的開發。 透過這次的實作,我們將學習如何在 N
Thumbnail
2024/12/14
哈囉,大家好!在前面的文章中,我們已經規劃了前端介面,並盤點了所需的頁面與功能。 現在,是時候開始動手實作了。今天,我們將專注於 銀行帳戶列表頁面(Bank Accounts)以及 新增/編輯銀行帳戶頁面(Add/Edit Bank Account)的開發。 透過這次的實作,我們將學習如何在 N
Thumbnail
看更多
你可能也想看
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
2025 vocus 推出最受矚目的活動之一——《開箱你的美好生活》,我們跟著創作者一起「開箱」各種故事、景點、餐廳、超值好物⋯⋯甚至那些讓人會心一笑的生活小廢物;這次活動不僅送出了許多獎勵,也反映了「內容有價」——創作不只是分享、紀錄,也能用各種不同形式變現、帶來實際收入。
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
嗨!歡迎來到 vocus vocus 方格子是台灣最大的內容創作與知識變現平台,並且計畫持續拓展東南亞等等國際市場。我們致力於打造讓創作者能夠自由發表、累積影響力並獲得實質收益的創作生態圈!「創作至上」是我們的核心價值,我們致力於透過平台功能與服務,賦予創作者更多的可能。 vocus 平台匯聚了
Thumbnail
每個應用程式的骨架是路由。此頁將介紹網頁路由的基本概念,以及如何在 Next.js 中處理路由。 # 術語 你會在文件中看到這些術語,以下是快速參考: # 元件樹的術語 tree:用來視覺化階層結構的一種約定。例如包含父元件和子元件的元件樹、資料夾結構等。 subtree:tree 的
Thumbnail
每個應用程式的骨架是路由。此頁將介紹網頁路由的基本概念,以及如何在 Next.js 中處理路由。 # 術語 你會在文件中看到這些術語,以下是快速參考: # 元件樹的術語 tree:用來視覺化階層結構的一種約定。例如包含父元件和子元件的元件樹、資料夾結構等。 subtree:tree 的
Thumbnail
Vue.js 是一個靈活且高效的 JavaScript 框架,專注於構建用戶界面。它使用虛擬 DOM 技術,能夠有效地更新界面。
Thumbnail
Vue.js 是一個靈活且高效的 JavaScript 框架,專注於構建用戶界面。它使用虛擬 DOM 技術,能夠有效地更新界面。
Thumbnail
前言 Vue.js 是一個流行的 JavaScript 框架,專為構建單頁應用程序(SPA)而設計。它讓我們能夠更簡潔、更直觀地開發前端應用,和原生的 JavaScript 相比,Vue 的語法和結構有很多不同的地方,大家可能要花一些時間適應vue的寫法。這篇文章將帶您一步步了解 Vue.js 的
Thumbnail
前言 Vue.js 是一個流行的 JavaScript 框架,專為構建單頁應用程序(SPA)而設計。它讓我們能夠更簡潔、更直觀地開發前端應用,和原生的 JavaScript 相比,Vue 的語法和結構有很多不同的地方,大家可能要花一些時間適應vue的寫法。這篇文章將帶您一步步了解 Vue.js 的
Thumbnail
哈囉,大家好!本文探討了 Nuxt 前端介面設計與規劃,為個人財務管理系統建立頁面清單及功能需求。從首頁、交易紀錄到報表頁面,每個頁面皆包含具體操作和資料顯示功能。透過重新盤點與規劃,提升開發效率、使用者體驗及協作效果,為後續開發奠定基礎。
Thumbnail
哈囉,大家好!本文探討了 Nuxt 前端介面設計與規劃,為個人財務管理系統建立頁面清單及功能需求。從首頁、交易紀錄到報表頁面,每個頁面皆包含具體操作和資料顯示功能。透過重新盤點與規劃,提升開發效率、使用者體驗及協作效果,為後續開發奠定基礎。
Thumbnail
哈囉,大家好!本次介紹如何在 Nuxt 應用中使用 Axios 整合 Laravel 後端 API,實現動態資料渲染並搭建身份驗證機制。透過 Axios 配置與 Vuex 狀態管理,建立交易紀錄頁面並添加錯誤處理,提供更友善的使用者體驗。
Thumbnail
哈囉,大家好!本次介紹如何在 Nuxt 應用中使用 Axios 整合 Laravel 後端 API,實現動態資料渲染並搭建身份驗證機制。透過 Axios 配置與 Vuex 狀態管理,建立交易紀錄頁面並添加錯誤處理,提供更友善的使用者體驗。
Thumbnail
哈囉,大家好!我們將探討 Nuxt 開發環境的建立與應用介面規劃,通過使用 Nuxt 的約定式結構和全域佈局,我們更高效地管理前端界面,並設計了首頁、交易紀錄、銀行帳戶等頁面。未來計畫包括整合後端 API、身份驗證及介面優化。
Thumbnail
哈囉,大家好!我們將探討 Nuxt 開發環境的建立與應用介面規劃,通過使用 Nuxt 的約定式結構和全域佈局,我們更高效地管理前端界面,並設計了首頁、交易紀錄、銀行帳戶等頁面。未來計畫包括整合後端 API、身份驗證及介面優化。
Thumbnail
完成後端基本功能並通過驗收後,我們開始使用 Nuxt 架設個人財務管理系統的前端。Nuxt 基於 Vue,學習曲線平緩且配置簡單,適合不同程度的開發者。透過 Docker,我們快速建立了 Nuxt 開發環境,並搭建首頁和交易紀錄頁面,整合 Tailwind CSS 提供美觀的 UI。
Thumbnail
完成後端基本功能並通過驗收後,我們開始使用 Nuxt 架設個人財務管理系統的前端。Nuxt 基於 Vue,學習曲線平緩且配置簡單,適合不同程度的開發者。透過 Docker,我們快速建立了 Nuxt 開發環境,並搭建首頁和交易紀錄頁面,整合 Tailwind CSS 提供美觀的 UI。
Thumbnail
Nuxt 是什麼? 總之先學再說! 初見Nuxt,需要的環境?怎麼安裝? 快來看看,從今天開始學 Nuxt !
Thumbnail
Nuxt 是什麼? 總之先學再說! 初見Nuxt,需要的環境?怎麼安裝? 快來看看,從今天開始學 Nuxt !
Thumbnail
這篇文章將介紹如何創建和管理 Vue 應用程式的基本概念,包括根組件的概念、如何掛載應用程式及應用程式的配置選項。將探討多個應用實例的使用情境,並解釋如何在同一頁面上共存不同的 Vue 應用程式。透過範例和深入的說明,讀者將能夠理解 Vue 應用程式的組織結構和應用範圍內的資產管理。
Thumbnail
這篇文章將介紹如何創建和管理 Vue 應用程式的基本概念,包括根組件的概念、如何掛載應用程式及應用程式的配置選項。將探討多個應用實例的使用情境,並解釋如何在同一頁面上共存不同的 Vue 應用程式。透過範例和深入的說明,讀者將能夠理解 Vue 應用程式的組織結構和應用範圍內的資產管理。
Thumbnail
隨著AI工具的快速發展,學習新的程式語言變得更為簡便。這篇文章帶你瞭解如何使用Vue.js來建立單頁應用(SPA),並提供環境建置的詳細步驟,包括Node.js的安裝、使用NPM管理套件以及如何透過CDN簡化Vue的應用設置。
Thumbnail
隨著AI工具的快速發展,學習新的程式語言變得更為簡便。這篇文章帶你瞭解如何使用Vue.js來建立單頁應用(SPA),並提供環境建置的詳細步驟,包括Node.js的安裝、使用NPM管理套件以及如何透過CDN簡化Vue的應用設置。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News