Laravel 8 新功能概覽

Laravel

轉載自 Laravel 論壇: https://learnku.com/laravel/t...

介紹

書寫這篇文章之時, Laraavel 8 還沒有正式的發佈出來, 但它剛剛在Laracon Online上宣佈了.php

這裏是新的版本中將會提供的一些新增功能的列表 🔥laravel

模型目錄

不久前, Taylor Otwell 在Twitter上發起了一項民意調查, 詢問社區是否要將全部的模型都放在app/Models文件夾中或者使用默認的app/目錄, 大多數人表示他們將模型放在app/Models裏.數據庫

多虧了此次調查, Laravel 8將默認包含app/Models目錄.數組

若是您使用php artisan make:model SomeModel命令建立新模型, 該命令會將您的模型存放在app/Models目錄中.緩存

須要注意的是,若是你不喜歡 app/Models 目錄而且刪除了它,使用 artisan 命令建立新的模型的時候,會像以前的 Laravel 版本同樣直接添加到 app/ 目錄下。安全

路由緩存改善

路由緩存工做的方式是將全部路由都放入到一個大型的 PHP 數組中,這樣效率更高。cookie

在以前,若是在路由文件中使用了 closure ,路由緩存不會啓用,可是在 Laravel 8 中,路由緩存能夠正常使用!架構

這樣,就能夠隨時緩存路由!app

維護模式改進

php artisan down命令有了一些至關不錯的改進。composer

對於之前的版本,爲了只容許某些人訪問該網站,必須使用白名單功能,如本文中此處所述:

而在 Laravel 8,有一個比IP白名單更方便使用的方法,你能夠自定義一個 secret 。要配置它,你須要作的就是:

php artisan down --secret=YOUR_SECRET_HERE

確保使用安全字符串替換 YOUR_SECRET_HERE 部分!

以後要訪問處於維護模式的站點,請訪問 yourdomain.com/YOUR_SECRET_HERE,這會生成一個帶有 secret 的 cookie 可以讓您像往常同樣瀏覽網站!

這是一個讓你的網站處於維護模式的好方法,可是仍然容許一些人能夠訪問它!

 php artisan down 命令的另外一個很好的新增就是,你能夠能夠預渲染維護頁面,這樣,即便您運行 composer update,您的最終用戶仍會看到您的維護頁面,而不是一些錯誤。

爲此,只需運行:

php artisan down --render="errors::503"

這樣你能夠更大刀闊斧的進行維護,用戶只會看到更友好的維護頁面而不是一堆報錯頁面!

更炫酷的就是,你還能夠將標誌組合在一塊兒。例如,你運行如下命令,在給渲染的頁面添加 secret 的同時還能夠更改狀態碼:

php artisan down --render="errors::503" --status=200 --secret=YOUR_SECRET_HERE

頻率限制改進

在 Laravel 8 中有一種新的方式訂閱頻率限制。他具備更大的靈活性,同時與以前發佈的限流中間件 API 保持兼容.

他的工做原理首先是定義頻率限制器:

use Illuminate\Cache\RateLimiting\Limit;
use Illuminate\Support\Facades\RateLimiter;

RateLimiter::for('login', function (Request $request) {
    return Limit::perMinute(100);
});

而後,你能夠將 RateLimitter 看成一個標準中間件:

Route::middleware(['throttle:login'])->group(function () {
    Route::post('/login', function () {
        //
    });
});

這對於 APIs 也一樣方便,例如你能夠在其中限制用戶每分鐘能夠發送的請求數量。

模式轉儲

模式轉儲大概是我最喜歡的特性之一,我能夠藉助 Laravel Voyager 輕鬆上手使用他。

你須要使用的 artisan 命令是:

php artisan schema:dump

以上命令將在 database/schema 文件夾中生成一個架構文件,該文件基本上是整個數據庫的結構。

你還能夠轉儲當前數據庫模式,而後經過添加 --prune 標誌來縮減全部現有的遷移:flag:

php artisan schema:dump --prune

以上內容將刪除你全部的舊遷移,並生成一個架構轉儲文件。若是你有不少遷移文件,這是清除遷移文件的絕佳方法!

以後,你能夠再次開始添加新的遷移,它將照常工做。一旦達到必定數量並想要清除遷移文件夾,就能夠再次運行 schema:dump 命令並對其進行更新。

Laravel Jetstream

Laravel Jetstream 是 Laravel 的新應用程序支架。它是免費和開源的。

Jetstream 爲您的新項目提供了更好的起點。它包括如下組件:

  • 註冊登陸功能
  • Email 驗證
  • 雙因素驗證
  • 會話管理
  • 經過 Laravel Sanctum 提供 API 支持

Laravel Jetstream 取代了可用於先前 Laravel 版本的舊版 Laravel 身份驗證 UI 。

Jetstream 使用 Tailwind CSS,你選擇 Livewire 或 Inertia 。

任務批處理

我認爲,最顯着的改進之一是 Laravel 的 任務分批功能。

如今,它容許你運行一批任務 ,此後,一旦一批任務完成執行,就執行一些操做。例如:

use App\Jobs\ProcessPodcast;
use App\Podcast;
use Illuminate\Bus\Batch;
use Illuminate\Support\Facades\Batch;
use Throwable;

$batch = Bus::batch([
    new ProcessPodcast(Podcast::find(1)),
    new ProcessPodcast(Podcast::find(2)),
])->then(function (Batch $batch) {
    // 全部任務成功完成...
})->catch(function (Batch $batch, Throwable $e) {
    // 第一批任務失敗...
})->finally(function (Batch $batch) {
    // 批處理執行完畢...
})->dispatch();

return $batch->id;

任務批處理的更多相關信息,你能夠閱讀官方的 [[隊列文檔]](https://learnku.com/docs/lara... "[隊列文檔]") 。

結論

還有其餘一些改進,例如默認分頁如今使用 TailwindCSS ,改進了 php artisan serve 命令,新的模型工廠類等等。

看到 Laravel 付出了不少努力,這真是太棒了。

有關更多信息,請確保在此處查看官方發行說明:

https://learnku.com/docs/lara...

另外,請確保安裝 Laravel 8 並使用新功能!

討論請前往專業的 Laravel 論壇: https://learnku.com/laravel/t...
相關文章
相關標籤/搜索