首页 > 编程知识 正文

node express框架(nodejs koa2)

时间:2023-05-03 20:09:46 阅读:287 作者:682

简介

Node.js在10年前首次推出。目前,它已经成为世界上最大的开源项目,在GitHub上拥有5.9万颗星,下载量超过10亿次。迅速流行的部分原因是Node.js允许开发人员使用相同的语言:在应用程序的客户端和服务器端使用JavaScript。Node.js是一个开源的跨平台的JavaScript运行时环境,它是专门为构建可伸缩的服务器端WEB应用程序而设计的。它具有高并发、可扩展性强的特点。由于社区的指数级增长和普及,已经创建了许多框架来提高生产力。在本文中,我们将讨论Node.js中三种最流行的框架之间的差异:Express、Koa和哈比神。在以后的文章中,我们将学习Next、Nuxt和Nest。

基于以下几点:

Hubstars和npm下载并安装基本的Hello World应用程序优缺点性能安全社区参与

Express

Express是最小且灵活的Web应用程序框架,它为Web和移动应用程序提供了一套强大的功能。它的行为就像一个中间件,可以帮助管理服务器和路由。

星星

Gitstar: 43,000 NPM每周下载6,881,035个安装

请确保您已经安装了节点和npm。

//可以对项目依赖项安装express。

npm快速安装-保存

//如果要临时安装Express而不是将其添加到依赖项列表中,可以使用

npm安装快速-不-保存

你好世界示例代码

这是关于如何创建一个监听端口3000并响应“Hello World!”基于的快速应用程序的最基本示例

//这里只创建根目录。其他目录返回404。

const express=require('express ')

const app=express()

常量端口=3000

app.get('/',(req,res)=res.send('Hello World!'))

app.listen(端口,()=console.log(`示例应用程序在端口${port}上侦听!`))

利益

几乎Node.js Web中间件的标准就是简单、简单、灵活、可扩展。快速开发的应用程序可以完全定制。学习曲线低,容易集成第三方服务和中间件。主要针对浏览器、模板和渲染集成开箱即用的缺点。

组织需要非常清楚,以避免在维护代码时出现问题。随着代码库大小的增加,重构变得非常具有挑战性,并且需要大量的人工劳动,因为您需要创建所有端点功能。

Express是web应用程序封装的基本层,继承了Node.js的特性

当天的快递绩效也有一些最佳实践,包括:

使用gzip压缩。不要使用同步功能正确记录(调试时使用调试等特殊模块,应用活动使用winston或bunyan)。使用try-catch或promises来正确处理异常。请确保您的应用程序使用process manager自动重新启动,或者使用systemd或upstartinit在集群中运行您的应用程序。您可以通过启动进程集群来大大提高Node.js应用程序的性能,这样您的应用程序就不会重复提供相同请求的操作。使用负载平衡器来运行它的多个实例并分发流量,例如对静态资源使用反向代理的Nginx或HAProxy。它可以处理错误页面、压缩、缓存、提供文件和负载平衡以及其他性能最佳实践。一个简单的“Hello World”应用程序每秒有以下性能请求:

安全的

Node.js的漏洞直接影响到Express,所以一定要使用最新稳定版本的node.js。

请参见快速最佳安全实践社区参与。

投稿人数:220拉请求:821快递社区常规活动包括Gitter、IRC频道、议题、Wiki等。最后,Express可能是Node.js最流行的框架,其他很多流行的框架都是建立在Express之上的。

koa

Koa是一个全新的web框架,由原团队在Express的幕后打造,致力于成为web应用和API开发领域更小、更具表现力、更健壮的基石。使用异步函数,Koa可以帮助您丢弃回调函数,并有效地增强错误处理。Koa没有绑定任何中间件,但是提供了一套优雅的方法来帮助您快速愉快地编写服务器应用程序。

星星

Hubgitstar: 25,000 NPM每周下载:300,000安装

Koa需要NODEV 7 . 6 . 0或以上版本的支持。

,因为内部使用了ES6的特性

npm i koa node my-koa-app.js

Hello World代码示例

创建一个web服务,监听3000端口返回‘Hello World’

const Koa = require('koa'); const app = new Koa(); app.use(async ctx => { ctx.body = 'Hello World'; }); app.listen(3000);

好处

Koa提高了互操作性,健壮性,使编写中间件变得更加愉快。集成了大量的web API,但是没有绑定中间件非常轻量,核心的Koa模块只有大约2K行代码拥有非常好的用户体验通过try / catch更好地处理错误异步控制流,代码可读性更高

缺点

Koa社区相对较小与Express风格的中间件不兼容(目前还有遇到与其他框架兼容的中间件)

性能

Koa本身是一个非常轻量级的框架,可以构建具有出色性能的Web应用程序。代码可读性和维护性都相对较高

当然一些性能的最佳实践也是必不可少的,例如:

集群并行运行在代码中使用异步API保持代码小而轻以及使用gzip压缩 等等

一个简单的“Hello World”应用程序每秒具有以下性能请求:

安全

Koa有大量的中间件,提供相应的功能 贴图一张

社区

贡献者数量:169Pull Requests:577关于koa的一些讨论

最后,Koa专注于核心中间件功能,设计显式地利用了async/ waiting使异步代码可读性更高

Hapi

Hapi是基础功能相对丰富的框架。开发人员更专注于业务,而不是花时间构建基础架构。配置驱动的模式,区别于传统的web服务器操作。他还有比一个独特功能,能够在特定的IP上创建服务器,具有类似的功能onPreHandler。再需要的时候你可以拦截特地的请求做一些必要的操作

star

GitHub Stars: +11000npm 周下载: +222,293

安装

确保你已经安装node

npm install hapi

Hello World代码示例

以下示例是使用hapi的最基本的hello world应用程序:

'use strict'; const Hapi=require('hapi'); // 创建一个服务监听8000端口 const server=Hapi.server({ host:'localhost', port:8000 }); // 添加路由 server.route({ method:'GET', path:'/hello', handler:function(request,h) { return'hello world'; } }); // 启动服务 const start = async function() { try { await server.start(); } catch (err) { console.log(err); process.exit(1); } console.log('Server running at:', server.info.uri); }; start();

好处

提供了一个强大的插件系统,允许您快速添加新功能和修复错误可扩展的API对请求处理有更深层次的控制。创建(REST)api的最佳选择,提供了路由、输入、输出验证和缓存一次编写适配各端详细的API参考和对文档生成的良好支持与任何前端框架(如React,Angular和Vue.js)一起使用来创建单页面应用程序基于配置的伪中间件提供缓存,身份验证和输入验证提供基于插件的扩展架构提供非常好的企业插件,如joi,yar,catbox,boom,tv和travelogue

缺点

代码结构复杂插件不兼容,只能使用指定的插件如:catbox joi boom tv good travelogue等端点是手动创建的,必须手动测试重构是手动的

性能

2017年对Node框架的研究表明hapi相对于其他框架的表现最差

一个简单的“Hello World”应用程序每秒具有以下性能请求:

安全

hapi安全性主要依赖于插件 插件选择

Crumb反(XCSRF)验证插件。它适用于常规请求和CORS请求Joi:JavaScript对象的对象模式描述语言和验证器Hapi-rbac 用户的访问权限控制Blankie 足够灵活的白名单作机制Cryptiles 加密库

社区

贡献者数量:184Pull Requests:1176

小结

Express仍然是当下最为流行,koa因拥抱ES6正在崛起,hapi还是大型项目的第一选择。当然,不管是Express,Koa还是Hapi,这些都是目前非常成熟的框架,几乎都能满足你的需求,没有最好,只有最合适

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。