在进行后端选型的时候,实际上我们要选择的是一个框架。后端领域所使用的技术和框架已经趋于稳定,我们只需要按我们的需要选择所需要的框架。当存在多个框架适合时,我们再选择适合的语言。不得不指出的是,当我们喜爱一个语言的时候,我们可能会偏爱于在这门语言里寻找可用的方案。这自然是有好有坏,好的一点是:我们可以成为这门语言的专家,不好的一点是:我们可能选择的不是最合适的方案。

让我们先来探索一下可用的语言,以及它们对应的 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原生是为博客系统而创建的开源框架,由于博客系统和内容管理系统在功能上很多是相似的,也因此它成为了最具知名度的内容管理系统(CMS,content management system)。

在这里我们并不基于 WordPress 来开发我们的内容管理系统,因为它已经是一个相当成熟的框架了。如果你需要一个博客系统或者内容管理系统,首先先写 WordPress,然后再自己编写一下吧。

PHP在框架方面有比较多的选择,遗憾的是笔者只对Laravel比较了解。它是在PHP 5.3之后开发的新框架,其类似于Ruby on Rails——为PHP程序员提供快速开发的机制——提供快速开发的工具集,如生成代码、数据迁移、ORM等等。

Ruby

Ruby是一门优美而巧妙的语言,它可以使编写出来的代码看上去更自然、简洁,更具有表达力,因此而受程序员欢迎。早期 Ruby 语言的应用场景特别少,直至Ruby On Rails的出现。它是严格按照MVC结构开发的Web开源框架,其致力于提升程序员的快乐感和生产效率——快速创建页面、模板和查询功能等等。不过在今天由于可维性和性能的问题,它正在逐渐被替换。只是对于初创公司来说,它的开发效率仍使得它是一个不错的选择,随后在业务稳定后使用其他框架来替换。

同样的,由于 Ruby On Rails是一个重量级的选择,Ruby程序员也推出了自己的轻量级框架 Sinatra。它是一个基于Ruby语言的DSL( 领域专属语言),由于其代码行数少,简单简洁,可以很容易深入理解框架并对其做出定制。

其他 除了上面我们提到的语言,还有一些语言也很不错,如Go、Scala等等。限于作者能力有限以及篇幅的原因就不展开详细的讨论。

节选自:《全栈应用开发:精益实践》

Python学习交流群【 784758214 】群内有安装包和学习视频资料,零基础,进阶,实战免费的在线直播免费课程,希望可以帮助你快速了解Python

转载于:https://juejin.im/post/5bd2e272e51d457abc710b74

后端选型中不同语言及对应的Web框架相关推荐

  1. 探讨后端选型中不同语言及对应的Web框架

    在进行后端选型的时候,实际上我们要选择的是一个框架.后端领域所使用的技术和框架已经趋于稳定,我们只需要按我们的需要选择所需要的框架.当存在多个框架适合时,我们再选择适合的语言.不得不指出的是,当我们喜 ...

  2. dotweb——go语言的一个微型web框架(二)启动dotweb

    以上的代码截图表示启动一个dotweb服务,在浏览器里输入127.0.0.1:8080,将会得到一个"index"的页面. app := dotweb.New() dotweb.N ...

  3. go语言 echo框架_如何在Go Echo Web框架中设置嵌套HTML模板

    go语言 echo框架 by Ying Kit Yuen 英杰苑 如何在Go Echo Web框架中设置嵌套HTML模板 (How to setup a nested HTML template in ...

  4. 主流的6个Go语言Web框架

    GO 语言爱好者的最佳Web框架 如果你是自己写一个小应用程序,那你可能不需要Web框架.但是如果你要做产品,那么你肯定需要一个好的框架. 如果你认为你有相应的知识和经验,你会自己编写所有的这些代码么 ...

  5. 框架的特性_Go 语言 Web 框架 Echo 系列:基础篇—通过一个例子串联各特性

    通过前面的介绍,相信对 echo 有了一个初步的认识.本文我们通过一个简单的登录页面来串联 echo 的相关特性.因为该文主要关注各个特性,所以在目录结构和代码组织方面很随意. 本节最终效果 1)登录 ...

  6. Go语言优秀Web框架

    一.框架 Beego: 一个Go语言下开源的,高性能Web框架 * https://github.com/astaxie/beego * https://beego.me Buffalo: 一个Go语 ...

  7. 大红大紫的 Golang 真的是后端开发中的万能药吗?

    随着容器编排(Container Orchestration).微服务(Micro Services).云技术(Cloud Technology)等在 IT 行业不断盛行,2009 年诞生于 Goog ...

  8. web后端语言_C/C++作为web后端语言的缺点

    C/C++ C 语言虽然是非常贴近操作系统的语言,能和操作系统 API 很好的交互,但是 C 语言并没有现代化工程开发所需要的面向对象功能,当然也缺乏泛型之类的功能,如果以 CGI 的形式开发,那么缺 ...

  9. 前后端分离中的权限管理思路

    在传统的前后端不分的开发中,权限管理主要通过过滤器或者拦截器来进行(权限管理框架本身也是通过过滤器来实现功能),如果用户不具备某一个角色或者某一个权限,则无法访问某一个页面. 但是在前后端分离中,页面 ...

最新文章

  1. Linux-Bind-DNS服务器配置实例
  2. 2019-06-12 学习日记 day33 JDBC
  3. win7下搭建GO开发环境 - eclipse 配置GO开发
  4. Vue2+VueRouter2+webpack 构建项目实战(二):目录以及文件结构
  5. java开发 时间类型的转换
  6. css 列表相关的属性 列表前的小点点 0302
  7. Oracle数据库文件路径变更
  8. 【干货】微信小程序如何设置背景图片
  9. [C/C++] 按行读取文件
  10. String和StringBuffer与StringBuilder的区别
  11. linux内核打补丁步骤
  12. java实习面试题整理
  13. cvpr 2018 image caption generation论文导读(含workshop)
  14. html选择器优先级如何计算,CSS选择器权重计算与优先级
  15. IPFS独角兽西部世界解读:销毁的近2000万FIL去哪里了?
  16. 可以边下边看的BT资源搜索下载工具:Tribler免费版
  17. 字母对应的日期 moment Element JAVA oracle mysql的日期格式
  18. Golang底层原理剖析之上下文Context
  19. 索尼T700完全用机指南【转自太平洋电脑网】
  20. 【论文阅读】Realtime Robust Malicious Traffic Detection via Frequency Domain Analysis

热门文章

  1. 关于python直接用列表名复制的一些问题 以及 python 子串查找
  2. VS2019项目打包生成.exe文件与Setup的步骤实现
  3. Linux /etc/group文件解析(超详细)
  4. Linux 编译运行查找头文件和库的顺序
  5. SQL数据库权限授予grant
  6. 关于优酷开放SDK相应的mediaplayer的监听器的设置之setOnBufferingUpdateListener
  7. A Simple Math Problem
  8. 5G NR 定时提前 Timing advance
  9. tp5 隐藏index.php
  10. 手写的奇怪vector