網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
python與php那個好
Python、Java、PHP……后端選型用什么語言?怎么選Web框架? 行業(yè)視頻課程
在進行后端選型的時候,要選擇的實際上是一個框架。后端領(lǐng)域所使用的技術(shù)和框架已經(jīng)趨于穩(wěn)定,我們只需要框架。當(dāng)有多個框架適合時,再選擇適合的語言。本文選自《全棧應(yīng)用開發(fā):精益實踐》
不得不指出的是,當(dāng)我們喜歡一種語言的時候,我們可能會偏愛于在這門語言里尋找可用的方案。這自然是有好有壞,好的一點是:我們可以成為這門語言的專家;不好的一點是:選擇的可能不是最合適的方案。
下面先探索一下可用的語言,以及它們對應(yīng)的Web 框架(以下內(nèi)容均為個人觀點)。
JavaScript
按照當(dāng)前的流行趨勢來看,JavaScript 是一門性價比非常高的語言。因為只要是Web,就會有前端,只要有前端,就需要有JavaScript。與此同時,Node.js 在后臺中的地位已經(jīng)愈發(fā)重要了。對一般的項目而言,可以使用它來完成前端和后臺,除此之外,還有移動應(yīng)用。
在那些可以使用瀏覽器來運行的設(shè)備上,我們都可以使用 JavaScript 來開發(fā)使用,例如:
使用Node.js 作為后臺語言,Express、Koa 等作為后臺MVC 框架,再選擇一個前端框架來實現(xiàn)前臺。使用基于瀏覽器內(nèi)核的桌面應(yīng)用Electron,加上Node.js 生態(tài)系統(tǒng)里的模塊來實現(xiàn)桌面應(yīng)用。使用混合應(yīng)用移動框架Cordova,混合應(yīng)用框架Ionic 來實現(xiàn)跨平臺的移動應(yīng)用。使用Tessel 和Ruff 等硬件來開發(fā)移動應(yīng)用。
人們使用 WebView 和JavaScript 來開發(fā)應(yīng)用的很大一部分原因是成本比較低。除了可以高效地開發(fā)UI,還支持跨平臺運行,即只需要編寫一次代碼就可以在不同的操作系統(tǒng)上運行,并且當(dāng)應(yīng)用對性能要求不高時,只要適當(dāng)?shù)貎?yōu)化,它就可以表現(xiàn)得相當(dāng)不錯。
在這門語言里,有兩個后臺 MVC 框架比較流行。
Express:是在Node.js 上最早的MVC 框架,它由Ruby 上的輕量級框架Sinatra啟發(fā)而來的。其框架本身封裝了大量實用的功能,核心特性是使用中間件來處理HTTP 請求。Koa:是由Express 的核心開發(fā)者基于 ES6 新特性打造的新框架。與Express相比,去除了一些框架自帶的功能,更加輕量級,可以讓開發(fā)者有更多的選擇。
當(dāng)然,這也意味著需要用戶自己去搭建這些環(huán)境。
簡單對比一下兩者,Express 發(fā)展得比較早,其生態(tài)系統(tǒng)比較豐富,很容易找到所需要的插件。Koa 則基于ES6 語言帶來一些新的特性,實時解決舊語言的一些問題,如回調(diào)等。
Python
Python 誕生得比較早,其語言特性是做事情只有一種方法,這個特點也決定了這門語言很簡單。與JavaScript 相比,它仍是一門性價比非常高的語言,只是它不能在前端運行。
Python 是一門簡潔的語言,有大量的數(shù)學(xué)、科學(xué)工具、人工智能的庫,這意味著在不遠的將來它會發(fā)揮更大的作用。同時在Web 開發(fā)領(lǐng)域也有廣泛的應(yīng)用,除了正常的Web開發(fā),它還在網(wǎng)絡(luò)爬蟲中廣受歡迎。
同樣,在Python 語言里也有兩個不錯的框架可以選擇,其中的Django 是重量級框架,F(xiàn)lask 則是輕量級框架。
Django:最早是被應(yīng)用于內(nèi)容管理系統(tǒng)而開發(fā)的,其框架里自帶了相當(dāng)多的組件:ORM、表單序列化及驗證系統(tǒng)、后臺系統(tǒng)、緩存框架、中間件支持等。在其官網(wǎng)上宣稱是:The Web framework for perfectionists with deadlines,它既可以滿足完美主義者,又可以在截止期限前交付軟件。Flask:是一個輕量級的框架,它只有簡單的核心部分。換句話說,你可以按自己的需要添加ORM、用戶認(rèn)證、文件上傳等功能。在今天來看,它的生態(tài)系統(tǒng)也相當(dāng)豐富,可以完成絕大部分功能。
選擇Flask 而不是選擇Django 的原因是:Django 本身規(guī)定好了一系列的規(guī)范和習(xí)慣。
因而在編程時,我們只需要按步驟一步步往下走即可。
本書采用 Django 作為Web 開發(fā)框架的主要原因是,它適合作為CMS 框架,并且提供了豐富的組件功能,如用戶權(quán)限管理、自帶后臺管理系統(tǒng)、ORM 等。
Java
在今天看來,Java 仍然受企業(yè)歡迎,除了在企業(yè)級Web 系統(tǒng)開發(fā)上,它還在Android應(yīng)用的開發(fā)上綻放光彩。
在校期間,筆者一點兒也不喜歡 Java。后來才發(fā)現(xiàn),我從 Java 中學(xué)到的東西比從其他語言中學(xué)的東西還多。如果 Oracle 不毀壞 Java,那么它會繼續(xù)存活很久。我可以用JavaScript 造出各種我想要的東西,但是通常我無法保證它們是優(yōu)雅地實現(xiàn)。過去人們在Java 上花費了很多時間,或在架構(gòu)上,或在語言上,或在模式上。由于這些投入,都給了人們很多啟發(fā)。這些都可以用于新的語言和新的設(shè)計,畢竟沒有什么技術(shù)是獨立于舊的技術(shù)產(chǎn)生的。
由于在 Java 語言里,筆者主要接觸的是 Spring 框架,因此下面討論一下 Spring。
Spring MVC:是由Spring 框架提供的構(gòu)建 Web 應(yīng)用程序的全功能 MVC 模塊。由于框架本身高度可配置,即可以直接使用編寫 XML 而不是 Java 來實現(xiàn)功能。它是一個典型的 MVC 框架,并且也是一個純正的servlet 系統(tǒng)。Spring Boot:其作用在于創(chuàng)建和啟動新的基于 Spring 框架的項目。系統(tǒng)本身做好了對不同框架的配置與集成,我們只需要對其配置,并編寫少量的代碼即可。
如果你正在考慮使用 Spring 框架,建議使用 Spring Boot。
PHP
PHP 是一門很容易上手的語言,由于其容易上手,并且發(fā)展得比較成熟。因此,有相多當(dāng)?shù)膫€人網(wǎng)站使用它作為開發(fā)語言,如 Facebook 這樣大流量的網(wǎng)站也在使用它。另外,不得不提及的是 WordPress 已經(jīng)占領(lǐng)了 CMS 市場超過一半的份額,并且它也占領(lǐng)了全球網(wǎng)站的四分之一。WordPress 原生是為博客系統(tǒng)而創(chuàng)建的開源框架,由于博客系統(tǒng)和內(nèi)容管理系統(tǒng)在功能上很多是相似的,因此它成了最具知名度的內(nèi)容管理系統(tǒng)(contentmanagement systemCMS)。
在這里并不基于 WordPress 來開發(fā)內(nèi)容管理系統(tǒng),因為它已經(jīng)是一個相當(dāng)成熟的框架了。如果你需要一個博客系統(tǒng)或者內(nèi)容管理系統(tǒng),首選 WordPress,然后才是自己編寫。
PHP 在框架方面有比較多的選擇,遺憾的是,筆者只對Laravel 比較了解。它是在PHP 5.3 之后開發(fā)的新框架,其類似于Ruby on Rails—為PHP 程序員提供快速開發(fā)的機制—提供快速開發(fā)的工具集,如生成代碼、數(shù)據(jù)遷移、ORM 等。
Ruby
Ruby 是一門優(yōu)美而巧妙的語言,它可以使編寫出來的代碼看上去更自然、簡潔,更具有表達力,因此深受程序員歡迎。早期 Ruby 語言的應(yīng)用場景特別少,直至Ruby OnRails 的出現(xiàn)。它是嚴(yán)格按照MVC 結(jié)構(gòu)開發(fā)的Web 開源框架,其致力于提升程序員的快樂感和生產(chǎn)效率—快速創(chuàng)建頁面、模板和查詢功能等。不過如今由于可維性和性能的問題,它正在逐漸被替換。只是對初創(chuàng)公司來說,它的開發(fā)效率仍使得它是一個不錯的選擇,隨后在業(yè)務(wù)穩(wěn)定后使用其他框架來替換。
同樣,由于Ruby On Rails 是一個重量級的選擇,Ruby 程序員也推出了自己的輕量級框架 Sinatra。它是一個基于Ruby 語言的DSL(領(lǐng)域?qū)僬Z言),由于其代碼行數(shù)少,且簡單、簡潔,可以很容易深入理解框架并對其做出定制。
其他
除了上面提到的語言,還有一些語言也很不錯,如Go、Scala 等。限于作者能力有限,以及篇幅的原因,在此就不展開詳細討論。
選擇框架和語言后,還需要在選型的時候考慮數(shù)據(jù)存儲的問題。
《全棧應(yīng)用開發(fā):精益實踐》
構(gòu)建全棧Web開發(fā)知識體系,含前端后端技術(shù)選型、構(gòu)建系統(tǒng)、上線部署、數(shù)據(jù)分析等內(nèi)容。