介绍 2019 年和 2020 年最佳 10 个 Node.js 框架
什么是 node.js 框架?
如何为我的应用程序选择一个 node.js 框架?
10.阿多尼斯
👉 获取更多高级 NODE.JS 开发文章
9.羽毛
8. 帆
7. 回环
6. Fastify
5. Restify
👉 获取更多高级 NODE.JS 开发文章
4. Nest.js
3.哈皮
2. 相思木
1. 快递
结论
👉 获取更多高级 NODE.JS 开发文章
我已经厌倦了阅读那些基于偏见或赞助声称什么是最好的 node.js 框架的文章(是的,有这样的事情)
以下是按每日下载量排名的顶级 node.js 框架,数据取自 npmjs.com 本身(抱歉,yarn)。
什么是 node.js 框架?
如何为我的应用程序选择一个 node.js 框架?
您主要需要考虑两件事:
-
框架的可扩展性和稳健性
-
如果您对开发过程感到满意。
无论可扩展性和稳健性如何,每个 node.js web 框架都是建立在http
模块之上的。
其中一些框架添加了太多内容……这对服务器的吞吐量产生了巨大的影响。
在我看来,当你开发的服务业务逻辑较小但需要高度可扩展时,使用 Express.js 或 Fastify.js 这样的准系统框架是最好的。
另一方面,如果您正在开发中型应用程序,最好使用可以帮助您拥有清晰结构的框架,例如 next.js 或 loopback。
这个问题没有简单的答案,你最好了解一下如何在列表中的每个框架上声明 API 路由,然后自己决定。
10.阿多尼斯
Adonis.js是一个 MVC(模型-视图-控制器)node.js 框架,能够构建具有 JWT 身份验证和数据库访问的 API Rest。
这个框架是关于什么的?
好消息是,Adonis.js 框架附带一个 CLI 来为应用程序创建引导程序。
$ npm i -g @adonisjs/cli
$ adonis new adonis-tasks
$ adonis serve --dev
典型的 Adonis 应用程序具有 MVC 结构,这样您就不必浪费时间去弄清楚如何构建您的 Web 服务器。
一些使用 adonis 构建的应用程序可以在这里找到。
👉 获取更多高级 NODE.JS 开发文章
加入其他 2,000 多名精明的 node.js 开发人员,获取文章更新。
9.羽毛
Feather.js是一个 node.js 框架,承诺成为现代应用程序的 REST 和实时 API 层。
看看有什么能力!!
这是设置 API REST + 实时 WebSockets 连接所需的全部代码,这要归功于 socket.io 插件
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.js古老的 node.js 框架
经过 7 年的成熟,这是一个久经考验的 node.js Web 框架,您绝对应该检查一下!
观看实际操作
Sails.js 附带一个 CLI 工具,只需 4 个步骤即可帮助您入门
$ npm install sails -g
$ sails new test-project
$ cd test-project
$ sails lift
7. 回环
Loopback.io由 IBM 支持,是一个企业级 node.js 框架,被 GoDaddy、赛门铁克、IBM 等公司使用。
他们甚至提供长达 18 个月的长期支持 (LTS)!
该框架附带一个 CLI 工具来搭建你的 node.js 服务器
$ npm i -g @loopback/cli
然后创建一个项目
$ lb4 app
API 路由和控制器如下所示:
import {get} from '@loopback/rest';
export class HelloController {
@get('/hello')
hello(): string {
return 'Hello world!';
}
}
6. Fastify
Fastify.io是一个 node.js 框架,旨在替代 express.js,性能提高 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}`)
})
就是这样!
我喜欢 Fastify.js 的简单性和对 Express.js 的回忆,如果性能是您的服务器的一个问题,那么它绝对是您要使用的框架。
5. Restify
Restify声称是 Node.js Web 框架的未来。
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);
});
👉 获取更多高级 NODE.JS 开发文章
加入其他 2,000 多名精明的 node.js 开发人员,获取文章更新。
4. Nest.js
Nest.js是一个相对较新的 node.js 框架,其架构与 Angular.io 类似,因此如果您熟悉该前端框架,您会发现这个框架也非常容易开发。
例子
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.js是三大 node.js 框架之一,拥有一个库和插件生态系统,使得该框架具有高度可定制性。
虽然我从未在生产中使用过 hapi.js,但我已经使用它的验证库 Joi.js 多年了。
创建服务器
hapi.js 网络服务器看起来像这样
const Hapi = 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是由最著名和最常用的 node.js 框架 Express.js 背后的团队设计的 Web 框架。
Koa 的目标是成为比 express.js 更小、更具表现力、更强大的 Web 应用程序和 API 基础。
通过利用生成器,Koa 允许您放弃回调并大大增加错误处理。
Koa 的核心中没有捆绑任何中间件,而是提供了一套优雅的方法,让编写服务器变得快速而愉快。
例子
const Koa = require('koa');
const app = new Koa();
app.use(async ctx => {
ctx.body = 'Hello World';
});
app.listen(3000);
1. 快递
Express.js绝对是 Node.js 框架之王,到 2019 年底,其每日下载量将达到惊人的 200 万次。
尽管 Express.js 是一个如此古老的框架,但它仍然受到社区的积极维护,并被 User、Mulesoft、IBM 等大公司所使用。
例子
只需将其添加到您的 node.js 项目中
$ 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 开发,我积累了丰富的良好架构模式知识,而这一切都基于反复试验。
但这并不意味着你必须做同样的事情,这里是一个好的 express.js 框架项目的所有秘密。
现在告诉我,您最喜欢的 node.js 框架是什么?
快来给@santypk4发个推文吧!我想知道大家在用什么,我不想落后!
👉 获取更多高级 NODE.JS 开发文章
加入其他 2,000 多名精明的 node.js 开发人员,获取文章更新。
文章来源:https://dev.to/santypk4/introducing-the-best-10-node-js-frameworks-for-2019-and-2020-mcm