最近几年一直使用Node.js作为后端服务平台,通过Koa2框架中间件快速搭建Web服务,但是使用JavaScript开发大型后端服务时会使程序变得难以维护,继而使用TypeScript语言开发,使编译、调试、检查和代码管理变得更加容易。

下图是使用Koa2框架搭建后端服务的思维导图:


一、Node.js

介绍:一个开源的、跨平台的JavaScript运行时环境。类似于C#的.NetFramewok,Java的JRE。

优点:

  1. 超强的并发能力;

  2. 单线程的高性能并行非阻碍I/O,基于事件驱动;

  3. 前后端开发语言一致,开发效率高;

  4. 微服务和SeverLess开发更具优势;

不足:

  1. 不适合计算密集型应用;

  2. 不适合大内存应用;

  3. 不适合大量同步应用。

使用场景:

  1. 开发Web服务Api,比如RESTful API;

  2. 服务器渲染页面,提升速度;

  3. 后端的 Web服务,例如跨域、服务器端的请求。

应用方向:

  1. 善于 I/O,天生异步的特点让其非常擅长进行任务调度和处理并发 I/O,但不善于计算;

  2. 业务方向:网站开发、即时通信、小程序开发、跨平台开发等;

  3. Node.js 过于追求性能而导致健壮性有所不足,所以不适用于银行、证券等方向,但适合创业公司这种小体量、追求性能的公司;

  4. 大型企业在客户端和服务器端直接加设Node.js,适合用Node.js做的就尽量用成本低回报高的Node.js来做。


二、Koa2

介绍:基于 Node.js 平台的下一代 web 开发框架。由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 Koa 编写 Web 应用,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理的效率。Koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手,最大的特点就是可以避免异步嵌套。利用ES7的async/await特性,极大的解决了我们在做Node.js开发的时候异步给我们带来的烦恼。

优点和不足:非常简单,而且极度自由,这种理念是优点也是缺点。


三、未来展望

  1. 实时应用:实时应用是大势所趋,并且将保持在排行榜前列。这些应用需要一个强大且健壮的后端。即时通信、视频通话和在线游戏,以及许多其他相似的应用是完美的案例;

  2. 物联网:Node.js提供一个特性丰富的运行环境,允许开发者使用面向数据和及时能力,以及微服务,当你在为自己的客户构建 IoT(物联网)应用时,你可以相信 Node.js 能够帮助到你;

  3. SeverLess:每个人都喜欢既能省钱还能提高开发者的生产力和效率的方案,而将 Node.js 用于无服务架构正好是一个绝妙的解决方案。维护成本几乎为零,而且并不需要公司担心其应用的性能;

  4. GraphQL:GraphQL 是 RESTful API 的一个成功的选项。GraphQL 使程序员可以精确地说明它需要的信息。它可以有效地从不同的渠道收集大量信息。GraphQL 每年都在发展,是另一种 Node.js 趋势;

  5. 微服务:基于Node.js的优点,其更适合搭建微服务平台。


更多精彩,请关注公众号,互相学习,共同进步!

Node.js+Koa2+TypeScript技术概览的更多相关文章

  1. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

  2. [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...

  3. Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例

    前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...

  4. 分享Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站

    这是个什么的项目? 使用 Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站. 博客线上地址:www.boblog.com Github地址:https: ...

  5. Node.js最新Web技术栈(2016年4月)

    Node.js是比较简单的,只有你有前端js基础,那就按照我的办法来吧!一周足矣,虽然这版上了es语法,但依然是可以简单写,也可以难写,参见<全栈工程师之路-Node.js>,里面讲了No ...

  6. 【Visual Studio Code 】使用Visual Studio Code + Node.js搭建TypeScript开发环境

    1.准备工作 Node.js Node.js - Official Site Visual Studio Code Visual Studio Code - Official Site 安装Node. ...

  7. 使用Visual Studio Code + Node.js搭建TypeScript开发环境

    Visual Studio Code搭建Typescript开发环境 —— 相关文章: http://www.cnblogs.com/sunjie9606/p/5945540.html [注意:这里仅 ...

  8. Node.js && Angular && TypeScript 环境安装与更新

    安装 Node.js 下载并安装Node.js Angular 执行命令 npm install -g @angular/cli 参考资料: angular quickstart TypeScript ...

  9. Docker最全教程之使用Node.js搭建团队技术文档站(二十三)

    前言 各种编程语言均有其优势和生态,有兴趣的朋友完全可以涉猎多门语言.在平常的工作之中,也可以尝试选择相对适合的编程语言来完成相关的工作. 在团队技术文档站搭建这块,笔者尝试了许多框架,最终还是选择了 ...

  10. Node.js Koa2开发微信小程序服务端

    1.promise.async.await const Koa = require('koa') const app = new Koa() // 应用程序对象 有很多中间件 // 发送HTTP KO ...

随机推荐

  1. 驱动开发:内核LDE64引擎计算汇编长度

    本章开始LyShark将介绍如何在内核中实现InlineHook挂钩这门技术,内核挂钩的第一步需要实现一个动态计算汇编指令长度的功能,该功能可以使用LDE64这个反汇编引擎,该引擎小巧简单可以直接在驱 ...

  2. 我的 React 最佳实践

    There are a thousand Hamlets in a thousand people's eyes. ----- 威廉·莎士比亚 免责声明:以下充满个人观点,辩证学习 React 目前开 ...

  3. ES6 学习笔记(十三)promise的简单使用

    1.什么是promise 在JavaScript中,我们经常会用到回调函数,而回调函数的使用让我们没法使用return,throw等关键字.JS引用promise正好解决了这个问题. promise单 ...

  4. netty系列之: 在netty中使用 tls 协议请求 DNS 服务器

    目录 简介 支持DoT的DNS服务器 搭建支持DoT的netty客户端 TLS的客户端请求 总结 简介 在前面的文章中我们讲过了如何在netty中构造客户端分别使用tcp和udp协议向DNS服务器请求 ...

  5. DNS 解析 prefeath

    本文将详细介绍DNS预解析prefetch的主要内容 概述 DNS(Domain Name System, 域名系统),是域名和IP地址相互映射的一个分布式数据库.DNS 查询就是将域名转换成 IP ...

  6. 【iOS逆向】某车之家sign签名分析

    阅读此文档的过程中遇到任何问题,请关注公众号[移动端Android和iOS开发技术分享]或加QQ群[309580013] 1.目标 分析某车之家sign签名算法的实现 2.操作环境 frida mac ...

  7. xshell登陆,查看中文日志出现乱码

    看到乱码,首先想到的是编码问题 linux默认编码格式是utf-8,windows默认gbk [root@backup]# echo $LANGen.US.UTF-8 使用fie命令可以查看到文件信息 ...

  8. github访问慢怎么办

    前言 访问github网速老不好?老掉线?下载贼慢?或许这篇笔记可以帮助你! Github访问慢的根本原因其实是CDN内容分发受到DNS污染,无法连接使用igithub的加速分发服务器,所以国内访问时 ...

  9. python-面向对象属性的访问与self的理解

    属性访问 类属性与对象属性 在类中定义的名字,都是类的属性,细说的话,类有两种属性:数据属性和函数属性,可以通过__dict__访问属性的值,比如Person1.__dict__['student'] ...

  10. Flink SQL管理平台flink-streaming-platform-web安装搭建

    文章都在个人博客网站:https://www.ikeguang.com/ 同步,欢迎访问. 最近看到有人在用flink sql的页面管理平台,大致看了下,尝试安装使用,比原生的flink sql界面确 ...