Laravel 與 Vue.js (現代化 Web 應用)

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

在這篇文章中,將介紹如何使用 LaravelVue.js 構建一個具有良好使用體驗的 Web 應用。我們將討論如何組織 Laravel 路由與控制器,並展示如何在前端 Vue.js 中進行頁面切換和資料傳遞。這篇文章的核心在於結合 Inertia.jsVue.js,使得前後端可以無縫地合作,提升開發效率與用戶體驗。



資料夾結構介紹

在 Laravel 與 Vue.js 合作開發中,我們通常會看到以下的資料夾結構:

/app
/Http
/Controllers
ShoppingController.php
/resources
/js
/Pages
StepOneView.vue
StepTwoView.vue
StepThreeView.vue
/views
/routes
frontend.php

這個結構遵循了 LaravelVue.js 的標準分佈,使得前端和後端的邏輯能夠清晰地區分開來。在 routes/frontend.php 中,我們會定義頁面路由,並使用 Inertia 來渲染 Vue.js 頁面。


建立 Controller

Laravel 中,我們通常會創建一個控制器來處理應用邏輯。在本範例中,我們會建立一個 ShoppingController,負責渲染頁面與處理資料傳遞。

控制器範例

<?php

namespace App\Http\Controllers;

use Inertia\Inertia;
use App\Models\Shopping;
use Illuminate\Http\Request;

class ShoppingController extends Controller
{
// 頁面產生與連結的方法
public function step01()
{
// 返回第一步驟的頁面
return Inertia::render('Frontend/StepOneView', []);
}

public function step02()
{
// 返回第二步驟的頁面
return Inertia::render('Frontend/StepTwoView', []);
}

public function step03()
{
// 返回第三步驟的頁面
return Inertia::render('Frontend/StepThreeView', []);
}

public function step04(Request $request)
{
// 處理表單提交並儲存資料
$data = $request->all();
Shopping::create([
'name' => $data['name'],
'phone' => $data['phone'],
'email' => $data['email'],
'address01' => $data['address01'],
'address02' => $data['address02'],
'address03' => $data['address03'],
]);

// 返回第四步驟的頁面
return Inertia::render('Frontend/StepFourView');
}
}

在這段程式碼中,我們為每個步驟(step01、step02、step03)定義了一個方法,這些方法將使用 Inertia 返回相對應的 Vue.js 頁面。當用戶填寫完資料後,我們會將資料儲存到資料庫,並跳轉到下一個步驟。


群組化路由管理

為了讓路由更具可維護性,Laravel 提供了路由群組功能。我們可以將相關的路由放在一起,並為這些路由添加共同的前綴,這樣可以讓程式碼更加清晰。

群組化路由範例

// routes/frontend.php

Route::prefix('shopping')->group(function(){
Route::get('step-1', [ShoppingController::class, 'step01'])->name('step-1');
Route::get('step-2', [ShoppingController::class, 'step02'])->name('step-2');
Route::get('step-3', [ShoppingController::class, 'step03'])->name('step-3');
Route::post('shopping-create', [ShoppingController::class, 'step04'])->name('shopping-create');
});

在這個範例中,我們將所有與購物流程相關的路由放入 shopping 群組中,並給每個路由設置了對應的名稱(name() 方法)。這樣,我們就可以在 Vue.js 中輕鬆地引用這些路由。


Vue.js 中頁面切換

使用 Inertia.js,我們可以在 Vue.js 中進行頁面切換,而不需要刷新整個頁面。這意味著我們可以像單頁應用(SPA)一樣操作,不需要重新載入頁面或重新渲染整個頁面。

頁面切換範例

StepOneView.vue 中,我們可以這樣實現頁面切換:

<template>
<button @click="nextStep">下一步</button>
</template>

<script>
import { router } from '@inertiajs/vue3';

export default {
data() {
return {
data: {
furniture1: 0,
furniture2: 0,
furniture3: 0,
},
};
},
methods: {
nextStep() {
if (this.data.furniture1 + this.data.furniture2 + this.data.furniture3 === 0) {
alert('請選擇商品');
return;
}

// 使用 Inertia 進行頁面跳轉
router.get(route('step-2'));
sessionStorage.setItem('object', JSON.stringify(this.data));
},
},
};
</script>

在這段程式碼中,當用戶按下「下一步」按鈕時,我們會檢查表單是否填寫完整。如果滿足條件,就使用 router.get() 方法來跳轉到下一個步驟,並把資料保存在 sessionStorage 中。


StepThreeView 中資料提交

StepThreeView.vue 中,我們需要將表單資料提交到後端,並儲存到資料庫中:

<template>
<button @click="submitForm">提交</button>
</template>

<script>
import { router } from '@inertiajs/vue3';

export default {
data() {
return {
deliverData: {
name: '',
phone: '',
email: '',
addressCity: '',
addressNumber: '',
addressLocation: '',
},
};
},
methods: {
submitForm() {
if (!this.deliverData.name || !this.deliverData.phone || !this.deliverData.email || !this.deliverData.addressCity || !this.deliverData.addressNumber || !this.deliverData.addressLocation) {
alert('請全部填寫');
return;
}

// 提交資料
router.post(route('shopping-create'), {
name: this.deliverData.name,
email: this.deliverData.email,
phone: this.deliverData.phone,
address01: this.deliverData.addressCity,
address02: this.deliverData.addressNumber,
address03: this.deliverData.addressLocation,
});
},
},
};
</script>

這段程式碼會將表單資料提交到 step04 路由,該路由會將資料儲存到資料庫並跳轉到下一個步驟。


結論

