对于Web开发人员来说,找到一些合适的工具,能让工作轻松许多。这其中,Web框架更是提升工作效率的“利器”。但因为可选的Web框架非常多,如何选择也是一件令人头疼的事情。

本文列出了9款目前比较流行的Web框架,并对优缺点进行分析,希望能对大家有所帮助。(内容主要编译自Ken Mazaika的The 9 Most In-Demand Web Frameworks And What You Need To Know About Them)

首先,什么是Web框架?

当Web浏览器使用HTTP和在其他地方运行的服务器(计算机)通讯时,这些服务器会收到一些通知:

所选的URL

如何输入网址(通过表单提交或只是在浏览器栏中输入网址)

服务器要干很多事情,比如:

读取数据库里的数据和添加数据

找到正确的结果(用户是否被允许查看试图访问的页面?是否要发送到不同的URL?等等)

构建用户将看到的网页

如果要提供更复杂的功能,就需要执行更多的步骤。作为开发人员,则需要对想要的功能列出一系列解决方案。Web框架就是其中可选的解决方案之一。

进入正题:

1、Ruby on Rails

编程语言:Ruby

简介:

Ruby on Rails是一个已经被许多公司采用的Web框架,是Ruby编程语言中Web框架的鼻祖,获得了大量开发者的采用。DHH(Rails的创始人)曾用它15分钟左右创建一个博客。

Rails的一大特点是约定优于配置(convention over configuration)。这意味着,它比较模式化、标准化和“约定化”,开发者通常做的是相同的事情,可以让代码写到最少。

Rails还使用了MVC(Model-View-Controller),让架构更有组织性,更周密。

优点:

Rails具有强大的命令行界面,通过几个简单的命令就能在新的应用上启动和运行。

Rails已经存在很长时间了,并且广泛被使用,网络上有很多关于它的教程。

Rails简单易用,即便是复杂的问题,也能相对快速解决。

缺点:

Rails自动挂钩了很多东西。启动器里就包含很多文件,并且有相当多的配置代码是自动编写的,有些人可能会对此担心。

整体来看,鉴于其灵活性及便捷性,Rails是一个非常理想的Web框架,值得初学者优先学习。

2、Sinatra

编程语言:Ruby

简介:

上面的5行代码就是做一个最低限度配置的空Web应用所需要的全部代码,如果拿它和Ruby on Rails进行比较,会发现它需要的代码更少(而且只有一个文件,而不是几十个)。

然而,Sinatra的简单性是一把双刃剑。它用的是和Ruby on Rails相反的方法,需要开发者手动配置所有的东西。

优点:

Sinatra是轻量级框架的领头羊。

Sinatra高度可配置,注重开发的自由度。

缺点:

由于不侧重“惯例”,没有相同的文件夹结构,所以会比较难去理解现有的Sinatra应用。

Sinatra不常用于实际生产项目当中。

手动配置很多东西往往需要更多的时间,效率会受影响。

3、ExpressJS

编程语言:JavaScript

简介:

ExpressJS是一个JavaScript Web框架,基于 Node.js。看起来有没有熟悉,它的代码非常类似Sinatra的代码,也有和Sinatra相似的简单性。在一个准 Express应用中只有两个代码文件:

package.json,这是NPM自动生成的文件。

app.js,这里包含着应用程序的完整代码。

优点:

高灵活性。

可以只使用一种编程语言。

轻量。

缺点:

更多选项=更多选择。选择意味着需要研究不同的选项,找出将它们应用到自己的项目当中的方法,这往往需要更多时间。

4、SailsJS

编程语言:Javascript

简介:

SailsJS可以看成是JavaScript版的Rails,有一个命令行工具去生成一个完整的默认应用程序,自带许多合理的默认配置和数值。

同样,Sails也有MVC架构,启动一个完整的应用也会有数十个默认的文件。

优点:

有许多默认已配置好的方法完成构建Web应用所涉及的大部分工作。

命令行程序使得构建新应用和功能更为轻松。

缺点:

尽管是一个看起来很强大的框架,人气也不低,但是并没有多少公司采用。

5、MEAN堆栈

编程语言:JavaScript

简介:

MEAN是ExpressJS的扩展,堆栈了如MongoDB、AngularJS和WebPack等技术。MEAN 用JavaScript一种语言来驱动整个应用。

MongoDB是一个在概念上与其他大多数据库有较大区别的数据库,它允许JSON数据在其中自由随意,这意味着数据库条目是灵活的,但同时也导致无效的记录成了一个非常容易遇到的问题。它不是通过SQL与数据库交互,而是使用其独有的JavaScript。

优点:

