偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

你應(yīng)該知道的9款流行Web框架及其優(yōu)缺點

開發(fā) 前端
對于 Web 開發(fā)人員來說,找到一些合適的工具,能讓工作輕松許多。這其中,Web 框架更是提升工作效率的“利器”。但因為可選的 Web 框架非常多,如何選擇也是一件令人頭疼的事情。

對于 Web 開發(fā)人員來說,找到一些合適的工具,能讓工作輕松許多。這其中,Web 框架更是提升工作效率的“利器”。但因為可選的 Web 框架非常多,如何選擇也是一件令人頭疼的事情。

本文列出了9款目前比較流行的 Web 框架,并對優(yōu)缺點進行分析,希望能對大家有所幫助。(內(nèi)容主要編譯自Ken Mazaika的The 9 Most In-Demand Web Frameworks And What You Need To Know About Them

首先,

什么是 Web 框架?

當 Web 瀏覽器使用 HTTP 和在其他地方運行的服務(wù)器(計算機)通訊時,這些服務(wù)器會收到一些通知:

  • 所選的 URL

  • 如何輸入網(wǎng)址(通過表單提交或只是在瀏覽器欄中輸入網(wǎng)址)

服務(wù)器要干很多事情,比如:

  • 讀取數(shù)據(jù)庫里的數(shù)據(jù)和添加數(shù)據(jù)

  • 找到正確的結(jié)果(用戶是否被允許查看試圖訪問的頁面?是否要發(fā)送到不同的URL?等等)

  • 構(gòu)建用戶將看到的網(wǎng)頁

如果要提供更復雜的功能,就需要執(zhí)行更多的步驟。作為開發(fā)人員,則需要對想要的功能列出一系列解決方案。Web 框架就是其中可選的解決方案之一。

進入正題:

1、Ruby on Rails

 

編程語言:Ruby

簡介:

Ruby on Rails 是一個已經(jīng)被許多公司采用的 Web 框架,是 Ruby 編程語言中 Web 框架的鼻祖,獲得了大量開發(fā)者的采用。DHH(Rails 的創(chuàng)始人)曾用它15分鐘左右創(chuàng)建一個博客

Rails 的一大特點是約定優(yōu)于配置(convention over configuration)。這意味著,它比較模式化、標準化和“約定化”,開發(fā)者通常做的是相同的事情,可以讓代碼寫到最少。 

Rails 還使用了 MVC(Model-View-Controller),讓架構(gòu)更有組織性,更周密。

優(yōu)點:

  • Rails 具有強大的命令行界面,通過幾個簡單的命令就能在新的應(yīng)用上啟動和運行。

  • Rails 已經(jīng)存在很長時間了,并且廣泛被使用,網(wǎng)絡(luò)上有很多關(guān)于它的教程。

  • Rails 簡單易用,即便是復雜的問題,也能相對快速解決。

缺點:

  • Rails 自動掛鉤了很多東西。啟動器里就包含很多文件,并且有相當多的配置代碼是自動編寫的,有些人可能會對此擔心。

整體來看,鑒于其靈活性及便捷性,Rails 是一個非常理想的 Web 框架,值得初學者優(yōu)先學習。

2、Sinatra

 

編程語言:Ruby

簡介:

上面的5行代碼就是做一個***限度配置的空 Web 應(yīng)用所需要的全部代碼, 如果拿它和 Ruby on Rails 進行比較,會發(fā)現(xiàn)它需要的代碼更少(而且只有一個文件,而不是幾十個)。

然而,Sinatra 的簡單性是一把雙刃劍。 它用的是和 Ruby on Rails 相反的方法,需要開發(fā)者手動配置所有的東西。

 

[[178086]]

優(yōu)點:

  • Sinatra 是輕量級框架的領(lǐng)頭羊。

  • Sinatra 高度可配置,注重開發(fā)的自由度。

缺點:

  • 由于不側(cè)重“慣例”,沒有相同的文件夾結(jié)構(gòu),所以會比較難去理解現(xiàn)有的 Sinatra 應(yīng)用。 

  • Sinatra 不常用于實際生產(chǎn)項目當中。

  • 手動配置很多東西往往需要更多的時間,效率會受影響。

3、ExpressJS

 

編程語言:JavaScript

簡介

ExpressJS 是一個 JavaScript Web 框架,基于 Node.js??雌饋碛袥]有熟悉,它的代碼非常類似 Sinatra 的代碼,也有和 Sinatra 相似的簡單性。 在一個準 Express 應(yīng)用中只有兩個代碼文件:

  • package.json,這是 NPM 自動生成的文件。

  • app.js,這里包含著應(yīng)用程序的完整代碼。

優(yōu)點

  • 高靈活性。

  • 可以只使用一種編程語言。

  • 輕量。

