進度條

細數 Laravel 新手學習上的困難 (一),為何我不推薦 Homestead 與 Laravel Sail,你真的需要 Docker 做為起手式嗎?

一開局就踩空?PHP 原本就是個模板系統,根本不需要這麼複雜即可開始開發 Laravel 喔!

作者: 進度條編輯群 更新日期:

不曉得大家都是怎麼開始學習一個新的框架或是函式庫呢?

 

以我個人為例,一般來說,首先當然是有個引起興趣的原因。比方說當初開始學習 Laravel 是因為專案上有需要使用到 PHP,而我個人是 Ruby on rails 的開發者,並且對 Symfony 的概念實在是不喜歡。所以就開始了 Laravel 的學習之旅。

 

 

 

那在學習 Laravel 的時候,即使當時已是資深工程師的我,也是必須要從官方的文件開始讀起,找到 Documentation (文件)之類的字眼,進到 Getting started (從這開始) -> Installation (安裝步驟)。這些字眼基本上任何的函式庫都差不多,算是一個業界的慣例。某一天有一個函示庫開始使用這樣的描述邏輯,大家都覺得很容易懂,就變成一個慣例模板了。不管你今天是 Node JS 的開發者,還是 Python 開發者,都大同小異。

 

 

不過通常第一個坑,很快就會出現了。在早期的 Laravel 版本文獻中,都強烈的建議你使用 Homestead 這樣的「虛擬機器」解決方案。先不論他是否是真正意義上最好的解決方案,但是在 Laravel 8 以後,官方自己移除了他在 Installation 頁的位置。改推薦 Laravel Sail 這個使用 Docker 的解決方案。

 

不過以我自己的建議,這些「新手」都不要用。因為他有太多的前置動作與知識需要先理解。同時也會造成很多的誤會。

 

其實寫這篇就是為了讓一些跟我有同樣想法的人,感到還有人支持自己的論點。畢竟官網對於初學者來說跟「聖旨」一樣。絕對會質疑自己的想法很久。

 

 

順便說個小故事,在 2015 年之前,因為 Ruby on rails 內建 Coffee Script 這個 JavaScript 的變種語法(須額外轉譯為 JavaScript)。所以整個 Rails 網路社團風氣就是你不用 Coffee Script,你就是「不專業的工程師」。

 

 

「蛤!你不會用 Coffee Script 喔!」,大部分網路常發言的帳號,大概會給你這樣的感覺,即使當時跟 jQuery 的市占率完全不可比。

 

 

但是 2015 後,React 暫時稱霸了前端,後面 Vue 也出現分割市場。用 Coffee Script 一系之間變得好像是件「跟不上時代」的事情。

 

 

「蛤!你還在用 Coffee Script 喔!」,大部分網路常發言的帳號,大概會給你這樣的感覺。

 

 

或許正在看這篇文章的你,在我提出 Coffee Script 的之前,根本不知道這是什麼。跟他共生死的還有 haml (html 的模板系統,也是曾經聲量很大)。不過另外一個 yaml 則目前活得還不錯,目前在設定檔格式中還佔有一席之地。

 

 

 

 

類似的事情也發生在 Laravel 上,Laravel 曾經官方強連結 Vue.js,某種意義上可能是要避免與萬惡的 React 和 Facebook 扯上關係 ( 2017年 當時 React 授權寫的有點模糊,所以網路輿論興起,最後 React 改成最沒爭議可商用的 MIT 授權結案)。

 

 

不過後來其實因為市占率的關係,後來就沒有特別明顯在推 Vue 的綁定,還是回歸原本的 PHP Blade 居多。對於 React 的支持也是很順暢。

 

 

其實這邊也沒有要排斥新技術的意思,不過初學者很容易被與論與官方文件暗示的影響。說實在,大家都在 Youtube 影片裡面抓業配,但其實技術文件裡面也是會出現業配的。

 

 

如果在有限的時間內要學習不會被淘汰的技術的話,學習比較基底的技術是比較合適的。就像你無論是使用 React、Vue、jQuery、TypeScript 或是未來任何前端相關的函式庫,本質上還是 JavaScript,你的瀏覽器就是只吃 JavaScript。雖然你可能想說 Google / 微軟 Microsoft / 蘋果可以在瀏覽器加入「直譯器」之類的。但實際上這算是大工程,而且要成為 Standard 業界標準其實是要經歷過市場的考驗,與大公司之間的廝殺。別忘了 Google 和微軟 Microsoft 可是棄坑高手呢!

 

 

所以回到安裝 Laravel 上面,我個人覺得在學習 Laravel 的時候就應該著重在 PHP、Laravel、PHP 套件管理上面(Composer)。當然,因為 Laravel 本身是前後端全家桶,所以 Node.js / MySQL 是也跑不太掉,但是還是可以有個先後練習順序。其他沒有一定要使用的部分,最好先跳過,等到有需要的時候再學習即可。

 

因此目前即使你的生活中,只充滿著 Typescript 與 Docker,還是必須要先問問自己。如果沒有 Typescript 和 Docker,你能用 JavaScript 與 Command Line 做到同樣的事嗎?或是至少大概知道他們的原型是什麼,使用了 TypeScript 與 Docker 解決了什麼問題,與你失去了什麼。 

 

 

 

回到 Laravel 中的 Homestead。當初對我來說是一個很大的雷點。因為他是建構在虛擬機器中。虛擬機器有效能上的問題,還有對於儲存的限制,而後者在 Docker 上也會有。

 

Homestead 依賴虛擬機器本身 Virtualbox 與 VMWare,本質上會需要分隔 CPU 計算能力與虛擬記憶體 RAM 空間給他。對這個沒概念的話,可以先想成你使用這個方案後,你就是在同一台電腦裡面開兩個作業系統。有些電腦多開幾個 Chrome 的視窗就會嚴重卡頓了... 更不說後面還有 Vagrant 要安裝之類的。即使是當時的我,也是玩了一下才安裝好 Vagrant,然後就發現他有很多限制。並且第一時間,整個 Laravel 似乎變成了個「黑盒子」,我不知道它怎麼執行的、也不知道要怎麼把它放到網路上。

 

 

但是實際上, 基本的 Laravel 的執行本質上跟 WordPress 沒有太大的差異,你想要的話,也可以放到 Web Server 裏面,只要伺服器裡面有足夠新的 PHP,Laravel 的 Demo 站台還是跑得起來。

 

 

所以對於新手來說,其實安裝 Laravel 最好的方式,還是直接安裝 PHP,然後安裝依靠 PHP 的函式庫管理程式 composer,利用 composer 下載 Laravel 主程式。composer 並不可怕,就像 npm 之餘 nodejs,pip 之餘 python, gem 之餘 ruby。就是個函示庫管理工具而已。而且在下載 Laravel 主程式後,其實 composer 也沒事做了,即使把它刪掉也沒關係(但是你更新函式庫版本的時候還是需要它,因此一般不會刪掉)。
 

 

 

 

 

總之,如果初學者的你對安裝 Laravel 有問題的話,建議大家可以單純的使用。 PHP + Composer + MySQL 這個最簡單的方案來練習即可。至於其他的方案,等你已經瞭解了 Laravel 以後再去嘗試也不遲。

 

有需要了解安裝方式的話,可以參考我們 Laravel 的課程 的預覽喔~ 免費的預覽部分就有完整的安裝影片,有興趣的話可以去看看

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