date: 2017-12-27 18:35:16
title: 技術(shù)分享 - 人生苦短, 我用 laravel
應(yīng)聘 慕課網(wǎng) 的講師, 選題是 laravel 相關(guān)的, 仔細(xì)斟酌之下, 定了這個(gè)選題:
人生苦短, 我用 laravel
希望這次分享, 能幫助大家解答:
- 為什么要學(xué)習(xí) laravel 框架
- 它有什么優(yōu)勢(shì)
為什么要學(xué)習(xí) laravel 框架
要回答這個(gè)問(wèn)題, 我們先要弄清楚, 框架 是什么?
根據(jù) <編程風(fēng)格:好代碼的邏輯> 這本書(shū)中的定義:
框架: 一類(lèi)特殊庫(kù)/可重用組件, 提供一個(gè)能被進(jìn)一步開(kāi)發(fā)的通用應(yīng)用程序功能
我來(lái)給這句話劃一下重點(diǎn):
- 可重用 = 圈內(nèi)的黑話 輪子
- 通用程序功能 = 前人栽樹(shù), 后人乘涼
- 能被進(jìn)一步開(kāi)發(fā) = 這就是我們要做的, 通常我們叫它 業(yè)務(wù)代碼
從這些定義可以看出, 評(píng)估一個(gè)框架的好壞有以下直觀的標(biāo)準(zhǔn):
- 提供豐富的可重用/通用功能, 避免讓我們 重復(fù)造輪子
- 讓我們寫(xiě)起 業(yè)務(wù)代碼 來(lái), 能更快更簡(jiǎn)單
首先來(lái)看功能豐富, 看過(guò) laravel 官方文檔 的人, 都會(huì)感覺(jué) 吃力 -- 這么多內(nèi)容呀. 這里我要糾正大家一個(gè)觀點(diǎn):
多是因?yàn)?功能多, 核心其實(shí)就那么一點(diǎn)點(diǎn), 按需使用自己需要的功能就好了.
laravel 就是這樣一個(gè) 大而全 的框架, 基本不需要 重復(fù)造輪子.
再來(lái)談?wù)?laravel 的怎么讓我們寫(xiě)起 業(yè)務(wù)代碼 來(lái)更快更簡(jiǎn)單.
Love beautiful code? We do too. -- The PHP Framework For Web Artisans
laravel 的宣傳標(biāo)語(yǔ)還是蠻 傲嬌 的 -- 為 Web 藝術(shù)家而生. 用幾個(gè)同義的關(guān)鍵字:
- simple
- clean
- easy
這樣的代碼寫(xiě)起來(lái), 當(dāng)然快啦.
我們來(lái)實(shí)操感受下, 先來(lái)看 路由, 文件地址 routes/web.php:
// 默認(rèn)路由
Route::get('/', function() {
return view('welcome');
});
// 開(kāi)始玩起來(lái)
Route::get('/test', function() { // 自定義路由
return "czl"; // 直接返回字符串
return view('welcome'); // 返回 html 頁(yè)面
return ["a" => "czl", "b" => "daydaygo"]; // 直接寫(xiě)數(shù)組就可以返回 json 格式
});
這還只是 路由 功能的冰山一角, 可以參考 官方文檔 - routing 解鎖更多姿勢(shì).
我們接著來(lái)看一下 Web 開(kāi)發(fā)中經(jīng)常會(huì)使用到的緩存功能, 我們還是在路由這里進(jìn)行測(cè)試:
use Illuminate\Support\Facades\Cache;
Route::get('/', function() {
// 使用 Facade
Cache::set('czl', 'daydaygo'); // 設(shè)置緩存
$cache = Cache::get('czl'); // 獲取緩存
// 常用操作, 還有 helper function 可以使用, 更快捷
cache('czl', 'daydaygo'); // 設(shè)置緩存
cache('czl'); // 獲取緩存
})
是不是 hin 輕松?
再來(lái)體驗(yàn)一下 laravel 的快, 使用 php artisan 輕松生成代碼, 開(kāi)發(fā)效率倍增

它有什么優(yōu)勢(shì)
其實(shí), 應(yīng)該說(shuō) 還有 什么優(yōu)勢(shì):
- 難
- 社區(qū)活躍
難
是不是感覺(jué)很奇怪, 難 怎么變成優(yōu)勢(shì)了?
先說(shuō)一下 laravel 難在哪里 -- 框架的架構(gòu)(architecture):
- 服務(wù)容器 service container
- 服務(wù)提供者 service provider
- 門(mén)面 Facade(設(shè)計(jì)模式的一種)
- 合約 contract
尤其是第一次接觸 laravel 框架的同學(xué), 看到這些 概念, 簡(jiǎn)直頭大. 但是, 得益于 世界上最好的語(yǔ)言, 你只要稍微深入一點(diǎn), 就會(huì)發(fā)現(xiàn)這個(gè)其實(shí)并不難, 并且當(dāng)你跨過(guò)這座 高山, 就會(huì)有 一覽眾山小 的感覺(jué):
因?yàn)?laravel 的架構(gòu), 算是 php 框架中最復(fù)雜的.
這也是 laravel NB 的地方, 我們?cè)趯?xiě) 業(yè)務(wù)代碼 的時(shí)候, 并不會(huì)感知到底層的復(fù)雜.
社區(qū)活躍
這么好的框架, 當(dāng)然吸引了不少 有識(shí)之士 啦. laravel 的社區(qū)非?;钴S, 相關(guān)的站點(diǎn)也非常多, 這樣也帶來(lái)了明顯的好處: 遇到了問(wèn)題, 基本百度都能找到 前車(chē)之鑒, 不太容易被一些技術(shù)細(xì)節(jié)及難點(diǎn)卡住, 能獲得十分流暢的學(xué)習(xí)的體驗(yàn).
資源很充足:
寫(xiě)在最后
不知道介紹到這里, 有沒(méi)有激起大家想要 擼一把 laravel 的沖動(dòng)呢. 還是那句話:
laravel, 為 Web 藝術(shù)家而生