探讨后端选型中不同语言及对应的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 等。限于作者能力有限,以及篇幅的原因,在此就不展开详细讨论。
  选择框架和语言后,还需要在选型的时候考虑数据存储的问题。
  本文选自《全栈应用开发:精益实践》,点此链接可在博文视点官网查看此书。
                      图片描述
  想及时获得更多精彩文章,可在微信中搜索“博文视点”或者扫描下方二维码并关注。
                         图片描述

相关文章
|
15天前
|
前端开发 JavaScript 关系型数据库
从前端到后端:构建现代化Web应用的技术探索
在当今互联网时代,Web应用的开发已成为了各行各业不可或缺的一部分。从前端到后端,这篇文章将带你深入探索如何构建现代化的Web应用。我们将介绍多种技术,包括前端开发、后端开发以及各种编程语言(如Java、Python、C、PHP、Go)和数据库,帮助你了解如何利用这些技术构建出高效、安全和可扩展的Web应用。
|
30天前
|
API 数据库 数据安全/隐私保护
利用Django框架构建高效后端API服务
本文将介绍如何利用Django框架构建高效的后端API服务。通过深入分析Django框架的特性和优势,结合实际案例,探讨了如何利用Django提供的强大功能来构建高性能、可扩展的后端服务。同时,还对Django框架在后端开发中的一些常见问题进行了解决方案的探讨,并提出了一些建设性的建议。
51 3
|
15天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
|
1月前
|
缓存 关系型数据库 API
后端开发:构建高效、可扩展的Web应用程序的关键
后端开发:构建高效、可扩展的Web应用程序的关键
21 0
|
8天前
|
缓存 负载均衡 数据库
优化后端性能:提升Web应用响应速度的关键策略
在当今数字化时代,Web应用的性能对于用户体验至关重要。本文探讨了如何通过优化后端架构和技术手段,提升Web应用的响应速度。从数据库优化、缓存机制到异步处理等多个方面进行了深入分析,并提出了一系列实用的优化策略,以帮助开发者更好地应对日益增长的用户访问量和复杂的业务需求。
12 1
|
9天前
|
前端开发 数据挖掘 API
使用Python中的Flask框架进行Web应用开发
【4月更文挑战第15天】在Python的Web开发领域,Flask是一个备受欢迎的轻量级Web框架。它简洁、灵活且易于扩展,使得开发者能够快速地构建出高质量的Web应用。本文将深入探讨Flask框架的核心特性、使用方法以及在实际开发中的应用。
|
21天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南
|
25天前
|
前端开发 JavaScript 数据管理
描述一个使用Python开发Web应用程序的实际项目经验,包括所使用的框架和技术栈。
使用Flask开发Web应用,结合SQLite、Flask-SQLAlchemy进行数据管理,HTML/CSS/JS(Bootstrap和jQuery)构建前端。通过Flask路由处理用户请求,模块化代码提高可维护性。unittest进行测试,开发阶段用内置服务器,生产环境可选WSGI服务器或容器化部署。实现了用户注册登录和数据管理功能,展示Python Web开发的灵活性和效率。
14 4
|
1月前
|
数据库
最全三大框架整合(使用映射)——struts.xml和web.xml配置
最全三大框架整合(使用映射)——数据库资源文件jdbc.properties
10 0
|
1月前
|
前端开发 API 网络架构
Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!
Python 如何开发出RESTful Web接口,DRF框架助力灵活实现!