Vue 應用開發(全攻略)

更新於 2024/12/07閱讀時間約 10 分鐘

在這篇文章中,我們將討論如何在 Vue 應用中使用路由、GitHub Pages 部署以及狀態管理工具 Pinia。這些概念在開發上通常會使用到,讓我們一步一步深入這些重要的概念!


1. 使用 Vue Router 跳轉頁面

在 Vue 應用中,使用 this.$router.push() 方法可以方便地實現頁面跳轉。這是一個簡單而有效的方法。

範例程式

// 使用 Vue Router 跳轉到 /result 頁面
this.$router.push('/result');

這樣就能夠將用戶導向 result 頁面,讓導航變得無比快速。

2. 獲取當前頁面名稱

若你想獲取當前頁面的名稱,可以使用 $route.name。這對於條件渲染或邏輯判斷非常有用喔。

範例程式

// 獲取當前頁面的名稱
const currentPageName = this.$route.name;
console.log(`當前頁面名稱是: ${currentPageName}`);

這樣可以方便地在控制臺查看當前頁面的名稱。

3. 靜態網站的 Vue 部署

當你完成了 Vue 應用的開發,接下來就是部署了。我們將使用 Vite 來部署靜態網站。

設置 Vite 配置

在你的 Vite 配置文件中(例如 vite.config.js),你需要指定 base 路徑,以確保靜態資源能夠正確載入。

import { fileURLToPath, URL } from 'node:url';
import { defineConfig } from 'vite';
import vue from '@vitejs/plugin-vue';

// Vite 配置
export default defineConfig({
base: '/vue-build/', // 設置基本路徑
plugins: [
vue(),
],
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url)),
},
},
});

這裡的 base 設置讓你在 GitHub Pages 部署時能夠正確解析靜態資源。

GitHub Actions 自動化部署


  • github切換為Github Actions
  • 選擇Static HTML的Configure按鈕
  • 替換程式碼
  • commit之後即可


code替換

vite替換code網址 https://vitejs.dev/guide/static-deploy


使用 GitHub Actions,可以輕鬆地自動部署你的靜態網站。以下是需要替換的程式,應該以官方網站的為主。

name: Deploy static content to Pages

on:
push:
branches: ['main'] # 監聽 main 分支的推送
workflow_dispatch: # 手動觸發工作流

permissions:
contents: read
pages: write
id-token: write

concurrency:
group: 'pages'
cancel-in-progress: true

jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
- name: Build project
run: npm run build
- name: Setup Pages
uses: actions/configure-pages@v4
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: './dist' # 指定構建輸出目錄
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4

這樣的配置可以幫助你在推送到 main 分支時自動部署最新的程式。

4. 使用 Pinia 進行狀態管理

Pinia 是 Vue 3 的一個輕量級狀態管理工具,非常適合用於中大型應用的狀態管理。

定義 Pinia Store

首先,我們來定義一個購物車的 store:

import { defineStore } from 'pinia';

export const useShoppingCartStore = defineStore('shopping-cart', {
state: () => ({
cartData: {
products: [
{ id: '0877', name: '紅茶', price: 300, count: 1 },
{ id: '0878', name: '綠茶', price: 400, count: 1 },
{ id: '0879', name: '花茶', price: 500, count: 1 },
],
userData: {
name: '',
phone: '',
email: '',
city: '',
postalCode: '',
address: '',
},
},
}),
getters: {
totalPrice() {
// 計算總價格
return this.cartData.products.reduce((acc, item) => acc + item.price * item.count, 0);
},
},
actions: {
addCart(item) {
this.cartData.products.push(item); // 將商品加入購物車
},
reset() {
this.$reset(); // 重置購物車
},
},
});

在這個範例中,我們創建了一個購物車的 store,包含了商品資料和用戶資料,並且實現了計算總價和添加商品的功能。

在組件中使用 Pinia

現在讓我們看看如何在組件中使用這個 store:

import { RouterLink } from 'vue-router';
import { useShoppingCartStore } from '@/stores/shopping-cart.js';

export default {
setup() {
const shoppingCartStore = useShoppingCartStore(); // 使用購物車 store
return { shoppingCartStore };
},
methods: {
setData() {
this.$router.push('/step-2'); // 跳轉到步驟二
},
},
};

在這裡,我們通過 useShoppingCartStore 方法來訪問購物車的狀態,並能夠使用其方法和屬性來進行操作。

結論

在這篇文章中,我們涵蓋了 Vue 應用中的幾個重要主題,包括路由管理、靜態網站部署和狀態管理。這些知識對於開發和部署現代化的 Web 應用至關重要。希望這篇文章能對你的開發過程有所幫助!


對於這類的撰寫方式習慣嗎?歡迎多多進行良性的知識交流喔!目前是在學習階段,大家有不同看法的話歡迎進行良性的知識交流!

 

提醒,文章僅供正當的知識參考,文章不負任何責任。

