結合Vue.js從無到有架設一個網站
這是用laravel5.4(Back-end)以及Vue2.0(Front-end)做成的專案,為什麼選這兩個配搭?網路上有很多人寫的評論可以自行去google
需求:
PHP 7.2.9(cli)
Composer 1.7.2
Server 10.1.35-MariaDB
Laravel 5.4
Vue 2.0
Create新laravel專案
找到想安裝專案的資料夾,Ctrl+Shift+右鍵 -> 在此處開起命令視窗 ( 就是開起命令提示字元CMD ),輸入以下字串:
安裝專案會用到的Plugin(laravel方面的)
1. PHP-JWT
我們會需要帳號密碼登入,所以會用到jwt來增加重要資料的保密性
清除默認安裝配置(laravel方面的)
移除app/Http/Controllers/Auth
整個資料夾,我們會用jwt來做用戶認證功能
移除resources/views/welcome.blade.php
文件,這個是默認的歡迎頁面,我們不需要它
新增我們需要用到的資料夾(laravel方面的)
後端部分
我為了讓MVC架構更明確,我會把Model獨立初一個資料夾,Controllers底下分API跟Web資料夾,Controller不會直接去跟Model溝通,會透過Repositories,然後主要的功能我都會放在Services資料夾
新增app/Http/Controllers/Web
資料夾,放置這個專案會用到的控制器
新增app/Http/Controllers/API
資料夾,放置外部專案可以call的控制器
新增app/Models
資料夾,放置跟資料庫各個table溝通的檔案
新增app/Repositories
資料夾,每個model基本上都會有一個專屬的repository,提供給controller呼叫用
新增app/Services
資料夾,主要功能會放置在這邊,也會放一個檔案裏面的function為共用的
前端部分
View方面我會習慣把相關功能放在同一個資料夾裡,但是因為前端要用Vue基本上都用透過Vue去換頁,所以這邊會縮編一些頁面,然後還會將整個專案做出一個template框架,基本上一個專案每個頁面應該只會有內容不一樣,head的內容以及footer的內容或是所要套用的js、css基本上都大同小異
新增resources/views/login
資料夾,放登入相關的頁面
新增resources/views/layouts
資料夾,放template、JS、CSS、Metatag的集中匯入檔案
新增resources/views/pages
資料夾,放所有頁面
新增resources/views/errors
資料夾,錯誤頁面
新增我們需要用到的檔案(laravel方面的)
後端部分
新增app/Http/Controllers/Web/LoginController.php
,掌管登入頁傳值,判斷帳密,是否可以登入,以及登出功能、將登入的會員資料加密存到session
新增app/Http/Middleware/AuthUserData.php
,每個頁面在切換的時候,都會去判斷token有沒有過期,沒有的話會更新一次token,有的話會直接將會員登出並導向登入頁清掉所有的session,判斷JWT、判斷token是否有誤都是在這邊
新增app/Services/AuthService.php
,將會員資料存到Session,存在這邊當然取也是在這邊,清除也是在這邊
新增app/Services/CommonTools.php
,所有後端會用到的判斷function或是紀錄function或是通用小功能都會放在這
新增app/Services/JWTController.php
,JWT功能在這邊
新增config/global.php
,全域變數會放在這邊
前端部分
新增resources/views/layouts/css_list.blade.php
,個別把css匯入抓出一個檔案放置
新增resources/views/layouts/js_list.blade.php
,個別把js匯入抓出一個檔案放置
新增resources/views/layouts/metatag_list.blade.php
,把所有的metatag以及有關seo的東西都放置在此
新增resources/views/layouts/template.blade.php
,主要框架
新增或修改文字到指定的檔案(laravel方面的)
app/Http/Kernel.php
裡的$routeMiddleware
新增'userdata' => \App\Http\Middleware\AuthUserData::class,
這樣才有辦法每次跳頁的時候要去抓這個值判斷裡面的東西,有點算是一種宣告
config/app.php裡的name可以改成你現在專案的名稱、timezone改成Asia/Taipei
config/global.php裡新增,這三個是JWT會用到的變數
串接資料庫
config/database.php裡設定要連接的資料庫,然後將資料庫裡面每個資料表都新增一個model到app/Models
底下,每個model再新增一個repository到app/Repositories
底下
安裝Vue到專案裡
因為npm 跟composer有一樣的特性,你可以直接在composer.json檔案裡面直接新增或刪除某個元件,然後執行composer update就可以直接幫妳新增或移除整個元件了,npm一樣,直接修改package.json檔案裡面,然後再執行npm install就可以囉。
以下是我package.json裡面的設定
清除默認安裝配置(vue方面的)
基本上我會把resources/assets/js底下除了app.js留著其他都刪掉
基本上我會把resources/assets/sass底下除了app.scss留著其他都刪掉
移除本身自帶的bootstrap
新增我們需要用到的資料夾(vue方面的)
我習慣分門別類放置檔案,js部分我會新增api、components、mixins、modules、pages資料夾,sass我會新增abstracts、base、components、layouts、pages、themes、vendors資料夾,每個資料夾用途跟laravel雷同這邊不贅述,其實看名稱也大概知道這資料夾該放些什麼了吧
新增我們需要用到的檔案(vue方面的)
一剛開始沒有太多的檔案要放,最主要每個頁面都會有個js檔放置在resources/assets/js底下然後這個js檔會有一個.vue檔放在resources/assets/js/pages底下,js檔主要是用來import那個.vue檔
新增或修改文字到指定的檔案(vue方面的)
修改resources/assets/js/app.js成以下這樣
修改resources/assets/sass/app.scss成以下這樣
--------------------------------------------才到第五步---------------------------------------------------
Last updated