缺點

  • 更多選項=更多選擇。 選擇意味著需要研究不同的選項,找出將它們應(yīng)用到自己的項目當中的方法,這往往需要更多時間。

4、SailsJS

 

編程語言:Javascript

簡介

SailsJS 可以看成是 JavaScript 版的 Rails,有一個命令行工具去生成一個完整的默認應(yīng)用程序,自帶許多合理的默認配置和數(shù)值。

同樣,Sails 也有 MVC 架構(gòu),啟動一個完整的應(yīng)用也會有數(shù)十個默認的文件。

優(yōu)點

  • 有許多默認已配置好的方法完成構(gòu)建 Web 應(yīng)用所涉及的大部分工作。 

  • 命令行程序使得構(gòu)建新應(yīng)用和功能更為輕松。

缺點

  • 盡管是一個看起來很強大的框架,人氣也不低,但是并沒有多少公司采用。

5、MEAN 堆棧

 

編程語言:JavaScript

簡介

MEAN 是 ExpressJS 的擴展,堆棧了如 MongoDB、AngularJS 和 WebPack 等技術(shù)。MEAN 用JavaScript 一種語言來驅(qū)動整個應(yīng)用。

MongoDB 是一個在概念上與其他大多數(shù)據(jù)庫有較大區(qū)別的數(shù)據(jù)庫,它允許 JSON 數(shù)據(jù)在其中自由隨意,這意味著數(shù)據(jù)庫條目是靈活的,但同時也導致無效的記錄成了一個非常容易遇到的問題。它不是通過 SQL 與數(shù)據(jù)庫交互,而是使用其獨有的 JavaScript。

優(yōu)點

  • 與 SailsJS 一樣,MEAN 堆棧包含構(gòu)建復雜 Web 應(yīng)用所需的所有組件。

缺點

  • 頁面加載要兩個階段,而且***階段看起來有點搞笑。發(fā)生這種情況是因為視圖不是在服務(wù)器端呈現(xiàn),而只在瀏覽器中呈現(xiàn)。這意味著用戶最初看到的是不完整的頁面,頁面的完整內(nèi)容要過一會才能加載。

  • MEAN 堆棧包含許多技術(shù),如 MongoDB,在其他框架中構(gòu)建 Web 應(yīng)用時通常不使用這些技術(shù)。

補充幾句個人觀點

這個包含 MongoDB 的框架對我來說毫無意義,幾乎所有其他 Web 框架都使用標準數(shù)據(jù)庫 SQL。在我看來,MEAN 堆??赡苤辉谀切? MongoDB 真正“發(fā)光發(fā)熱”的場景中有價值,但 Mongo 又是一個在高負載的時候才需要的東西,比如廣告網(wǎng)絡(luò)和 API 負載高的時候。

不可否認 MEAN 在某些情況下是有意義的,但對于典型的 Web 應(yīng)用,我不太建議使用。因為 MEAN 在應(yīng)用的每一個部分只使用 JavaScript 編程語言,這聽起來會很容易掌握,但是像 MongoDB 和 WebPack 這樣的東西使得 MEAN 實際上比那些解決問題的“標準”技術(shù)更困難。 

6、Django

 

編程語言:Python

簡介

Django 是一個運行在 Python 上的 MVC Web 框架。 它也有一些打開即用的配置,它與 Ruby on Rails 框架有許多相似之處,也有不少區(qū)別。 這個 Web 框架改變了控制器和視圖的職責,但毫無疑問它是一個優(yōu)秀的 Web 框架。

優(yōu)點

  • 輕量、少配置。

  • 提供完整的開發(fā)堆棧,同時仍然遵循 Python 的“清晰”語言的設(shè)計理念,允許在快速開發(fā)和長期維護之間實現(xiàn)平衡。

注意

  • Python 是一種類似于 Ruby 的語言,但它們的使用者會有不同的領(lǐng)域傾向, 通常使用 Python 的開發(fā)人員往往是在數(shù)據(jù)科學、統(tǒng)計或分析領(lǐng)域工作。

7、Tornado

 

編程語言:Python

簡介

Tornado 是一個沒有怎么宣傳的 Python Web 框架,它快速、高效,并允許開發(fā)人員訪問 python 的大數(shù)據(jù)庫。

優(yōu)點

  • 在需要短時間內(nèi)發(fā)生許多請求的情況下是優(yōu)秀的。

缺點

  • 結(jié)構(gòu)的缺乏導致應(yīng)用相互不同。

  • 對于初學者來說,擁有太多的自由可能會導致亂碼。在其他的框架中有過經(jīng)驗的開發(fā)人員更愿意以深思熟慮的方式去構(gòu)建應(yīng)用。

8、Play

 

編程語言:Java 或 Scala