与SailsJS一样,MEAN堆栈包含构建复杂Web应用所需的所有组件。

缺点:

页面加载要两个阶段,而且第一阶段看起来有点搞笑。发生这种情况是因为视图不是在服务器端呈现,而只在浏览器中呈现。这意味着用户最初看到的是不完整的页面,页面的完整内容要过一会才能加载。

MEAN堆栈包含许多技术,如MongoDB,在其他框架中构建Web应用时通常不使用这些技术。

补充几句个人观点:

这个包含MongoDB的框架对我来说毫无意义,几乎所有其他Web框架都使用标准数据库SQL。在我看来,MEAN堆栈可能只在那些MongoDB真正“发光发热”的场景中有价值,但Mongo又是一个在高负载的时候才需要的东西,比如广告网络和API负载高的时候。

不可否认MEAN在某些情况下是有意义的,但对于典型的Web应用,我不太建议使用。因为MEAN在应用的每一个部分只使用JavaScript编程语言,这听起来会很容易掌握,但是像MongoDB和WebPack这样的东西使得MEAN实际上比那些解决问题的“标准”技术更困难。

6、Django

编程语言:Python

简介:

Django是一个运行在Python上的MVC Web框架。它也有一些打开即用的配置,它与Ruby on Rails框架有许多相似之处,也有不少区别。这个Web框架改变了控制器和视图的职责,但毫无疑问它是一个优秀的Web框架。

优点:

轻量、少配置。

提供完整的开发堆栈,同时仍然遵循Python的“清晰”语言的设计理念,允许在快速开发和长期维护之间实现平衡。

注意:

Python是一种类似于Ruby的语言,但它们的使用者会有不同的领域倾向,通常使用Python的开发人员往往是在数据科学、统计或分析领域工作。

7、Tornado

编程语言:Python

简介:

Tornado是一个没有怎么宣传的Python Web框架,它快速、高效,并允许开发人员访问python的大数据库。

优点:

在需要短时间内发生许多请求的情况下是优秀的。

缺点:

结构的缺乏导致应用相互不同。

对于初学者来说,拥有太多的自由可能会导致乱码。在其他的框架中有过经验的开发人员更愿意以深思熟虑的方式去构建应用。

8、Play

编程语言:Java或Scala

简介:

Play同样是一个轻量级的、无状态的Web框架,学到了rails的优点,使用构建在Akka之上的完全异步模型,提供可预测的和最小的资源消耗(CPU,内存,线程)。

优点:

在Java虚拟机上运行,Play是最高效的编程环境之一。

缺点:

大多数Web应用都是用所谓的“脚本语言”构建的,允许快速更改页面的视觉效果。Java增加了一个称为“编译”的步骤,需要在应用的更改之间进行。

9、Laravel

编程语言:PHP

简介:

Laravel是一个用PHP编写的框架。10年前,PHP是几乎所有Web应用构建的标准编程语言,不过如今,受Ruby、JavaScript和Python影响,PHP失去了很大的市场份额。

尽管如此,Laravel仍是一个非常成熟的框架,允许使用PHP构建漂亮的代码。

优点:

Laravel是一个很完美的MVC框架,借鉴了Ruby on Rails框架中使用的许多架构决策。

缺点:

使用PHP的开发人员和产品在减少(原文是这么写的^_^)

最后再说点

看完上面列出的这些不同的框架,很容易发现它们有互相在寻找灵感,许多功能、特性其实还蛮相似的。所以,说哪个好哪个不好,并没有什么意义,找到合适自己的才是关键。上面的框架可以简单分为两种类型:

一、简约框架

ExpressJS、Tornado和Sinatra都是简约框架,他们提供启动需要的最低配置。

这些框架需要开发人员手动添加每个单独的组件,给予足够的自由度去完成项目。此外,通过强制自己配置应用的各方各面,可以掌控更多主动权,并在每种情况下都使用理想的工具。

当然,也有一些缺点。会经常发现自己处于需要分析不同选项并做出很多选择的情况下。

二、Omakase框架

Rails、SailsJS、MEAN.io、Laravel和Play都是Omakase框架,它们建议开发者以某种“正确”的方式编写代码,并且给出社区标准。

这些框架提供开发所需要的一切,打开即可编程。如果想使用其他的东西,它们还允许选择停用。构建这些框架的开发人员已经为后来者做出了一些关键决策,因此可以遵循他们建议使用的模式。

这对初学者来说有很大的优势,初学者往往在学习Web框架的时候,你还需要学习数据库、HTTP请求、设置应用在Internet上运行等等知识。由于有一个被广泛接受的社区标准,学习一个像Rails这样的Web框架可以:

了解社区如何同意以正确的方式做某事。

