閱讀760 返回首頁    go 阿裏雲 go 技術社區[雲棲]


探討後端選型中不同語言及對應的Web框架

  不得不指出的是,當我們喜歡一種語言的時候,我們可能會偏愛於在這門語言裏尋找可用的方案。這自然是有好有壞,好的一點是:我們可以成為這門語言的專家;不好的一點是:選擇的可能不是最合適的方案。
  下麵先探索一下可用的語言,以及它們對應的Web框架(以下內容均為本書作者個人觀點)。

JavaScript

  按照當前的流行趨勢來看,JavaScript 是一門性價比非常高的語言。因為隻要是Web,就會有前端,隻要有前端,就需要有JavaScript。與此同時,Node.js 在後台中的地位已經愈發重要了。對一般的項目而言,可以使用它來完成前端和後台,除此之外,還有移動應用。
  在那些可以使用瀏覽器來運行的設備上,我們都可以使用 JavaScript 來開發使用,例如:

  • 使用 Node.js 作為後台語言,Express、Koa 等作為後台MVC 框架,再選擇一個前端框架來實現前台。
  • 使用基於瀏覽器內核的桌麵應用Electron,加上Node.js 生態係統裏的模塊來實現桌麵應用。
  • 使用混合應用移動框架Cordova,混合應用框架Ionic 來實現跨平台的移動應用。
  • 使用 Tessel 和Ruff 等硬件來開發移動應用。

人們使用 WebView 和JavaScript 來開發應用的很大一部分原因是成本比較低。除了可以高效地開發UI,還支持跨平台運行,即隻需要編寫一次代碼就可以在不同的操作係統上運行,並且當應用對性能要求不高時,隻要適當地優化,它就可以表現得相當不錯。
  在這門語言裏,有兩個後台 MVC 框架比較流行。

  • Express:是在Node.js 上最早的MVC 框架,它由Ruby上的輕量級框架Sinatra啟發而來的。其框架本身封裝了大量實用的功能,核心特性是使用中間件來處理HTTP 請求。
  • Koa:是由 Express 的核心開發者基於 ES6 新特性打造的新框架。與Express相比,去除了一些框架自帶的功能,更加輕量級,可以讓開發者有更多的選擇。

當然,這也意味著需要用戶自己去搭建這些環境。
  簡單對比一下兩者,Express 發展得比較早,其生態係統比較豐富,很容易找到所需要的插件。Koa 則基於ES6 語言帶來一些新的特性,實時解決舊語言的一些問題,如回調等。

Python

  Python 誕生得比較早,其語言特性是做事情隻有一種方法,這個特點也決定了這門語言很簡單。與JavaScript 相比,它仍是一門性價比非常高的語言,隻是它不能在前端運行。

  Python 是一門簡潔的語言,有大量的數學、科學工具、人工智能的庫,這意味著在不遠的將來它會發揮更大的作用。同時在Web 開發領域也有廣泛的應用,除了正常的Web開發,它還在網絡爬蟲中廣受歡迎。

  同樣,在Python 語言裏也有兩個不錯的框架可以選擇,其中的Django 是重量級框架,Flask 則是輕量級框架。

  • Django:最早是被應用於內容管理係統而開發的,其框架裏自帶了相當多的組件:ORM、表單序列化及驗證係統、後台係統、緩存框架、中間件支持等。在其官網上宣稱是:The Web framework for perfectionists with deadlines,它既可以滿足完美主義者,又可以在截止期限前交付軟件。
  • Flask:是一個輕量級的框架,它隻有簡單的核心部分。換句話說,你可以按自己的需要添加ORM、用戶認證、文件上傳等功能。在今天來看,它的生態係統也相當豐富,可以完成絕大部分功能。

選擇 Flask 而不是選擇Django 的原因是:Django 本身規定好了一係列的規範和習慣。
  因而在編程時,我們隻需要按步驟一步步往下走即可。
  本書采用 Django 作為Web 開發框架的主要原因是,它適合作為CMS 框架,並且提供了豐富的組件功能,如用戶權限管理、自帶後台管理係統、ORM 等。

