本文首发于个人博客“胖蔡叨叨叨”,点击可查看原文
Nodejs
在近些年可以说是发展异常的迅猛,由于同样使用的js原因,对于前端开发人员可以说是非常的友善了,Github
上有关nodejs
的贡献也是越来越多,像是阿里的express
、koa
极大的优化了我们的开发工作,今天我就整理筛选了部分的Nodejs Web框架
提供给大家挑选,如果有遗漏或者错误的,希望大家可以在评论区指正提出,我也会根据评论内容及时更正修改。
1、KOA
KOA
属于Node.js
MVC框架
系列,其中MVC
代表模型 - 视图 - 控制器。MVC
的三个组件是作为应用程序数据的模型,视图是通过app UI
的数据表示,控制器在模型和视图之间传递请求和更新。KOA
在MVC
阶段可以说是助力了国内大多数框架的发展,类型eggjs
、thinkjs
均脱胎于KOA
,而且值得一提的是目前国内最火的nodejs
框架Express
也是由KOA
原班人马打造。就是怎么每个框架都喜欢说自己是下一代框架,活在当下不好吗?
const Koa = require('koa');
const app = new Koa();
// response
app.use(ctx => {
ctx.body = 'Hello Koa';
});
app.listen(3000);
2、Express
Express
是基于 Node.js
平台,快速、开放、极简的 Web
开发框架。在中国说Express
是目前最受欢迎的Nodejs
框架也不为过,它的确出色,Express
继承了阿里系所有框架该有的有点:清晰出色的文档、完善的社区环境、高度可配合的开发生态。此外,它不需要使用特定的开发实践或特定工具,因此JavaScript
开发人员可以获得最大的自由。由不得人不喜欢用。
const express = require('express')
const app = express()
app.get('/', function (req, res) {
res.send('Hello World')
})
app.listen(3000)
3、Hapi
Hapi
是由沃尔玛技术团队开发的 Web 框架
。Hapi
致力于实现:高性能、高安全性可高度可扩展性的框架。hapi帮助沃尔玛度过了一个个黑色星期五的抢购,其实力可见一斑。
'use strict';
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);
};
process.on('unhandledRejection', (err) => {
console.log(err);
process.exit(1);
});
init();
4、Fastify
Fastify
,快速并且低开销的 web
框架,专为 Node.js
平台量身打造。其设计灵感来自 Hapi
和 Express
,致力于以最少的开销和强大的插件结构提供最佳的开发体验。据我们所知,它是这个领域里速度最快的 web
框架之一。
// Require the framework and instantiate it
const fastify = require('fastify')({ logger: true })
// Declare a route
fastify.get('/', async (request, reply) => {
return { hello: 'world' }
})
// Run the server!
const start = async () => {
try {
await fastify.listen(3000)
} catch (err) {
fastify.log.error(err)
process.exit(1)
}
}
start()
5、Meteor
一个完全统一前后台开发的一站式框架, 从后台数据库到前端view
全部包含在内, 特别适合于重度依赖websocket
的SPA
(单页面应用)开发, 国外流行的Asana
就是完全采用Meteor
框架开发,项目在 GitHub
上有 28K+
的赞,拥有大量的自定义包,庞大的社区支持,非常好的教程和文档。你可以用它构建纯 Javascript
的实时 Web
和 手机应用。
import { Meteor } from 'meteor/meteor'
// On server startup, if the database is empty, create some initial data.
if (Meteor.isServer) {
Meteor.startup(() => {
if (Rooms.find().count() === 0) {
Rooms.insert({ name: 'Initial room' });
}
});
}
6、Primus
Primus
,是Transformer
的创造者,并且也被称为通用包装器实时框架。Primus
里包含了大量的用于Node.js的实时框架,并且它们都拥有各种不同的实时功能。此外,Primus
还提供了通用的低级别接口用于各个实时框架之间进行通信。Primus
开源,并且托管在Github
上。
'use strict';
var Primus = require('primus')
, http = require('http');
var server = http.createServer(/* request handler */)
, primus = new Primus(server, {/* options */});
7、Strapi
Strapi
是一种灵活的、开放源码的无头CMS
,开发者可以自由选择自己喜欢的工具和框架,编辑器也可以轻松地管理和分发内容。通过使管理面板和API
可扩展通过插件系统,Strapi
使世界上最大的公司加速内容交付,同时建立美丽的数字体验。用一句话来概括:免费开源的Nodejs
无头CMS
内容管理框架,建立在自定义api
。有点像腾讯小程序提供的内容管理系统,可以说是一个集成式的系统。
8、Sail
Sail
作为一个非常稳固的 nodejs
框架,提供了建立任何规模的 web 应用
所需要的所有功能功能。
Sail.js
在底层使用了 express框架来提供对 http 请求的处理,同时使用 Socket.IO
框架来处理WebSocket
请求。同时作为一个前端应用开发框架,它允许开发人员选择他/她熟悉的技术来开发应用。
同时 Sail.js
也通过 waterline
框架实现了 ORM
功能。通过这个功能,你的应用程序可以在不进行大的修改的前提下,就可以从一个后端数据库,切换到另外一个后端数据库(也可以是一个NoSQL
数据库)。
Sail
特别适合用来开发对数据的实时更新有较高要求的应用,比如多人棋类游戏,单页web应用等等。如果你对 Ruby, Django
或者 Zend
有一定的了解,那么你将非常容易理解Sail
中的概念。
简单来说,Sail.js
既给开发者提供了一个优秀的 MVC
框架,也提供了一定的灵活性,让开发者可以自主选择前端开发方式和后端的数据库。 Sail.js
是由 Mike McNeil
创建的,现在由 Treeline and balderdash
提供支持。Sail.js
在 MIT 协议
下开源。
还有哪些优秀的Nodejs框架?欢迎大家评论区推荐讨论~