Skip to content

Node.js WEB 框架

约 1516 字大约 5 分钟

Node.js

2025-01-20

Node.jsWEB 框架有很多,如ExpressKOAHapi等,下面我们简单介绍下这些框架。

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 对比

KOAExpress是同一个团队开发的两个 node.js Web框架。

express 也许是 node.js 最早出的框架,里面集成了大量的中间件,造成了框架的笨重性。团队领队人 TJ 发现了 express 的设计是有缺陷的,如果想要修复这个设计缺陷,就会造成 express 的框架重构。基于各种原因,就重新写一个新的框架koa,来实现 express 的不足之处。express 现在有团队中的团员维护,基本上也很少更新了。koa 由团队领队人 TJ 主要维护。

我主要使用的 node.js 框架就是koa,后面总结一下。

参考

KOA