成人怡红院-成人怡红院视频在线观看-成人影视大全-成人影院203nnxyz-美女毛片在线看-美女免费黄

站長資訊網
最全最豐富的資訊網站

Laravel8+Vuejs怎么實現單頁面應用(SPA)

Laravel8+Vuejs怎么實現單頁面應用?下面本篇文章介紹一下Laravel 8 配合 Vuejs 實現單頁面應用(SPA)的方法,希望對大家有所幫助!

Laravel8+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。如果我們點擊其他頁面,它將不會重載。下面看看項目最終效果。

Laravel8+Vuejs怎么實現單頁面應用(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 目錄下創建新的文件夾及文件,代碼結構如下圖所示。

Laravel8+Vuejs怎么實現單頁面應用(SPA)

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 class="navbar navbar-expand-md navbar-light bg-white shadow-sm">       <router-link :to="{ name: 'home' }" class="navbar-brand"         >Laravel-Vue SPA</router-link       >       <button         class="navbar-toggler"         data-toggle="collapse"         data-target="#navbarCollapse"       >         <span class="navbar-toggler-icon"></span>       </button>       <div id="navbarCollapse" class="collapse navbar-collapse">         <ul class="navbar-nav">           <li class="nav-item">             <router-link               class="nav-link"               data-toggle="collapse"               :to="{ name: 'home' }"             >               Home             </router-link>           </li>            <li class="nav-item">             <router-link               class="nav-link"               data-toggle="collapse"               :to="{ name: 'about' }"             >               About             </router-link>           </li>         </ul>       </div>     </nav>      <div class="container">       <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 class="container mt-5">     <div class="row justify-content-center">       <div class="col-md-8">         <div class="card">           <div class="card-header">About</div>            <div class="card-body">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 IlluminateSupportFacadesRoute;  /* |-------------------------------------------------------------------------- | Web 路由 |-------------------------------------------------------------------------- | | 這里是注冊應用 web 路由的地方。這些路由將會被 RouteServiceProvider 加載 | 也就是那些包含了 "web" 中間件的路由組會加載這些路由。 | 現在繼續創建一些有意思的東西! | */  Route::get('/{any}', function () {     return view('layouts.vue'); })->where('any', '.*');

在如上代碼中,我們告訴 Laravel 用戶所有訪問都將返回 resources/views/layouts/vue.blade.php 文件。很明顯,我們還沒有這個文件,一起創建下。

<!DOCTYPE html> <html lang="{{ str_replace('_', '-', app()->getLocale()) }}">  <head>     <meta charset="utf-8">     <meta name="viewport" content="width=device-width, initial-scale=1">      <title>Laravel</title>      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css"         integrity="sha384-JcKb8q3iqJ61gNV9KGb8thSsNjpSL0n8PARn9HuZOnIxN0hoP+VmmDGMN5t9UJ0Z" crossorigin="anonymous"> </head>  <body>      <div id="app"></div>      <script src="{{ asset('js/app.js') }}"></script> </body>  </html>

好了,這里有兩個重點。第一個重點,在 16 行,創建了一個 id 為 “app” 的

標簽。為何這很重要呢?因為 Vue 只能渲染到標致 id 為 “app” 的 div(或其他標簽)上。如果你還記得 resources/js/app.js 的 35 行,我們告訴 Vue ,渲染到 id 為 “app” 的標簽上。第二個重點是在 18 行,我們引入了編譯后的 Vue JS 文件。

就先這樣了。在你去測試前,請確保編譯了 Vue JS 腳本:

npm run dev

然后運行服務并在瀏覽器中打開。

Laravel8+Vuejs怎么實現單頁面應用(SPA)

這!我們成功在 Laravel 中構建了 SPA!如果你從一個頁面導航至另一個頁面,將不會引發頁面重載。

在本文完結前,我再說一點點,我們可以把 MPA 和 SPA 構建到一起。比如 SPA 頁面只用于關于頁。你需要為 SPA 添加一個端點 /about/{any} ,然后其他端點依舊是 MPA。或者哪怕項目中有多個 SPA 。通過 Laravel,也可以輕易的把其他 SPA 或者 MPA 或把他們一起構建到一個項目中!這不是就很贊嗎!

是時候借宿了。在最后,我想說 Laravel 是一個非常棒的框架。你探索的越多,越能體驗到它的強大。感謝您的閱讀,我們下次見。

【相關視頻教程推薦:vuejs入門教程、web前端入門】

贊(0)
分享到: 更多 (0)
?
網站地圖   滬ICP備18035694號-2    滬公網安備31011702889846號
成人嘿咻漫画免费入口| 四虎永久免费地址WW41.6| 中文字幕久久综合久久88| 久久精品国产亚洲精品| 亚洲成AV不卡无码无码不卡| 国产美女mv一区二区竹| 无码AV免费不卡在线观看| 国产V精品成人免费视频| 上到少妇叫爽TUBE| 豆奶视频在线观看免费高清版| 人妻无码一区二区三区| JIZZJIZZJIZZ中国| 欧美性猛烈XXXX极品少妇| AV国内精品久久久久影院| 女人的选择HD中字| 2022国产在线无码精品| 女人毛毛扒开自慰| AVTT天堂网AV无码| 全部孕妇毛片丰满孕妇孕交| 扒开腿挺进湿润的花苞| 日本少妇人妻XXXXX18| 成人爽A毛片免费| 少妇泬出白浆18P试看| 乖我们在办公室试试| 婷婷综合久久狠狠色成人网| 国产精品宅男擼66M3U8| 亚洲AV成人午夜福利在线观看| 国精一二二产品无人区免费应用 | 欧美激情一区蜜桃传媒| W永久939W乳液| 日韩精品内射视频免费观看| 丰满老熟妇好大BBBBB| 玩弄丰满熟妇乱XXXXX性多毛| 国产精品免费视频网站| 亚洲AV无码无在线观看红杏| 精品无码国产污污污免费网站国产| 亚洲熟妇无码八V在线播放| 久久丫免费无码一区二区| 性欧美牲交XXXXX视频| 欧美男女一进一出| 成都私人家庭影院的推荐理由| 搡老女人ⅩXXX搡老女人电影看| 国产成人剧情AV麻豆映画| 嫩草欧美曰韩国产大片| 婷婷五月综合色中文字幕| 国产肉体XXXX裸体XXXX| 亚洲精品无码久久久久AV麻豆| 久久久久久国产精品MV| 3D动漫精品啪啪一区二区免费| 秋霞网一区二区三区| 丰满少妇人妻HD高清果冻传媒| 无人区一码二码三码区别在哪| 娇小的学生BBW18| 欲求不満な人妻は毎晩隣人に| 女人高潮被爽到呻吟在线观看| 差差差很疼无掩盖在线观看| 无码囯产精品一区二区免费| 狠狠躁夜夜躁人人爽碰AV| 玉米地诱子偷伦初尝云雨孽欲| 内射人妻深入内射| 短裙公车被强好爽H吃奶视频| 无人区免费一二三四乱码| 精品无码成人片一区二区98| 1区2区3区高清视频| 日韩不卡手机视频在线观看| 国产内射老熟女AAAA| 亚洲人亚洲精品成人网站| 男人扒开女人下面猛进猛出 | 无码人妻一区二区中文| 近親五十路六十被亲子中出| 中文字幕人妻丝袜美腿乱| 日产乱码一二三区别免费下载 | 2021国产精品国产精华| 日韩午夜理论片 中文字幕| 国产亚洲AV☆浪潮在线观看 | 公和熄小婷乱中文字幕| 亚洲AV之男人的天堂网站| 蜜桃AV抽搐高潮一区二区| 成人网站在线观看丰满少妇电影| 性妇VODAFONEWIFI精| 久久久久久精品免费免费WER | 亚洲欧美中文日韩V在线观看不卡| 妺妺窝人体色WWW精品知乎| 干了快生了的孕妇| 亚洲日本VA午夜在线影院| 人妻 色综合网站| 国产无遮挡裸体免费直播| 中国国语毛片免费观看视频| 肉丝超薄丝袜交一区二区| 娇喘潮喷抽搐高潮在线观看视频| 7723影视大全在线观看| 无码aⅴ精品一区二区三区浪潮 | 婷婷国产三区四区| 久久强奷乱码老熟女| 第一次挺进苏雨萌| 亚洲日本一线产区二线区| 人与畜禽共性关系的重要性有哪些 | 羞羞麻豆国产精品1区2区3区| 麻豆人妻少妇精品无码专区2| 高清WINDOWS免费版| 亚洲中文字幕无码一区二区三区| 人妻无码一区二区三区免费视频| 国内精品久久人妻互换| Chinese老妇性饥渴老熟女| 性生生活大片又黄又| 欧美成A高清在线观看| 国产男男激情VIDEOSGAY| 99精品久久99久久久久| 小妖精又紧又湿高潮H视频69| 男人扒开女人内裤强吻桶进去| 国产男男GAY做受ⅩXX软件| 7777788888管家婆中特| 亚洲AV成人片色在线观看www| 欧美激情国产精品视频一区二区| 国产特级毛片AAAAAA视频| AV无码精品一区二区三区宅噜噜| 亚洲AV成人片色在线高潮| 亲近相奷对白中文字幕| 精品国内自产拍在线观看| 大BBW大BBW大BBW| 岳妇伦丰满69ⅩⅩ| 无码无套少妇毛多69XXX| 女神被啪到深处娇喘在线观看| 国产亚洲欧美另类一区二区三区 | 精品国产乱码久久久久久1区2区| 白种女BBWBBWBBW| 亚洲综合久久成人AV| 天堂AⅤ大芭蕉伊人AV| 免费女同毛片在线播放| 国产亚洲无线码一区二区| АⅤ天堂 中文在线| 亚洲色精品88色婷婷七月丁香| 少妇性生生活视频在线观看| 免费AV片在线观看网址| 国内精品久久久久精品电影| 成人动漫在线观看| 在线视频精品中文无码| 亚洲AV无码成人精品区在线观看| 日本喷奶水中文字幕视频| 六十路垂乳熟年交尾| 国内精品久久久久久无码不卡| 成人无遮挡裸免费视频在线观看| 岳潮湿的大肥梅开二度第三部最新| 小受叫床高潮娇喘嗯啊MP3| 日本熟妇裸交ⅩXX视频全过程| 老师趴讲台屁股撅起来作文| 国产亚洲AV浪潮A∨尹人Av| 成人无码精品无码社区| 18禁全彩肉肉无遮挡| 亚洲欧美一区二区成人片牛牛| 图片小说视频一区二区| 人曾交互MOUSE农场| 鲁丝一区二区三区| 精东传媒VS天美传媒在线老牛| 国产成人A∨麻豆精品| PLAY在线视频| 岳丰满多毛的大隂户| 亚洲国产精品悠悠久久琪琪| 天天看片天天AV免费观看| 人妻无码中文字幕免费视频蜜桃| 狼人无码精华AV午夜精品| 幻女FREE性俄罗斯毛片福| 国产互换人妻好紧HD无码| 产后漂亮奶水人妻| 99久久精品国产第一页| 伊伊人成亚洲综合人网7777| 亚洲国产精品18久久久久久| 无码中文亚洲AV吉吉影音先锋 | 亚洲日韩国产一区二区蜜桃| 午夜香吻视频在线看免费| 少妇极品丰满人妻无码视频| 强壮公弄得我次次高潮| 免费网站看V片在线18禁无码| 久久精品国产亚洲AV高清漫画| 国内少妇人妻丰满AV| 私人家庭影院5577| 双人床上做剧烈运动可以吗| 亚洲VA综合VA国产产VA中| 亚洲男男GAY 18自慰网站| 亚洲综合色AAA成人无码| 伊人久久精品久久亚洲一区| 国产99久久久久久免费看 | 亚洲综合久久一区二区| 九月在线 视频 在线观看| 亚洲男同帅GAY片在线观看| 国内精品卡一卡二卡三| 亚洲AV无码成人网站国产网站 | 欧美精品黑人成人另类视频| 18禁裸乳啪啪无遮裆网站| 看黄A大片爽爽爽不打码| 咬住下唇动漫在线播放完整版| 久久午夜福利无码1000合集| 一二三四视频社区3在线高清| 国精产品一区一区三区有限在线| 欧美性猛交XXXXX按摩欧美| 亚洲日韩精品无码专区加勒比| 国产9 9在线 | 中文| 日本三线和韩国三线品牌对比 | 国产乱子伦视频一区二区三区| 五月丁香伊人久久91视频|