簡介

Play 同樣是一個輕量級的、無狀態(tài)的 Web 框架,學到了 rails 的優(yōu)點,使用構(gòu)建在 Akka 之上的完全異步模型,提供可預測的和最小的資源消耗(CPU,內(nèi)存,線程)。

優(yōu)點

  • 在 Java 虛擬機上運行,Play 是***效的編程環(huán)境之一。

缺點

  • 大多數(shù) Web 應(yīng)用都是用所謂的“腳本語言”構(gòu)建的,允許快速更改頁面的視覺效果。 Java 增加了一個稱為“編譯”的步驟,需要在應(yīng)用的更改之間進行。

9、Laravel

 

編程語言:PHP

簡介

Laravel 是一個用 PHP 編寫的框架。 10年前,PHP 是幾乎所有 Web 應(yīng)用構(gòu)建的標準編程語言,不過如今,受 Ruby、JavaScript 和 Python 影響,PHP 失去了很大的市場份額。

盡管如此,Laravel 仍是一個非常成熟的框架,允許使用 PHP 構(gòu)建漂亮的代碼。

優(yōu)點

  • Laravel 是一個很***的 MVC 框架,借鑒了 Ruby on Rails 框架中使用的許多架構(gòu)決策。

缺點

  • 使用 PHP 的開發(fā)人員和產(chǎn)品在減少(原文是這么寫的^_^)

***再說點

看完上面列出的這些不同的框架,很容易發(fā)現(xiàn)它們有互相在尋找靈感,許多功能、特性其實還蠻相似的。所以,說哪個好哪個不好,并沒有什么意義,找到合適自己的才是關(guān)鍵。上面的框架可以簡單分為兩種類型:

一、簡約框架

ExpressJS、Tornado 和 Sinatra 都是簡約框架,他們提供啟動需要的***配置。

這些框架需要開發(fā)人員手動添加每個單獨的組件,給予足夠的自由度去完成項目。此外,通過強制自己配置應(yīng)用的各方各面,可以掌控更多主動權(quán),并在每種情況下都使用理想的工具。

當然,也有一些缺點。會經(jīng)常發(fā)現(xiàn)自己處于需要分析不同選項并做出很多選擇的情況下。

二、Omakase 框架

Rails、SailsJS、MEAN.io、Laravel 和 Play 都是 Omakase 框架,它們建議開發(fā)者以某種“正確”的方式編寫代碼,并且給出社區(qū)標準。

這些框架提供開發(fā)所需要的一切,打開即可編程。如果想使用其他的東西,它們還允許選擇停用。構(gòu)建這些框架的開發(fā)人員已經(jīng)為后來者做出了一些關(guān)鍵決策,因此可以遵循他們建議使用的模式。

這對初學者來說有很大的優(yōu)勢,初學者往往在學習 Web 框架的時候,你還需要學習數(shù)據(jù)庫、HTTP 請求、設(shè)置應(yīng)用在 Internet 上運行等等知識。由于有一個被廣泛接受的社區(qū)標準,學習一個像 Rails 這樣的 Web 框架可以:

  • 了解社區(qū)如何同意以正確的方式做某事。

  • 有時間思考其他編程概念,學習其他知識。

  • 一旦學習了某個框架社區(qū)的建議,將有經(jīng)驗來更好地評估其他框架。

責任編輯:張燕妮 來源: 開源中國社區(qū)
相關(guān)推薦

2019-09-09 10:03:46

Python 開發(fā)編程語言

2025-02-27 09:00:00

RAG檢索增強生成RAG框架

2018-07-11 09:27:40

Java框架應(yīng)用程序

2009-12-01 18:36:51

2023-12-07 08:35:22

2023-07-06 14:07:30

2019-10-31 11:16:57

Web框架Angular

2022-07-26 14:19:25

開發(fā)前端Web

2017-04-21 21:25:12

操作系統(tǒng)國產(chǎn)

2018-02-06 09:40:25

PythonOOP繼承

2013-05-13 01:16:15

Mobile Web webapp

2021-01-28 17:26:57

LoRa網(wǎng)絡(luò)架構(gòu)網(wǎng)絡(luò)技術(shù)

2020-10-18 07:37:24

微前端框架前端

2018-12-20 14:28:45

程序員開源支付系統(tǒng)

2019-10-16 09:37:33

流行監(jiān)控系統(tǒng)

2020-04-23 15:42:44

Web前端技術(shù)

2019-01-31 11:11:30

前端開發(fā)框架

2011-03-21 13:01:10

2011-05-07 15:30:27

噴墨打印機技術(shù)優(yōu)缺點

2014-03-28 15:36:43

移動WebJavaScript開發(fā)框架
點贊
收藏

51CTO技術(shù)棧公眾號