有时间思考其他编程概念,学习其他知识。

一旦学习了某个框架社区的建议,将有经验来更好地评估其他框架。

python web框架哪个好_盘点:9款流行Web框架及其优缺点相关推荐

  1. c++编辑器_盘点四款PDF编辑器,使用它们,编辑PDF文件没问题!

    原标题:盘点四款PDF编辑器,使用它们,编辑PDF文件没问题! 在我们日常学习和日常工作中,我们有时会遇见将PDF文件进行编辑的问题.有时候是添加图片,插入文字,有时候是拆分PDF,修改PDF文件. ...

  2. 火狐web开发清楚缓存_如何使用Firefox的Web开发工具

    火狐web开发清楚缓存 Firefox's Web Developer menu contains tools for inspecting pages, executing arbitrary Ja ...

  3. web td不对齐_珍稀干货!阿里 Web 音视频开发趟坑指南

    作者 | 阿里文娱前端技术专家 归影 责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 这不是一篇基于MSE开发Web播放器的入门文章,而是围绕Web播放器开发遇到的常见问题与解决方案,毕 ...

  4. rust和gta5哪个吃配置_盘点4款Steam“自由度”很高的游戏,GTA5众所周知,目前最热门...

    原标题:盘点4款Steam"自由度"很高的游戏,GTA5众所周知,目前最热门 大家好今天小编给大家带来的是"盘点4款Steam"自由度"很高的游戏,G ...

  5. python websocket异步高并发_高并发异步uwsgi+web.py+gevent

    为什么用web.py? python的web框架有很多,比如webpy.flask.bottle等,但是为什么我们选了webpy呢?想了好久,未果,硬要给解释,我想可能原因有两个:第一个是兄弟项目组用 ...

  6. python有必要看数据结构_盘点 Python 10 大常用数据结构(上篇)

    我的施工计划,已完成专题: Python 常用数据结构 学习目的 这个专题,尽量使用最精简的文字,借助典型案例盘点Python常用的数据结构. 如果你还处于Python入门阶段,通常只需掌握list. ...

  7. python自动化办公教程书籍_盘点使用Python进行自动化办公所需要的知识点

    知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,批量处理 ...

  8. python的自带数据集_盘点 | Python自带的那些数据集

    01 Seaborn自带数据集 在学习Pandas透视表的时候,大家应该注意到,我们使用的案例数据"泰坦尼克号"来自于seaborn自带的在线数据库,我们可以通过seaborn提供 ...

  9. python可视化案例书籍推荐_这5款Python可视化神器,总有一款适合你!

    我们都知道视觉是人们很重要的一种感官,而Python中可视化,在数据相关的研发中也起到"一木支危楼"的作用.如果从直接查看离线存储在各类数据库中杂乱无章的数据,会让人瞬间感到崩溃且 ...

最新文章

  1. 文件系统vs对象存储——选型和趋势
  2. jenkins配置git出现ERROR: Timeout after 10 minutes 同时命令行出现:Enter passphrase for key 的提示
  3. wkwebview html5页面,iOS使用WKWebView加载HTML5不显示屏幕宽度的问题解决
  4. Flink 广播变量
  5. 1k字让你理解死锁是什么?
  6. sql 在排序后limit 查询疑问
  7. H.264标准(三)F4V封装格式详解
  8. Apache认证(目录)
  9. 关于SETUP FACTORY %AppFolder%写入注册表问题
  10. android 查看cad方案,android 加载dwg 图纸解决方案
  11. 第四章_思科ASDM网管系统搭建(java环境,jdk环境)
  12. 获取TrustedInstaller权限
  13. 2019426 SPSS入门学习
  14. 疫情下,裁员补偿标准不可不知
  15. iOS 地图坐标说明
  16. 如何把小程序游戏运行到自有app中?
  17. java转大写_java实现数字转大写的方法
  18. os模块的使用方法详解
  19. 微信官方开发者工具如何导入小程序源码demo
  20. [2019蓝桥杯国赛B组c++][最优包含][排列数][解谜游戏][第八大奇迹]

热门文章

  1. uva 11997(优先队列)
  2. Mathematica图片修复
  3. java之IO整理(下)
  4. Java知识积累——同时输出到控制台和指定文件,或直接输出到指定文件
  5. 八、开发者工具和指南(三) Source code organization
  6. 睿停车系统车场服务器,睿停车后台管理中心系统-用户手册-前台版本
  7. php设计要求,《PHP设计模式介绍》第十章 规范模式
  8. esper(4-2)-Category Context
  9. 数据结构——数组、单向链表、双向链表
  10. 怎样在WIN7系统下安装IIS和配置ASP