如何高效地學習Laravel 框架?
學習策略
Laravel 是個功能齊全的全棧框架,學習她相當於你在學習成為全棧工程師。如果你之前沒有學習過類似的全棧框架,你會發現你很快會被埋進大量的技術概念和專有名詞裡。這並不是你不夠聰明,而是:
人類短時間內的記憶和訊息處理能力都是有限的,當短時間內暴露在大量的訊息面前時,你的注意力會被嚴重分散,帶來的是挫折感和煩躁不安。
所以,我們需要一套更加聰明的學習策略。
我將框架知識分類為以下:
每一個分類下都有非常多的概念需要學習,但是很明顯,學習框架的使用要比學習底層實現原理要簡單有趣多了,並且因為學習的愉悅性高了,我們能記得更牢固。
當你有一定的框架使用經驗以後,再去學習底層實現的概念,你能更好地理解這些技術概念的來龍去脈,最終達到會事半功倍的學習效果。並且這時候學習底層實現,也會讓你對框架的理解更加深入,你會發現你對框架使用技巧會變得更加靈活。
用比較簡單的話來講,就是在一開始學習的時候,先不管底層實現,利用框架提供的功能,先建造一些可用的項目,等熟悉掌握了這些框架功能的使用以後,再去學習底層實現概念。
即使是做了分類,並且有了先後順序還不夠。因為單單框架使用這部分的知識,涉及的概念也是非常多,很容易陷入訊息過載的情況。所以我們需要有一個循序漸進的方案,先學習簡單的,常用的概念,然後再慢慢學複雜的,並且在學習的過程中要注意重複學習,這樣概念才能記得越牢固。
推薦學習路徑
基於以上的思想,我創建了《Laravel 實戰課程》,計劃中有三本(也有可能更多),分別是:
- 第一本—— 《Laravel入門教程-從零到部署上線》
- 第二本—— 《Laravel進階課程-從零開始構建論壇系統》
- 第三本—— 《Laravel 高級課程- 構架API 服務器》
第一本書教授如何使用Laravel 一步一步構建一個類似新浪微博的應用,書中很多技術話題會被一帶而過,這是有意而為之的,我們希望讓讀者保持對編碼線索的專注,不被篇幅悠長的名詞解釋分心。通過閱讀本教程,你將學到如HTML、CSS、JavaScript、PHP 和Laravel 等Web 開發相關的基礎知識。不僅如此,本書還會對這些基礎知識點進行延伸擴展,為你講解一些在Web 開發中更為專業、實用的技能,如Git 工作流、Laravel Mix 前端工作流、Bootstrap 框架基本使用等。這些知識將為你未來的編程開發奠定下堅實的基礎。
第二本以構建論壇項目LaraBBS為線索,展開對Laravel框架的全面學習。編碼規範遵循Laravel項目開發規範,應用程序架構思路貼近Laravel框架的設計哲學。在論壇系統的構建中,我們將學到多角色用戶權限系統、管理員後台、註冊驗證碼、圖片上傳、圖片裁剪,XSS 防禦、自定義命令行、自定義中間件、任務調度、隊列系統的使用、應用緩存、Redis、模型事件監控、表單驗證、消息通知、郵件通知、模型修改器等知識。在本課程的學習中,你不僅能學到使用Laravel 開發一個論壇項目,還能學到安全優先、高擴展性的大型項目架構經驗。
第三本將以構建API 服務器為目標,來展開。目前本課程正在緊張撰寫中,敬請期待。
學完了以上三本書,你將擁有一定的項目開發經驗,對框架的功能使用也會有一個比較全面的系統性理解。這時候,會是學習『底層實現』的好時機。
底層實現的知識學習,可以從文檔開始,打開Laravel的文檔中心—— d.laravel-china.org ,找到最新版本的Laravel文檔,然後仔細閱讀2、3遍。因為有了上面的項目經驗,此時的文檔閱讀啃起來會輕鬆多了。
閱讀文檔後,可以嘗試看下Laravel 底層的源碼,看看這些框架的功能都是怎麼實現的。
學習過程中可以適當做筆記,例如:
錯誤的學習方法
一上來就開始啃文檔d.laravel-china.org 。
如果你是新手,有太多的新概念你需要學習,你會發現學習起來非常艱難,甚至懷疑文檔是不是寫的太爛了(社區裡經常出現這種抱怨)。
事實上,不是文檔寫的太爛,而是你把文檔用錯了。文檔的『目的』是快速查閱,一份優秀文檔的標準是語言簡練,釋義,這個Laravel 的文檔做的很棒。但是,文檔並不適合做入門學習使用,上面我們已經講過,原因是訊息量太大。
尋找網絡上零散的課程進行學習。
如果你想學習單個概念,這些零散的小課程會很方便。但是,如果是想以閱讀大量課程來達到系統性學習的目的,你將會很失望。很多時候你會感覺—— 你好像學了很多,學了很久,以為自己學會了,但是心裡還是沒底氣。
你需要的是通過項目,完整的項目,將所有的知識串起來去記憶。你的作品,清清楚楚擺在面前,看著你一步步構建出來的一套系統,自信心也會有所增加。
很多時候你會發現這些話題晦澀難懂,很難學習。並且即使你毅力比較好,死記硬背,很快也會忘記,學習效率非常低下。然後最重要的,學會這些概念,並無法使你掌握構建一個完整項目的能力。
EOF
討論請前往: 如何高效地學習Laravel框架?
--