Java

  在今天看來,Java 仍然受企業歡迎,除了在企業級Web 係統開發上,它還在Android應用的開發上綻放光彩。
  在校期間,筆者一點兒也不喜歡 Java。後來才發現,我從 Java 中學到的東西比從其他語言中學的東西還多。如果 Oracle 不毀壞 Java,那麼它會繼續存活很久。我可以用JavaScript 造出各種我想要的東西,但是通常我無法保證它們是優雅地實現。過去人們在Java 上花費了很多時間,或在架構上,或在語言上,或在模式上。由於這些投入,都給了人們很多啟發。這些都可以用於新的語言和新的設計,畢竟沒有什麼技術是獨立於舊的技術產生的。
  由於在 Java 語言裏,筆者主要接觸的是 Spring 框架,因此下麵討論一下 Spring。

  • Spring MVC:是由 Spring 框架提供的構建 Web 應用程序的全功能 MVC模塊。由於框架本身高度可配置,即可以直接使用編寫 XML 而不是 Java 來實現功能。它是一個典型的 MVC 框架,並且也是一個純正的servlet 係統。
  • Spring Boot:其作用在於創建和啟動新的基於 Spring 框架的項目。係統本身做好了對不同框架的配置與集成,我們隻需要對其配置,並編寫少量的代碼即可。

如果你正在考慮使用 Spring 框架,建議使用 Spring Boot。

PHP

  PHP 是一門很容易上手的語言,由於其容易上手,並且發展得比較成熟。因此,有相多當的個人網站使用它作為開發語言,如 Facebook 這樣大流量的網站也在使用它。另外,不得不提及的是 WordPress 已經占領了 CMS 市場超過一半的份額,並且它也占領了全球網站的四分之一。WordPress 原生是為博客係統而創建的開源框架,由於博客係統和內容管理係統在功能上很多是相似的,因此它成了最具知名度的內容管理係統(contentmanagement systemCMS)。
  在這裏並不基於 WordPress 來開發內容管理係統,因為它已經是一個相當成熟的框架了。如果你需要一個博客係統或者內容管理係統,首選 WordPress,然後才是自己編寫。
  PHP 在框架方麵有比較多的選擇,遺憾的是,筆者隻對Laravel 比較了解。它是在PHP 5.3 之後開發的新框架,其類似於Ruby on Rails—為PHP 程序員提供快速開發的機製—提供快速開發的工具集,如生成代碼、數據遷移、ORM 等。

Ruby

  Ruby 是一門優美而巧妙的語言,它可以使編寫出來的代碼看上去更自然、簡潔,更具有表達力,因此深受程序員歡迎。早期 Ruby 語言的應用場景特別少,直至Ruby OnRails 的出現。它是嚴格按照MVC 結構開發的Web 開源框架,其致力於提升程序員的快樂感和生產效率—快速創建頁麵、模板和查詢功能等。不過如今由於可維性和性能的問題,它正在逐漸被替換。隻是對初創公司來說,它的開發效率仍使得它是一個不錯的選擇,隨後在業務穩定後使用其他框架來替換。
  同樣,由於Ruby On Rails 是一個重量級的選擇,Ruby 程序員也推出了自己的輕量級框架 Sinatra。它是一個基於Ruby 語言的DSL(領域專屬語言),由於其代碼行數少,且簡單、簡潔,可以很容易深入理解框架並對其做出定製。

其他

  除了上麵提到的語言,還有一些語言也很不錯,如Go、Scala 等。限於作者能力有限,以及篇幅的原因,在此就不展開詳細討論。
  選擇框架和語言後,還需要在選型的時候考慮數據存儲的問題。
  本文選自《全棧應用開發:精益實踐》,點此鏈接可在博文視點官網查看此書。
                      圖片描述
  想及時獲得更多精彩文章,可在微信中搜索“博文視點”或者掃描下方二維碼並關注。
                         圖片描述

最後更新:2017-06-09 10:01:42

  上一篇:go  中國唯一 !阿裏巴巴連任W3C董事會成員
  下一篇:go  開源大數據周刊-第56期