[筆記] Django vs. Express

R. H.
hobo engineer
Published in
5 min readDec 28, 2018

這篇並不是甚麼專業深度的比較文,而是沿著上篇,繼續來比較目前較火熱的 web framework,並做點個人紀錄與心得 ,但其實這兩個框架應該是沒辦法直接比較的(而且直接從上圖來看,這兩者在社群資源上其實也不分軒輊,各有各自的廣大擁護者)。畢竟使用的語言分別是 Python 、Node.js ,所以若要比較應該從這兩語言切入會比較妥當。

而這兩語言特性應該也不用多介紹了,直接來比較它們的優勢跟適合用途:

Node.js優勢:

  • Nodejs 基於 Javascript 語言,使用者不用再單獨新學一門陌生的語言,從而減低了學習的門檻。
  • 以目前最快的瀏覽器內核 V8 做為執行引擎,保證了 Nodejs 的性能和穩定性。
  • Nodejs 為單線程機制且異步編程,讓 Nodejs 十分適合處理 IO 密集型任務。

Python優勢:

  • 可以訪問底層語言,如 C/C++ DLL/so,Java類庫,.net 等,所以可用於整合舊有系統。
  • 為高階物件導向語言,語法直觀易於學習。
  • 在 CPU 密集的處理上效能比 Node.js 高。

何時使用 Node.js ?

先前提到,由於 Node.js 是基於 Chrome 的 V8,所以擁有高效執行速度。且使用事件驅動的非阻塞 I/O 模型,使其成為開發資料密集型實時應用程式的理想選擇。

但若要處理 "CPU 密集" 與 "內存需求高" 的任務時,Node.js效能就比較差了,這邊直接截錄一下來源

但若是開發訊息傳遞或聊天應用程式時,使用 Node.js 是個理想的解決方案。

最適合 Node.jS 的應用程式:

  • I/O 繫結應用程式
  • 資料流應用程式
  • 資料密集型實時應用(DIRT)
  • 基於 JSON API 的應用程式
  • 單頁應用程式

何時使用 Python?

Python 擁有一個開源資料分析工具庫,Web 框架和測試工具。因此,它的生態系統是任何程式設計社群中最大的一個。而且非常適合用於機器學習、數據分析等計算密集/CPU密集等任務。

最適合 Python 的應用程式

小結:

了解以上幾點特性後,稍稍來小結一下,Node.js 應較適合小型且應用於Web的專案,理由是 V8引擎本身執行效率就好,再搭配本身的異步處理特性,在處理效能上沒話說。但是 Javascript 語法本身較無結構性,且較不直觀(相較於Python),所以在大型的專案上 Python 應該還是略勝一籌的。

再來就能比較 Express 與 Django 框架了,一樣與上篇的結論雷同, Django 本身相關資源夠多,許多輪子都造好了,而且Python語法簡單明瞭,在大型專案上使用它會有一定的方便性。而 Node.js 本身有 Callback 、異步處理的特性,雖不難理解,但還是需花點時間上手,但比起一樣是異步處理的 Tornado ,其社群與套件資源來的豐富許多,所以兩者在選擇上應該以專案的特性而定。

再來我認為還可以考慮的一個點是 Django 本身是依賴 ORM 的,通常搭配的 Database 也是 RMDBS ,而 Express 通常搭配的是 MongoDB ,當然也是有套件可以支持 Django + MongoDN 、Express + RMDBS ,但兩者在效能與處理上有沒有差異就可能要另外深入探討了。

--

--