Laravel 圖片,媒體檔案管理擴充套件包推薦

winter-ice發表於2019-06-30

目前可用的媒體檔案管理擴充套件包有兩個:

  1. 大家所熟知的 spatie 團隊開發的 laravel-medialibrary
  2. 和另外一個 來自 Plank Design 團隊的 laravel-mediable

作為一個兩個包的使用過的人現在本文中對兩個包做一個簡單的對比,方便大家決定專案中使用哪個包,以及避免踩一些我已經踩過的坑。

laravel-medialibrary 3060
laravel-mediable 424

很明顯 laravel-medialibrary 的star 要遠高於 laravel-mediable (畢竟 spatie 的知名度更高)

兩個包都有詳細的文件頁面,相信你也跟我一樣對有獨立文件頁面的開源專案更有好感(相較於github Readme)
https://docs.spatie.be/laravel-medialibrar...

http://laravel-mediable.readthedocs.io/en/...

兩個包的基本功能都差不多,基本的圖片管理相關操作都有。下面說下不同點:

  • 圖片處理:laravel-medialibrary 整合了圖片處理相關的功能。 laravel-mediable
  • 圖片上傳:laravel-medialibrary 無。 laravel-mediable 整合了圖片上傳功能,可指定檔案型別限制,檔名,磁碟等等一系列設定。
  • 關聯關係處理 :laravel-medialibrary 的媒體檔案表只有一張表,處理關聯關係相對不是很方便,官方也沒提供同步媒體檔案的方法,需要自己寫。 laravel-mediable 的表設計多了一張中間表,處理關聯關係相對更方便,提供的相關操作方法也更全面。

重點來了,作為一個兩個包都使用過的人,以下是我的經驗和吐槽:

  1. 如果需要的僅僅是一個媒體檔案管理擴充套件包, laravel-medialibrary 整合的圖片處理功能對我完全沒用,平白增加了包的複雜性(和效能下降?)。如果需要做圖片處理的話完全可以自己再引入額外的圖片處理包,個人對於包的看法是一個包做好一件事就可以了。
  2. laravel-medialibrary 沒有考慮先上傳後關聯的場景,包使用方法裡上傳和關聯是需要同時進行的,這點就很不符合實際應用,官方說是要支援,但是很久都沒有更新了 相關issue,畢竟 spatie 這個團隊維護的包太多了,可能有點顧不過來。
  3. laravel-medialibrary 的表設計個人感覺有些問題,沒有設計中間表,導致很多操作處理起來很麻煩,不合理。例如刪除圖片資料,刪除圖片檔案,刪除資料關聯,這些操作無法更細化。

沒錯,這篇文章是帶有很大偏向性的,做為一個在 laravel-medialibrary 這個包上踩了 N 多個坑後發現了 laravel-mediable 這個包感覺就像是發現了新大陸。很多之前的問題,都需要自己額外寫很多方法去解決,有些問題都無法解決,換了包後這些問題都不存在了。如果你也準備在專案中使用開源的媒體檔案管理擴充套件包,我強烈建議你使用 laravel-mediable

PS:文章沒法詳細對比兩個包的異同,也沒法完全列舉我遇到過的種種坑(眨眼暗示),在使用之前建議開啟兩個包的文件,自行去詳細對比下相關的功能,找到適合自己專案的才是最好的。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章