数据说话:2019年10大 Node.js 框架
Posted 4字节
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据说话:2019年10大 Node.js 框架相关的知识,希望对你有一定的参考价值。
翻译/编辑:4字节
想必大家已经读过这一类文章,其中不少实为推广,不少带有偏见,但本文所推荐的10个 Node.js 框架是根据 npmjs.com 上的每日下载量排名所总结出来的。
首先来说说什么是 node.js 框架,以及如何为你的应用选择正确的框架。你需要考虑的因素有二:
1, 框架的可扩展性和健壮性
2, 框架的开发流程是否让你觉得舒适
不论一个框架的可扩展性与健壮性如何,它都是建立在 http
模块之上的,其中有一些框架添加进去的东西太多,这对服务器的吞吐量造成了巨大的影响。
在我看来,如果你正在开发的服务业务逻辑规模较小但需要很好的扩展性时,Express.js 或者 Fastify.js 等框架最为合适。但如果你所开发的是中大型规模的应用程序,则最好选择一个能帮助你拥有清晰结构的框架,比如 next.js 或者 loopback。
框架的选择没有唯一解,看看下文的分析再根据实际情况做决定吧!
10. Adonis
Adonis 是一个MVC 模式的 node.js 框架,它借鉴了依赖注入与服务供应商的概念,能够通过 JWT 验证和数据库访问构建 API Rest。
这个框架有什么用?
Adonis.js 的好处就是该框架附带了一个脚手架工具 adonis-cli,可用来创建引导程序。
$ npm i -g @adonisjs/cli
$ adonis new adonis-tasks
$ adonis serve --dev
一个典型的 Adonis 应用具有 MVC 结构,这样你就不用再浪费时间去思考如何构架 web 服务器。
9. Feathers
Feather.js 是一个轻量级的 REST 和实时 API 层,多亏了它的 socket.io
插件,下面的代码就是你设置 API REST + 实时 WebSockets 连接所需的全部代码:
const feathers = require('@feathersjs/feathers');
const express = require('@feathersjs/express');
const socketio = require('@feathersjs/socketio');
const memory = require('feathers-memory');
// Creates an Express compatible Feathers application
const app = express(feathers());
// Parse HTTP JSON bodies
app.use(express.json());
// Parse URL-encoded params
app.use(express.urlencoded({ extended: true}));
// Add REST API support
app.configure(express.rest());
// Configure Socket.io real-time APIs
app.configure(socketio());
// Register a messages service with pagination
app.use('/messages', memory({
paginate: {
default: 10,
max: 25
}
}));
// Register a nicer error handler than the default Express one
app.use(express.errorHandler());
// Add any new real-time connection to the `everybody` channel
app.on('connection', connection => app.channel('everybody').join(connection));
// Publish all events to the `everybody` channel
app.publish(data => app.channel('everybody'));
// Start the server
app.listen(3030).on('listening', () =>
console.log('Feathers server listening on localhost:3030')
);
8. Sails
在7年的时间内逐渐成熟,久经实践考验的 Sails web 框架你绝对应该知道。Sails.js 带有 CLI 工具,4个步骤帮助你启动:
$ npm install sails -g
$ sails new test-project
$ cd test-project
$ sails lift
7. Loopback
背后有着 IBM 的支持,Loopback 是一个企业级的 node.js 框架,被多家大型互联网公司例如 GoDaddy,Symantec 和 IBM 使用。Loopback 甚至提供18个月的长期支持(LTS)。该框架带有一个 CLI 工具来搭建你的 node.js 服务器。
$ npm i -g @loopback/cli
随后创建项目:
$ lb4 app
API 路由与控制器如下图所示:
import{get} from '@loopback/rest';
exportclassHelloController{
@get('/hello')
hello(): string {
return'Hello world!';
}
}
6. Fastify
Fastify.io 是一个旨在取代 Express.js 的 node.js 框架,其性能相比 Expressjs 提高了65%。
// Require the framework and instantiate it
const fastify = require('fastify')({
logger: true
})
// Declare a route
fastify.get('/', (request, reply) => {
reply.send({ hello: 'world'})
})
// Run the server!
fastify.listen(3000, (err, address) => {
if(err) throw err
fastify.log.info(`server listening on ${address}`)
})
5. Restify
Restify 声称自己是 Node.js 的未来。目前使用此框架的公司和项目包括 NPM,Netflix,Pinterest 和 Napster。
设置 Restify.js 服务器非常简单,下面是代码示例:
const restify = require('restify');
function respond(req, res, next) {
res.send('hello '+ req.params.name);
next();
}
const server = restify.createServer();
server.get('/hello/:name', respond);
server.head('/hello/:name', respond);
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});
4. Nest.js
这是一个相对较新的 node.js 框架,Nest.js 的结构类似于 Angular.io,因此如果你对 Angular 前端框架很熟悉,使用 Nest 开发应该是得心应手,下面是一段示例代码:
import{ NestFactory} from '@nestjs/core';
import{ AppModule} from './app.module';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
app.setViewEngine('hbs');
await app.listen(3000);
}
bootstrap();
3. Hapi
Node.js 世界中的3个框架之一,它的生态中具有丰富的库和插件,这让 Hapi 框架实现高度自定义化。
虽然多年开发中我并没有在产品中用 Hapi,但我这几年一直在用它的验证模块 joi.js。一个 hapi.js 的web服务器配置是这样的:
constHapi= require('@hapi/hapi');
const init = async () => {
const server = Hapi.server({
port: 3000,
host: 'localhost'
});
await server.start();
console.log('Server running on %s', server.info.uri);
};
init();
2. Koa
Koa 框架由 Express.js 的团队设计,后者是目前最受欢迎也是最常用的 node.js 框架。
Koa 的目标是成为 web 应用的一个,相比 Express.js 体积更小,更富表现力和健壮性更强的基础。通过生成器 generator 的以小博大,Koa 允许开发者完全摒弃回调,并且大大提高错误处理能力。
Koa 在核心内没有捆绑任何中间件,它提供了一套优雅的服务器编写方法,让过程变得敏捷又容易:
constKoa= require('koa');
const app = newKoa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
1. Express
Express.js 是当之无愧的 Node.js 框架之王,在2019年年底它将能达到每日2百万次的下载量。
虽然 Express 是一个年龄更老的框架,但它由强大的社区积极维护,并且被 Uber,IBM,Mulesoft 等大公司使用。
向你的 node.js 项目中添加 Express 的代码是:
$ npm install express
然后声明一些 API 路径:
const express = require('express')
const app = express()
const port = 3000
app.get('/', (req, res) => res.send('Hello World!'))
app.listen(port, () => console.log(`Example app listening on port ${port}!`))
结论
Node.js 的框架成千上万,在不清楚哪个更好的情况下最好的办法就是多尝试一些,找到最符合自己需求的那一个。
就个人而言,我更喜欢 Express.js,因为通过过去6年的 node.js 开发,基于反复的试验,我对良好的架构有清晰的认知,也欢迎各位朋友讨论和指正。
以上是关于数据说话:2019年10大 Node.js 框架的主要内容,如果未能解决你的问题,请参考以下文章
Node.js学习8~10款基于nodejs的主流web框架排名及介绍