摘要:使用能優(yōu)雅的構(gòu)建并且與單頁(yè)面應(yīng)用程序完美結(jié)合。我們將重點(diǎn)關(guān)注所需的所有部分,然后在后續(xù)教程中,我們將進(jìn)一步演示如何使用作為層。例如,如果用戶刷新路由,我們將需要匹配該路由并返回應(yīng)用程序模板。運(yùn)行應(yīng)用程序該基礎(chǔ)用于構(gòu)建具有和路由器的。
使用Laravel能優(yōu)雅的構(gòu)建API并且與Vue單頁(yè)面應(yīng)用程序(SPA)完美結(jié)合。在本教程中,我們將展示如何啟動(dòng)和運(yùn)行Vue路由器以及用于構(gòu)建SPA的Laravel后端。我們將重點(diǎn)關(guān)注所需的所有部分,然后在后續(xù)教程中,我們將進(jìn)一步演示如何使用Laravel作為API層。
Vue SPA如何運(yùn)行的:
第一個(gè)請(qǐng)求命中服務(wù)器端Laravel路由器
Laravel渲染SPA布局
后續(xù)請(qǐng)求利用history.pushStateAPI進(jìn)行URL導(dǎo)航,而無(wú)需重新加載頁(yè)面
Vue路由器可以配置為history模式或hash模式。默認(rèn) hash 模式 —— 使用 URL 的 hash 來(lái)模擬一個(gè)完整的 URL,于是當(dāng) URL 改變時(shí),頁(yè)面不會(huì)重新加載。history 模式,這種模式充分利用?history.pushState?API 來(lái)完成 URL 跳轉(zhuǎn)而無(wú)須重新加載頁(yè)面。
這里我們使用history模式,所以需要我們需要配置一個(gè)Laravel路由,該路由將匹配所有可能的URL,具體取決于用戶進(jìn)入Vue SPA的路由。例如,如果用戶刷新/hello路由,我們將需要匹配該路由并返回Vue SPA應(yīng)用程序模板。然后,Vue路由器將確定路由并渲染相應(yīng)的組件。
安裝首先,我們創(chuàng)建一個(gè)新的Laravel項(xiàng)目,然后安裝Vue路由器NPM包:
laravel new vue-router cd vue-router # Link the project if you use Valet valet link # Install NPM dependencies and add vue-router yarn install yarn add vue-router # or npm install vue-router配置Vue路由器
這里的?
首先,我們將更新主要的JavaScript文件resources/assets/js/app.js并配置Vue路由器。用以下內(nèi)容替換app.js文件的內(nèi)容:
import Vue from "vue" import VueRouter from "vue-router"http://導(dǎo)入并安裝VueRouter插件 Vue.use(VueRouter) import App from "./views/App"http://作為App最外層應(yīng)用程序組件的組件 import Hello from "./views/Hello"http://導(dǎo)入自定義Hello組件 import Home from "./views/Home"http://導(dǎo)入自定義Home組件 //構(gòu)造一個(gè)VueRouter帶有配置對(duì)象的新實(shí)例 const router = new VueRouter({ mode: "history", routes: [ { path: "/", name: "home", component: Home }, { path: "/hello", name: "hello", component: Hello, }, ], }); const app = new Vue({ el: "#app", components: { App }, router, });
然后我們需要?jiǎng)?chuàng)建一些文件,但首先,我們將介紹以下內(nèi)容app.js:
我們導(dǎo)入并安裝VueRouter插件Vue.use()
我們導(dǎo)入三個(gè)Vue組件:
作為App最外層應(yīng)用程序組件的組件,
一個(gè)Hello映射到組件/hello
一個(gè)Home映射到組件/home
我們構(gòu)造一個(gè)VueRouter帶有配置對(duì)象的新實(shí)例
我們App通過(guò)將組件傳遞給componentsVue構(gòu)造函數(shù)中的屬性來(lái)使Vue知道該組件
我們將router常量注入到新的Vue應(yīng)用程序中以訪問(wèn)this.$router和this.$route
該VueRouter構(gòu)造函數(shù)采用的路線,我們定義的路徑,名稱(就像Laravel的命名路線),并映射到路徑組件的數(shù)組。
我喜歡將我的路由定義移動(dòng)到我導(dǎo)入的多帶帶路由模塊中,但為了簡(jiǎn)單起見(jiàn),我們將在主應(yīng)用程序文件中定義路由。
為了使Laravel mix成功運(yùn)行,我們需要定義三個(gè)組件:
mkdir resources/assets/js/views touch resources/assets/js/views/App.vue touch resources/assets/js/views/Home.vue touch resources/assets/js/views/Hello.vue
首先,該App.vue文件是我們應(yīng)用程序的最外層容器元素。在這個(gè)組件中,我們將使用Vue Router的
Vue Router Demo App
Home |Hello World
我們App組件中最重要的標(biāo)簽是
我們需要定義的下一個(gè)組件位于resources/assets/js/views/Home.vue:
This is the homepage
最后,我們定義Hello位于以下位置的組件resources/assets/js/views/Hello.vue:
Hello World!
我喜歡將我的可重用組件與特定于視圖的組件分開(kāi),方法是將視圖組織到resources/assets/js/views文件夾和我真正可重用的組件中resources/assets/js/components。這是我的慣例,我發(fā)現(xiàn)它運(yùn)行良好,因此我可以輕松地分離哪些組件可以重用,哪些組件是特定于視圖的。
就前端而言,我們擁有運(yùn)行Vue應(yīng)用程序所需的一切!接下來(lái),我們需要定義后端路由和服務(wù)器端模板。
服務(wù)器端我們利用像Laravel這樣的應(yīng)用程序框架和Vue SPA,以便我們可以構(gòu)建服務(wù)器端API來(lái)使用我們的應(yīng)用程序。我們還可以使用Blade來(lái)渲染我們的應(yīng)用程序并通過(guò)全局JavaScript對(duì)象公開(kāi)環(huán)境配置,這在我看來(lái)很方便。
在本教程中,我們不打算構(gòu)建API,但我們將進(jìn)行后續(xù)跟進(jìn)。這篇文章是關(guān)于連接Vue路由器的全部?jī)?nèi)容。
我們將在服務(wù)器端解決的第一件事是定義路由。打開(kāi)routes/web.php文件并使用以下內(nèi)容替換歡迎路徑:
where("any", ".*");
我們定義了一條全能路線,SpaController這意味著任何網(wǎng)絡(luò)路線都將映射到我們的SPA。如果我們沒(méi)有這樣做,并且用戶提出了請(qǐng)求/hello,Laravel會(huì)回復(fù)404。
接下來(lái),我們需要?jiǎng)?chuàng)建SpaController并定義視圖:
php artisan make:controller SpaController
打開(kāi)SpaController并輸入以下內(nèi)容:
最后,輸入以下內(nèi)容resources/views/spa.blade.php:
Vue SPA Demo 我們已經(jīng)定義了#app包含AppVue將呈現(xiàn)的組件的必需元素,以及基于URL呈現(xiàn)適當(dāng)?shù)慕M件。
運(yùn)行應(yīng)用程序該基礎(chǔ)用于構(gòu)建具有Vue和Vue路由器的SPA。我們需要構(gòu)建或JavaScript來(lái)測(cè)試它:
yarn watch # or npm run watch如果您在瀏覽器中加載應(yīng)用程序,您應(yīng)該看到如下內(nèi)容:
原文地址https://laravel-news.com/usin...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/31315.html
showImg(https://segmentfault.com/img/bV6aHV?w=1280&h=800); 社區(qū)優(yōu)秀文章 Laravel 5.5+passport 放棄 dingo 開(kāi)發(fā) API 實(shí)戰(zhàn),讓 API 開(kāi)發(fā)更省心 - 自造車(chē)輪。 API 文檔神器 Swagger 介紹及在 PHP 項(xiàng)目中使用 - API 文檔撰寫(xiě)方案 推薦 Laravel API 項(xiàng)目必須使用的 8 個(gè)...
摘要:原文地址鏡像地址中文文檔概覽基本示例是位于頂層的一個(gè)簡(jiǎn)潔的配置層,在的情況下使用會(huì)使操作變的非常簡(jiǎn)單。在項(xiàng)目根目錄下并沒(méi)有配置文件,默認(rèn)指向根目錄下的配置文件。否則,它通常與需要?jiǎng)h除的錯(cuò)誤鎖文件有關(guān)。該問(wèn)題已被在修復(fù)。 原文地址: Laravel Mix Docs 鏡像地址 : Laravel-mix 3.0 中文文檔 概覽 基本示例 larave-mix 是位于webpack頂層的一...
摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥(niǎo)雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門(mén),久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
摘要:五六月份推薦集合查看最新的請(qǐng)點(diǎn)擊集前端最近很火的框架資源定時(shí)更新,歡迎一下。蘇幕遮燎沈香宋周邦彥燎沈香,消溽暑。鳥(niǎo)雀呼晴,侵曉窺檐語(yǔ)。葉上初陽(yáng)乾宿雨,水面清圓,一一風(fēng)荷舉。家住吳門(mén),久作長(zhǎng)安旅。五月漁郎相憶否。小楫輕舟,夢(mèng)入芙蓉浦。 五、六月份推薦集合 查看github最新的Vue weekly;請(qǐng)::點(diǎn)擊::集web前端最近很火的vue2框架資源;定時(shí)更新,歡迎 Star 一下。 蘇...
閱讀 2245·2021-11-22 14:56
閱讀 9971·2021-09-08 10:45
閱讀 1978·2019-08-30 13:54
閱讀 2866·2019-08-29 16:54
閱讀 2009·2019-08-29 14:20
閱讀 1778·2019-08-29 12:25
閱讀 1855·2019-08-29 12:17
閱讀 1053·2019-08-23 18:29