2020年5月30日 星期六

新銳 Python 網頁框架 : Masonite

最近注意到一個名為 Masonite 新興的開放原始碼 Python 網頁框架, 其在 GitHub 的熱度 (Star) 已超過 1300, 或許不久的未來將與已成熟的 Flask 與 Django 一樣成為廣受歡迎的網頁框架.

Masonite 在結構上參考了 Laravel (一個優異的 PHP 框架) 的許多先進設計, 例如服務提供者與服務容器等等, 而且提供了命令列與 ORM 工具, 具有簡單高效, 測試覆蓋率高等優點, 參考 :

https://pypi.org/project/masonite/ (套件下載)
https://docs.masoniteproject.com/ (教學文件)
https://github.com/MasoniteFramework/masonite (開放原始碼)

強國的社群有人發起教學文件中文化翻譯 (進行中) :

Masonite 中文文档

目前市面上 Masonite 的書籍只找到一本, 作者是 Masonite 的開發者 Joe Mancuso :

The Definitive Guide to Masonite: Building Web Applications with Python


Source : Amazon


Google 圖書有提供試閱, 參考 :

# Google Book : The Definitive Guide to Masonite: Building Web Applications with Python

此書作者之一 Joe Mancuso 有在 Youtube 發布 Masonite 簡介影片:

# #233 The Masonite Python Web Framework




很多人可能跟我一樣, 覺得 Django 已經很好用了, 為什麼還要學一種新的框架? 作者 Joe Mancuso 在下面這篇 Medium 的文章中比較了 Masonite 與 Django 的差異, 並對於為什麼 Masonite 是最適合初學者與專家的框架, 提出了極有說服力的愛用理由 :

Masonite 2.0 and Django

重點摘要如下 :
  • Masonite 是一個以開發者為中心的框架 (developer-centric), 專為網頁開發者而設計, 不像 Django 最初是為了建立新聞網站, 而 Flask 則看起來像是愚人節玩具 (好酸啊). 
  • Masonite 是為了想讓網頁應用成為 SaaS 雲端軟體而設計, 也是為那些周末戰士的專案 (Weekend Warrior Projects, 即只有周末才有空做的個人專案) 而開發. 
  • Masonite 採用 MVC (Model-View-Controller) 架構; 而 Django 則是採用 MTV (Model-Template-View) 架構, 這是兩者最大的不同. 雖然達成的效果一樣, 但架構不同就表示做事的方式不同. 
  • Django 將單一的應用程式分解成多個 App, 這對於將功能複雜的應用邏輯抽象化確實有其意義, 但對於許多開發者來說卻不知該如何拆解應用程式功能, 導致因為盲目分拆而讓應用程式的邏輯架構更加複雜. Masonite 不是這樣, 它是真正的 MVC 架構, 它將應用邏輯分拆成位於不同模組的多個控制器, Masonite 提供多種控制器類別可將應用邏輯以清楚與符合實際的方式抽象化. 
  • Mashonite 採用 Service Provide 與 Service Container 增添第三方應用程式 (例如郵件服務) 來擴充 Masonite 網站的功能, 此方式可加速網站的反應速度, 因為它不需要去後端 (backend) 去檢查是否有此服務. Django 的第三方服務是在後端 INSTALLED_APPS 設定中以字串格式列舉服務的位置與功能.
  • Django 的設定全部放在單一的 settings.py 與 settings_local.py 裡面, 有些人覺得這沒甚麼不好, 但其實全部放在一起有點混亂. Masonite 則是將設定以功能特性進行區分, 將其分割成多個設定檔.  
Masonite 怎麼用? 可參考下面這篇初體驗用 Masonite 來快速建立一個網頁應用程式 :

Python:masonite初体验TodoList

最近要抽空來玩玩看.

4 則留言 :

高藥師 提到...

今天看有1700多
您後來用的如何呢?

小狐狸事務所 提到...

汗顏, 學的武功太多, 沒時間進一步研究, 反而是 Flask 較常用, 純手工.

匿名 提到...

看了一下 masonite的文件,如果有學過laravel應該會好入手很多。

小狐狸事務所 提到...

感謝! 曾經想學 Laravel, 但 PHP 本身就有很多要學, 時間不夠分, 後來改用 Python, 連 PHP 都很少再用了, 哈