Node.js+Koa2+TypeScript技术概览
最近几年一直使用Node.js作为后端服务平台,通过Koa2框架中间件快速搭建Web服务,但是使用JavaScript开发大型后端服务时会使程序变得难以维护,继而使用TypeScript语言开发,使编译、调试、检查和代码管理变得更加容易。
下图是使用Koa2框架搭建后端服务的思维导图:
一、Node.js
介绍:一个开源的、跨平台的JavaScript运行时环境。类似于C#的.NetFramewok,Java的JRE。
优点:
超强的并发能力;
单线程的高性能并行非阻碍I/O,基于事件驱动;
前后端开发语言一致,开发效率高;
微服务和SeverLess开发更具优势;
不足:
不适合计算密集型应用;
不适合大内存应用;
不适合大量同步应用。
使用场景:
开发Web服务Api,比如RESTful API;
服务器渲染页面,提升速度;
后端的 Web服务,例如跨域、服务器端的请求。
应用方向:
善于 I/O,天生异步的特点让其非常擅长进行任务调度和处理并发 I/O,但不善于计算;
业务方向:网站开发、即时通信、小程序开发、跨平台开发等;
Node.js 过于追求性能而导致健壮性有所不足,所以不适用于银行、证券等方向,但适合创业公司这种小体量、追求性能的公司;
大型企业在客户端和服务器端直接加设Node.js,适合用Node.js做的就尽量用成本低回报高的Node.js来做。
二、Koa2
介绍:基于 Node.js 平台的下一代 web 开发框架。由 Express 原班人马打造的,致力于成为一个更小、更富有表现力、更健壮的 Web 框架。使用 Koa 编写 Web 应用,可以免除重复繁琐的回调函数嵌套, 并极大地提升错误处理的效率。Koa 不在内核方法中绑定任何中间件, 它仅仅提供了一个轻量优雅的函数库,使得编写 Web 应用变得得心应手,最大的特点就是可以避免异步嵌套。利用ES7的async/await特性,极大的解决了我们在做Node.js开发的时候异步给我们带来的烦恼。
优点和不足:非常简单,而且极度自由,这种理念是优点也是缺点。
三、未来展望
实时应用:实时应用是大势所趋,并且将保持在排行榜前列。这些应用需要一个强大且健壮的后端。即时通信、视频通话和在线游戏,以及许多其他相似的应用是完美的案例;
物联网:Node.js提供一个特性丰富的运行环境,允许开发者使用面向数据和及时能力,以及微服务,当你在为自己的客户构建 IoT(物联网)应用时,你可以相信 Node.js 能够帮助到你;
SeverLess:每个人都喜欢既能省钱还能提高开发者的生产力和效率的方案,而将 Node.js 用于无服务架构正好是一个绝妙的解决方案。维护成本几乎为零,而且并不需要公司担心其应用的性能;
GraphQL:GraphQL 是 RESTful API 的一个成功的选项。GraphQL 使程序员可以精确地说明它需要的信息。它可以有效地从不同的渠道收集大量信息。GraphQL 每年都在发展,是另一种 Node.js 趋势;
微服务:基于Node.js的优点,其更适合搭建微服务平台。
更多精彩,请关注公众号,互相学习,共同进步!
Node.js+Koa2+TypeScript技术概览的更多相关文章
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...
- Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例
前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...
- 分享Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站
这是个什么的项目? 使用 Node.js + Koa2 + MySQL + Vue.js 实战开发一套完整个人博客项目网站. 博客线上地址:www.boblog.com Github地址:https: ...
- Node.js最新Web技术栈(2016年4月)
Node.js是比较简单的,只有你有前端js基础,那就按照我的办法来吧!一周足矣,虽然这版上了es语法,但依然是可以简单写,也可以难写,参见<全栈工程师之路-Node.js>,里面讲了No ...
- 【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. ...
- 使用Visual Studio Code + Node.js搭建TypeScript开发环境
Visual Studio Code搭建Typescript开发环境 —— 相关文章: http://www.cnblogs.com/sunjie9606/p/5945540.html [注意:这里仅 ...
- Node.js && Angular && TypeScript 环境安装与更新
安装 Node.js 下载并安装Node.js Angular 执行命令 npm install -g @angular/cli 参考资料: angular quickstart TypeScript ...
- Docker最全教程之使用Node.js搭建团队技术文档站(二十三)
前言 各种编程语言均有其优势和生态,有兴趣的朋友完全可以涉猎多门语言.在平常的工作之中,也可以尝试选择相对适合的编程语言来完成相关的工作. 在团队技术文档站搭建这块,笔者尝试了许多框架,最终还是选择了 ...
- Node.js Koa2开发微信小程序服务端
1.promise.async.await const Koa = require('koa') const app = new Koa() // 应用程序对象 有很多中间件 // 发送HTTP KO ...
随机推荐
- 一个 MySQL 隐式转换的坑,差点把服务器整崩溃了
我是风筝,公众号「古时的风筝」,专注于 Java技术 及周边生态. 文章会收录在 JavaNewBee 中,更有 Java 后端知识图谱,从小白到大牛要走的路都在里面. 本来是一个平静而美好的下午,其 ...
- onps栈使用说明(2)——ping、域名解析等网络工具测试
1. ping测试 协议栈提供ping工具,其头文件为"net_tools/ping.h",将其include进你的目标系统中即可使用这个工具. -- #include " ...
- 嵌入式-C语言基础:联合体和共用体的概念
有时候同一块内存空间存放类型不同,不同类型的变量共享一块空间. 结构体和共用体的区别: (1)结构体元素有各自单独空间,共用体元素共享空间,空间大小由最大类型确定. (2)结构体元素互不影响共用体赋值 ...
- 谈软件-专家谈C/C++重构的操作与思路
1.Refactoring: 对软件内部结构的一种调整,目的是不该被软件的可观察行为的前提上,提高其可理解性,降低其修改成本. 2.代码坏味道 2.1.不易复用 2.2.不易理解 2.3.存在冗余 3 ...
- Aspose.Cells实现excel预览
在WEB项目中经常遇到excel文档在线预览的需求,基本的解决思路有以下几大类:excel文档转PDF.excel文档直接转html.后台读取excel数据返回给前端利用Excel效果的表格插件如 ...
- ES文件传输助手1.0.0
软件下载地址 1.软件功能 与 ES文件浏览器 的快传功能 直接传输文件 支持接受文件点击预览 可以多台电脑使用该软件,从而实现电脑与电脑局域网互传文件 单个文件夹上传会递归上传该文件夹下所有文件夹与 ...
- Datawhale组队学习_Task02:详读西瓜书+南瓜书第3章
第3章 线性模型 家人们又来吃瓜了! 3.1 基本形式 线性模型的本质是通过一个所有属性的线性组合进行预测的函数,即 $\mathcal{f(x)=w_1x_1+w_2x_2+...+w_dx_d+b ...
- PostgreSQL常用操作合辑:时间日期、系统函数、正则表达式、库表导入导出、元数据查询、自定义函数、常用案例
〇.参考地址 1.pg官方文档 http://www.postgres.cn/docs/9.6/index.html 2.腾讯云仓pg文档 https://cloud.tencent.com/docu ...
- 【重难点总结】DMA与kafka零拷贝机制之间的关系
一.DMA介绍 1.概念 DMA(Direct Memory Access,直接存储器访问) 是一种内存访问技术,独立于CPU, 直接读.写系统存储器.外设等 主存与I/0设备之间使用DMA控制器控制 ...
- Redis的数据被删除,占用内存咋还那么大?
通过 CONFIG SET maxmemory 100mb 或者在 redis.conf 配置文件设置 maxmemory 100mb Redis 内存占用限制.当达到内存最大值值,会触发内存淘汰策略 ...