avatar-img
0會員
18內容數
有軟體開發相關文章。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
阿棋的沙龍 的其他內容
在這篇文章中,我們將深入探討如何在 Vue 中使用組件,特別是如何透過事件傳遞數據、動態載入圖片,以及使用本地儲存功能。這些可能稍微複雜一點,讓我們一步一步來。
在這篇文章中,我們將介紹如何快速建置一個 Vue 專案,並涵蓋一些基本的檔案結構和組件使用的方式。希望能幫助你順利開始 Vue 的開發之旅!
在前端開發的世界中,有許多工具和技術能幫助我們有效地建立、維護和優化應用。本文將探討如何下載Node.js、使用CDN獲取套件、使用npm下載和管理套件、以及打包與tree-shaking的概念,這部分是前端很常會使用到的喔。 下載Node.js Node.js是前端開發中不可或缺的工具,它
在前端開發中,有許多專有名詞需要掌握,特別是關於渲染方式和應用架構。本文將介紹SSR、CSR、MPA 及 SPA 。
Vue.js 是一個靈活且高效的 JavaScript 框架,專注於構建用戶界面。它使用虛擬 DOM 技術,能夠有效地更新界面。
前言 Vue.js 是一個流行的 JavaScript 框架,專為構建單頁應用程序(SPA)而設計。它讓我們能夠更簡潔、更直觀地開發前端應用,和原生的 JavaScript 相比,Vue 的語法和結構有很多不同的地方,大家可能要花一些時間適應vue的寫法。這篇文章將帶您一步步了解 Vue.js 的
在這篇文章中,我們將深入探討如何在 Vue 中使用組件,特別是如何透過事件傳遞數據、動態載入圖片,以及使用本地儲存功能。這些可能稍微複雜一點,讓我們一步一步來。
在這篇文章中,我們將介紹如何快速建置一個 Vue 專案,並涵蓋一些基本的檔案結構和組件使用的方式。希望能幫助你順利開始 Vue 的開發之旅!
在前端開發的世界中,有許多工具和技術能幫助我們有效地建立、維護和優化應用。本文將探討如何下載Node.js、使用CDN獲取套件、使用npm下載和管理套件、以及打包與tree-shaking的概念,這部分是前端很常會使用到的喔。 下載Node.js Node.js是前端開發中不可或缺的工具,它
在前端開發中,有許多專有名詞需要掌握,特別是關於渲染方式和應用架構。本文將介紹SSR、CSR、MPA 及 SPA 。
Vue.js 是一個靈活且高效的 JavaScript 框架,專注於構建用戶界面。它使用虛擬 DOM 技術,能夠有效地更新界面。
前言 Vue.js 是一個流行的 JavaScript 框架,專為構建單頁應用程序(SPA)而設計。它讓我們能夠更簡潔、更直觀地開發前端應用,和原生的 JavaScript 相比,Vue 的語法和結構有很多不同的地方,大家可能要花一些時間適應vue的寫法。這篇文章將帶您一步步了解 Vue.js 的
你可能也想看
Google News 追蹤
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
如何在 Vite 專案中安裝和設置 TypeScript 及路徑別名的步驟,包括安裝必要的依賴、配置 vite.config.js、tsconfig.json 的設置,及如何創建類型聲明文件來正確識別 .vue 文件。
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
切換頁面卡卡有很多種原因,這裡舉的例子只針對元件太大的情境。 除了想辦法拆分外,還有一個方法就是利用 Vue 的 Async Component。
Thumbnail
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
進入Lua的第一步! 安裝和執行
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找
Thumbnail
本文探討了複利效應的重要性,並藉由巴菲特的投資理念,說明如何選擇穩定產生正報酬的資產及長期持有的核心理念。透過定期定額的投資方式,不僅能減少情緒影響,還能持續參與全球股市的發展。此外,文中介紹了使用國泰 Cube App 的便利性及低手續費,幫助投資者簡化投資流程,達成長期穩定增長的財務目標。
Thumbnail
如何在 Vite 專案中安裝和設置 TypeScript 及路徑別名的步驟,包括安裝必要的依賴、配置 vite.config.js、tsconfig.json 的設置,及如何創建類型聲明文件來正確識別 .vue 文件。
Thumbnail
各位使用 Vue.js 開發的小夥伴們,你們都怎麼實作父子層組件資料的雙向綁定呢?如果你還在寫 prop + emit 的話,不妨進來看看吧。
Thumbnail
切換頁面卡卡有很多種原因,這裡舉的例子只針對元件太大的情境。 除了想辦法拆分外,還有一個方法就是利用 Vue 的 Async Component。
Thumbnail
一開始你先把你的專案push上去後,修改vite.config.ts ,要在裡面新增  base: "/Cart/" (/放自己的專案名稱/) build: {outDir: "docs"}, 接下來你要去你的github setting 裡面 -> Page ->選Deploy fro
Thumbnail
你好,在下最近在學習開發web,學了html css js,也得出一些心得,由於網路上已有許多教學,所以我會著重在如何開發出to do List,以及解釋我寫的程式碼。相關的教學我會直接貼網址。如果我有什麼地方出錯,或者是可以寫得更好,歡迎在下方留言,討論。 首先先介紹我的開發環境: 我用了vs
Thumbnail
# 簡介 身為一位專注於 Vue.js 的前端開發者,這是我第一次嘗試構建 Flutter 網頁應用。讓我們開始吧! ## 第一次嘗試 ### 第一步:創建一個 Flutter 應用 首先,通過運行以下命令來創建一個新的 Flutter 項目: ```sh flutter
Thumbnail
進入Lua的第一步! 安裝和執行
Thumbnail
平常我們在 html 上常看到的例如 v-for、v-model 等等... 也是VUE已經幫我們定義好的指令,而這次我們可以依這自己的需求來建立。 此功能屬於較進階的功能,因此實戰中會比較少見,市面上還是有不少完善的套件能達到同樣效果,建議可以先往這方面察找