Laravel8 Vuejs怎麼實作單一頁面應用程式?以下這篇文章介紹Laravel 8 配合 Vuejs 實作單一頁面應用程式(SPA)的方法,希望對大家有幫助!
我們都知道,Laravel 是一個很讚的框架!它允許全端工程師們一站式建立前後端網站。因此,我們可以快速建置、交付高品質且安全的 web 專案。但它的強大不止於此。 Laravel 還有很多事情可供探索與發現。舉個栗子,我們已經編寫了一系列 Vue JS 的元件,這些元件可嵌入到 Laravel 的頁面中,動態的給用戶提供 UI 互動。很有意思吧?但接下來我們需要探究的是,是否可以在 Laravel 專案中建立單一頁面應用程式(SPA)?當然可以,有何不可!
在一切開始之前,我們首先要知道為何我們的專案需要 SPA?不可否認,SPA 給予了使用者更好的體驗。它令頁面載入更快,無需重載,即使用戶沒有網路也能訪問網站!這些例子不勝枚舉。當然,這也會帶來一些缺點,在用前仍需三思。無論是建立 SPA 或 MPA(多頁面應用程式),都應確保其滿足你的需求。不過 Laravel 預設讓我們建置一個 MAP 項目,不是嘛?所以我認為是時候讓我們探索下如何在 Laravel 專案中建立 SPA 了。正式啟程!
內容概論
- 我們的目標
- Laravel 及Vue JS 的安裝
- Vue Router 以及檔案結構
- SPA 實作
1 我們的目標
在本文結束時我們需要建構出來一個什麼?很簡單,我們將擁有一個內含兩個頁面的 SPA。如果我們點擊其他頁面,它將不會重載。下面看看項目最終效果。
2 Laravel 及 Vue JS 的安裝
我們將以全新的 Laravel 為起點。通常我們可以透過以下指令建立一個新專案:
composer create-project laravel/laravel --prefer-dist laravel-vue-spa
建立完畢,已經擁有新專案了。隨後需要在其中安裝 Vue JS。
composer require laravel/ui
最後要做的是,把 Vue JS 整合進 Laravel 專案。感謝上蒼,我們可以用以下指令幫助我們整合。非常之簡單。
php artisan ui vue
#不要忘了在發生變化之時編譯 Vue。
npm install && npm run dev
3 Vue Router 以及檔案結構
由於在 SPA 中,使用者可以透過路由導航到他們想要抵達的頁面。所以需要在其中安裝一個附加庫,Vue Router。
npm install vue-router
實現 SPA 前最重要的步驟就是檔案結構。在 resources/js 目錄下建立新的資料夾及文件,程式碼結構如下圖所示。
在resources/js 目錄下,需要建立一個名為layouts 的新目錄,以及pages 目錄。 layouts 目錄所包含的內容如你所想,用於展示 pages 目錄下頁面的佈局檔案。疑惑麼?這在隨後實現 SPA 的過程中會讓其結構更為清晰。
不要忘記創建 router.js 文件,用於儲存我們所需的所有路由。
4 SPA 實作
是時候實作 SPA 了!首先,修改下router.js 檔案(在resources/js/router.js)
import Vue from 'vue'; import VueRouter from 'vue-router'; import Home from './pages/Home.vue'; import About from './pages/About.vue'; Vue.use(VueRouter); const router = new VueRouter({ mode: 'history', linkExactActiveClass: 'active', routes: [ { path: '/', name: 'home', component: Home }, { path: '/about', name: 'about', component: About }, ] }); export default router;
在第四行和第五航,我們需要在這裡配置兩個頁面,主頁和關於頁。我知道,目前還沒有這兩個頁面。隨後我們將會創建它們。在第 9-24 行,我們將註冊所需的所有路由資訊。因此每個路由物件都有 path,name 以及 component 屬性用於渲染/展示。
已經把路由準備完畢了,現在要做什麼呢?我們將在佈局文件中展示這些頁面。記得已經在 layouts 目錄中的 App.vue 麼?來創建它吧。
<template> <div> <nav> <router-link>Laravel-Vue SPA</router-link> > <button> <span></span> </button> <div> <ul> <li> <router-link> Home </router-link> </li> <li> <router-link> About </router-link> </li> </ul> </div> </nav> <div> <router-view></router-view> </div> </div> </template> <script> export default { watch: { $route() { $("#navbarCollapse").collapse("hide"); }, }, }; </script> ———————————————— 原文作者:wj2015 转自链接:https://learnku.com/vuejs/t/54399 版权声明:著作权归作者所有。商业转载请联系作者获得授权,非商业转载请保留以上作者信息和原文链接。
注意 17-23 行,這裡使用了 \ 標籤。這個路由連結與 \ 標籤很像,用於在多個頁面中導航跳轉。所以問題來了,頁面會在哪裡渲染呢?看 40行的 \ 標籤,所以頁面將會在 \ 標籤處被渲染。
好了,還有首頁和關於頁面沒有創建。開啟 pages 目錄下的 Home.vue 頁面。
<template> <div> <div> <div> <div> <div>About</div> <div>About Page</div> </div> </div> </div> </div> </template> <script> export default { } </script>
直到這一步,我們才設定 SPA 頁面間跳轉的路由以及展示頁面的佈局。最後我們要做的是,修改 Vue JS 的入口文件。
開啟 resource/js/app.js 然後修改。
/** * 首先,我们将重载项目中所有包含 Vue 或其他库的 JavaScript 依赖 * 使用 Vue 和 Laravel 构建健壮、强大的 web 应用,这是个很好的开始。 */ require('./bootstrap'); window.Vue = require('vue').default; import router from './router'; import App from './layouts/App.vue'; /** * 如下代码块可用于自动注册 Vue 组件。这将递归的扫描 Vue 组件目录 * 并按照其 "文件名" 自动注册。 * * 比如 . ./components/ExampleComponent.vue -> <example-component></example-component> */ // const files = require.context('./', true, /\.vue$/i) // files.keys().map(key => Vue.component(key.split('/').pop().split('.')[0], files(key).default)) Vue.component('example-component', require('./components/ExampleComponent.vue').default); /** * 随后,我们将创建一个新的 Vue 应用实例并将其挂载到页面。 * 然后,你可以附加组件到应用中或自定义 JavaScript 脚手架以满足特殊需求。 */ const app = new Vue({ router, el: '#app', render: h => h(App) });
在第 11 行和 12 行,引入了佈局文件和路由文件,在 34 行,告訴 Vue 使用路由並在 36 行指定渲染到指定佈局。
万事俱备,是时候告诉 Laravel 通过 Vuejs 实现 SPA 了。打开 routes/web.php 并在此创建其他入口。
<?php use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- | Web 路由 |-------------------------------------------------------------------------- | | 这里是注册应用 web 路由的地方。这些路由将会被 RouteServiceProvider 加载 | 也就是那些包含了 "web" 中间件的路由组会加载这些路由。 | 现在继续创建一些有意思的东西! | */ Route::get('/{any}', function () { return view('layouts.vue'); })->where('any', '.*');
在如上代码中,我们告诉 Laravel 用户所有访问都将返回 resources/views/layouts/vue.blade.php 文件。很明显,我们还没有这个文件,一起创建下。
nbsp;html> getLocale()) }}"> <meta> <meta> <title>Laravel</title> <link> <div></div> <script></script>
好了,这里有两个重点。第一个重点,在 16 行,创建了一个 id 为 “app” 的
标签。为何这很重要呢?因为 Vue 只能渲染到标致 id 为 “app” 的 div(或其他标签)上。如果你还记得 resources/js/app.js 的 35 行,我们告诉 Vue ,渲染到 id 为 “app” 的标签上。第二个重点是在 18 行,我们引入了编译后的 Vue JS 文件。
就先这样了。在你去测试前,请确保编译了 Vue JS 脚本:
npm run dev
然后运行服务并在浏览器中打开。
这!我们成功在 Laravel 中构建了 SPA!如果你从一个页面导航至另一个页面,将不会引发页面重载。
在本文完结前,我再说一点点,我们可以把 MPA 和 SPA 构建到一起。比如 SPA 页面只用于关于页。你需要为 SPA 添加一个端点 /about/{any} ,然后其他端点依旧是 MPA。或者哪怕项目中有多个 SPA 。通过 Laravel,也可以轻易的把其他 SPA 或者 MPA 或把他们一起构建到一个项目中!这不是就很赞吗!
是时候借宿了。在最后,我想说 Laravel 是一个非常棒的框架。你探索的越多,越能体验到它的强大。感谢您的阅读,我们下次见。
以上是Laravel8+Vuejs怎麼實現單一頁面應用程式(SPA)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Vue.js受歡迎的原因包括簡單易學、靈活性高和高效性能。 1)其漸進式框架設計適合初學者逐步學習。 2)組件化開發提高了代碼可維護性和團隊協作效率。 3)響應式系統和虛擬DOM提升了渲染性能。

