最近在用Laravel這個PHP框架搭網站,大致了解這個框架的目錄結構之后感覺學到了不少東西。
首先安裝好包管理器:
PHP部分當然用composer,安裝在全局目錄下方便一點。
前端部分,我沒有選擇npm而是使用更“先進”的yarn。
可以打開 Laravel的官方文檔 以供參考。
我寫這文章是為了理清楚自己的開發思路,以前我直接把整個網站項目從服務器復制到自己的電腦上進行編寫,但是這樣需要復制的東西實在太多了,大部分是我根本就不會去動第三方的庫。所以我得搞清楚如何做能夠只需要下載最少的文件,就能夠保持我電腦與服務器的文件的同步。這樣也方便在本地開服務器進行代碼測試,而不用每次都得同步本地修改到服務器,再從服務器測試代碼運行結果。
大致的思路就是,只同步包管理器的配置文件,再在本地通過包管理器讀取這些配置文件下載與服務器相同的第三方庫。
1. PHP的依賴
安裝好Larvel之后,根目錄下會有composer用於存放第三方庫的文件夾 vendor,這個文件夾里的東西全部可以加進.gitignore,事實上Laravel默認gitignore 也是這么做的。我們只需要在git加上composer.json就可以同步PHP所使用的庫了。
這樣從git pull下來的repo,只需要執行composer install就能獲得與服務器上相同的庫。
2. 前端項目的依賴
前端的庫都會放在 Laravel 根目錄下 node_modules 目錄(以下簡稱nm)里,這個nm應該放在gitignore里,不同步到git,僅同步packages.json 及 yarn.lock(如果用yarn來替代npm的話)。
本地的repo里,只需要yarn install便能獲得與服務器上相同的庫。
3. 前端資源的存放
Laravel還有兩個文件夾public及resources,本來我一直都是把css js以及其他資源文件比如圖片直接放在public文件夾里的,但是似乎這么做是不妥的,特別是使用scss/sass以及Typescript這種需要編譯才能生成實際瀏覽器使用的css/js的文件。
一種比較合理的做法是,將scss以及typescript放在resources里,轉譯出的最終文件放在public下。這樣瀏覽器可以訪問最終css/js文件,但是訪問不到源文件。如果轉譯再minify的話這樣做也很方便。總之就是將源文件剝離出public目錄,防止用戶訪問。
轉譯之類的操作可以使用webpack,同時還可以實現更多高級特性比如模塊化。