Node.js WEB 框架
Node.js
的 WEB
框架有很多,如Express
、KOA
、Hapi
等,下面我们简单介绍下这些框架。
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);
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)
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();
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()
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' });
}
});
}
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 */});
Strapi
Strapi是一种灵活的、开放源码的无头CMS,开发者可以自由选择自己喜欢的工具和框架,编辑器也可以轻松地管理和分发内容。通过使管理面板和API可扩展通过插件系统,Strapi使世界上最大的公司加速内容交付,同时建立美丽的数字体验。用一句话来概括:免费开源的Nodejs无头CMS内容管理框架,建立在自定义api。有点像腾讯小程序提供的内容管理系统,可以说是一个集成式的系统。
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 协议下开源。
KOA vs Express 对比
KOA
和Express
是同一个团队开发的两个 node.js
Web
框架。
express
也许是 node.js
最早出的框架,里面集成了大量的中间件,造成了框架的笨重性。团队领队人 TJ
发现了 express
的设计是有缺陷的,如果想要修复这个设计缺陷,就会造成 express
的框架重构。基于各种原因,就重新写一个新的框架koa
,来实现 express
的不足之处。express
现在有团队中的团员维护,基本上也很少更新了。koa
由团队领队人 TJ
主要维护。
我主要使用的 node.js
框架就是koa
,后面总结一下。