Vue.js更易用且學習曲線較平緩,適合初學者;React學習曲線較陡峭,但靈活性強,適合有經驗的開發者。 1.Vue.js通過簡單的數據綁定和漸進式設計易於上手。 2.React需要理解虛擬DOM和JSX,但提供更高的靈活性和性能優勢。

Vue.js適合快速開發和小型項目,而React更適合大型和復雜的項目。 1.Vue.js簡單易學,適用於快速開發和小型項目。 2.React功能強大,適合大型和復雜的項目。 3.Vue.js的漸進式特性適合逐步引入功能。 4.React的組件化和虛擬DOM在處理複雜UI和數據密集型應用時表現出色。

Vue.js和React各有優缺點,選擇時需綜合考慮團隊技能、項目規模和性能需求。 1)Vue.js適合快速開發和小型項目,學習曲線低,但深層嵌套對象可能導致性能問題。 2)React適用於大型和復雜應用,生態系統豐富,但頻繁更新可能導致性能瓶頸。

Vue.js適合小型到中型項目,React適合大型項目和復雜應用場景。 1)Vue.js易於上手,適用於快速原型開發和小型應用。 2)React在處理複雜狀態管理和性能優化方面更有優勢,適合大型項目。

Vue.js和React各有優勢:Vue.js適用於小型應用和快速開發,React適合大型應用和復雜狀態管理。 1.Vue.js通過響應式系統實現自動更新,適用於小型應用。 2.React使用虛擬DOM和diff算法,適合大型和復雜應用。選擇框架時需考慮項目需求和團隊技術棧。

Vue.js和React各有優勢,選擇應基於項目需求和團隊技術棧。 1.Vue.js社區友好,提供豐富學習資源,生態系統包括VueRouter等官方工具,支持由官方團隊和社區提供。 2.React社區偏向企業應用,生態系統強大,支持由Facebook及其社區提供,更新頻繁。

Netflix使用React來提升用戶體驗。 1)React的組件化特性幫助Netflix將復雜UI拆分成可管理模塊。 2)虛擬DOM優化了UI更新,提高了性能。 3)結合Redux和GraphQL,Netflix高效管理應用狀態和數據流動。


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

SublimeText3 Linux新版
SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac
強大的PHP整合開發環境