在這篇文章中,介紹了如何使用 LaravelVue.js 搭配 Inertia.js 建立現代化的 Web 應用。透過 群組化路由 和清晰的控制器設計,我們能夠有效地管理頁面邏輯和資料流,並且使用 Inertia.js 提供的頁面跳轉機制來保持應用的流暢性和高效性。這樣的架構讓前後端協作更加簡便,同時也能夠利用 Vue.js 來提供豐富的使用者介面。接下來會介紹使用 Laravel 和 Vue 3 建立電影資料管理系統。


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

 

大家可以考慮多多分享文章和考慮訂閱沙龍方案或贊助等喔!不過請注意不要違反著作權等行為。當然決定權都在於您,不會干涉您的任何決定。

 

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


留言
avatar-img
留言分享你的想法!
avatar-img
阿棋的沙龍
2會員
34內容數
有軟體開發相關文章。
阿棋的沙龍的其他內容
2025/02/19
在現代的Web應用中,發送即時郵件通知是一項常見的需求。無論是訂單狀態更新、賬單付款通知,還是帳號活動警報,這些通知都能讓用戶即時了解重要信息,並提升使用者體驗。今天,將介紹如何在Laravel中實現一個簡單的郵件通知系統,並演示如何使用通知來通知使用者。
2025/02/19
在現代的Web應用中,發送即時郵件通知是一項常見的需求。無論是訂單狀態更新、賬單付款通知,還是帳號活動警報,這些通知都能讓用戶即時了解重要信息,並提升使用者體驗。今天,將介紹如何在Laravel中實現一個簡單的郵件通知系統,並演示如何使用通知來通知使用者。
2025/02/12
網站的安全性對於保護用戶資料和防止惡意攻擊至關重要。對於許多應用來說,實現Email驗證和兩步驟驗證(2FA)是增強用戶安全的一種有效方式。今天將探索如何在Laravel框架中實現這兩項功能,並結合Google Gmail的應用程式密碼,從而保障你網站的用戶帳號安全。
2025/02/12
網站的安全性對於保護用戶資料和防止惡意攻擊至關重要。對於許多應用來說,實現Email驗證和兩步驟驗證(2FA)是增強用戶安全的一種有效方式。今天將探索如何在Laravel框架中實現這兩項功能,並結合Google Gmail的應用程式密碼,從而保障你網站的用戶帳號安全。
2025/02/05
在現代網絡安全環境中,網站的安全性至關重要。為了確保你的網站免受各種攻擊,進行網站弱點掃描是不可或缺的一步。今天,將介紹一個強大且免費的網站安全掃描工具——OWASP ZAP(Zed Attack Proxy),它不僅功能強大,且易於使用,適合各種用戶,無論你是初學者還是資深的安全專家。
2025/02/05
在現代網絡安全環境中,網站的安全性至關重要。為了確保你的網站免受各種攻擊,進行網站弱點掃描是不可或缺的一步。今天,將介紹一個強大且免費的網站安全掃描工具——OWASP ZAP(Zed Attack Proxy),它不僅功能強大,且易於使用,適合各種用戶,無論你是初學者還是資深的安全專家。
看更多
你可能也想看
Thumbnail
本篇文章介紹了Laravel這個開源PHP框架,重點解析其MVC架構及相關功能,包括中介層、服務層、數據傳輸對象(DTO)與值對象(VO)。Laravel的穩定性與擴展性使其成為臺灣許多企業的首選框架,並提供升級與編碼風格的資源參考,適合所有PHP開發者瞭解和掌握。
Thumbnail
本篇文章介紹了Laravel這個開源PHP框架,重點解析其MVC架構及相關功能,包括中介層、服務層、數據傳輸對象(DTO)與值對象(VO)。Laravel的穩定性與擴展性使其成為臺灣許多企業的首選框架,並提供升級與編碼風格的資源參考,適合所有PHP開發者瞭解和掌握。
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
Web Components 是一組網頁原生 API,允許開發者創建可重複使用的自訂元素。Vue 與 Web Components 是互補的技術,Vue 支援整合和創建自訂元素。
Thumbnail
Web Components 是一組網頁原生 API,允許開發者創建可重複使用的自訂元素。Vue 與 Web Components 是互補的技術,Vue 支援整合和創建自訂元素。
Thumbnail
Vue 是一個靈活且可逐步採用的框架,適用於不同使用情境以平衡技術棧複雜度、開發者體驗和最終性能。Vue 可以作為獨立腳本文件使用,不需構建步驟,適合簡單前端邏輯。也可用來構建標準 Web 組件,嵌入到任何 HTML 頁面中。對於需要豐富互動性的應用,可構建單頁應用程式 (SPA)。
Thumbnail
Vue 是一個靈活且可逐步採用的框架,適用於不同使用情境以平衡技術棧複雜度、開發者體驗和最終性能。Vue 可以作為獨立腳本文件使用,不需構建步驟,適合簡單前端邏輯。也可用來構建標準 Web 組件,嵌入到任何 HTML 頁面中。對於需要豐富互動性的應用,可構建單頁應用程式 (SPA)。
Thumbnail
本文介紹 Laravel 中的路由設定,討論手動定義路由、群組、前綴和中介層的使用。透過這些技巧,能夠靈活組織 API 結構,提升可讀性和安全性。此外,還探討子資源路由及命名空間等進階技巧,幫助開發者精細控制路由行為。接下來會探討控制器的實作。
Thumbnail
本文介紹 Laravel 中的路由設定,討論手動定義路由、群組、前綴和中介層的使用。透過這些技巧,能夠靈活組織 API 結構,提升可讀性和安全性。此外,還探討子資源路由及命名空間等進階技巧,幫助開發者精細控制路由行為。接下來會探討控制器的實作。
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