推荐几款Nodejs实现的web框架

news2024/11/24 7:57:13

本文首发于个人博客“胖蔡叨叨叨”,点击可查看原文

Nodejs在近些年可以说是发展异常的迅猛,由于同样使用的js原因,对于前端开发人员可以说是非常的友善了,Github上有关nodejs的贡献也是越来越多,像是阿里的expresskoa极大的优化了我们的开发工作,今天我就整理筛选了部分的Nodejs Web框架提供给大家挑选,如果有遗漏或者错误的,希望大家可以在评论区指正提出,我也会根据评论内容及时更正修改。

1、KOA

KOA属于Node.js MVC框架系列,其中MVC代表模型 - 视图 - 控制器。MVC的三个组件是作为应用程序数据的模型,视图是通过app UI的数据表示,控制器在模型和视图之间传递请求和更新。KOAMVC阶段可以说是助力了国内大多数框架的发展,类型eggjsthinkjs均脱胎于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全部包含在内, 特别适合于重度依赖websocketSPA(单页面应用)开发, 国外流行的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框架?欢迎大家评论区推荐讨论~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/90987.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt扫盲-QBoxLayout 理论总结

QBoxLayout 理论总结1. 简述2. 创建布局器3. 添加布局元素4. 间隔设置5. 布局 操作1. 简述 QBoxLayout 占用来自其父布局或 parentWidget()获得的空间,将其划分为一排框,并使在布局器里的控件填充一个框。 如果 QBoxLayout 的方…

AC耦合电容仿真知多少

AC耦合电容,也叫DC blocking隔直电容,在几乎所有的高速串行链路中,都可以看到它的身影,它的主要作用是去掉信号中的直流偏置分量,同时让高频分量可以顺利通过,类似于一个高宽带的滤波器。 由于电容的焊盘通…

进销存软件哪个简单好用?来看看这5款

小企业进销存软件如何选择?我认为最重要的一点是适合。 市面上优秀的进销存软件很多,但质量参差不齐。同时,由于与企业的匹配度不一样,再高质量的软件,用起来可能也会十分费劲。 下面与大家分享进销存软件的选型要点…

【能效分析】某大厦电力运维系统的设计及应用

项目简介 安科瑞 李亚俊 壹捌柒贰壹零玖捌柒伍柒 某公司位于北京市大兴区,于2001年在大兴分局注册成立,该在公司多年的发展里,始终为终端客户提供好的产品和技术支持、健全的售后服务,该公司主要经营110KV及以下送电线路&#x…

美团阿里Java程序员晒工资被围观,总结:搞好千万级并发=实现百万年薪?

当我听到这句话的时候楞住了, 面试官就用一句话就问倒了我。 实际上,如果不在BAT这样的大厂工作,是很难接触到千万级别的高并发的。 但也正是这种难得,让各个大厂都抢着要这样的人才啊! #####小编经过长时间的研究、…

人工神经网络技术及应用,人工神经网络实际应用

1、什么是神经网络,举例说明神经网络的应用 我想这可能是你想要的神经网络吧! 什么是神经网络: 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作…

Linux 自定义 RPM 包

目录 一、定制 rpm 包概述 1.1 什么是定制 rpm 包 1.2 为什么要定制 rpm 包 1.3 如何定制 rpm 包 二、安装 FPM 工具 2.1 我在安装过程出现如下错误:ERROR: Error installing fpm:childprocess requires Ruby version > 2.4.0. 2.2 解决办法 2.3 再次执…

SuperMap GIS的TIN地形数据优化

目录 一、优化背景 二、数据优化 2.1 去除无效值 2.1.1 栅格数据 2.1.2 瓦片数据 2.2 镶嵌数据集 2.3 生成优化 2.3.1 块存储瓦片 2.3.2 高精度 2.4 创建空间索引 一、优化背景 TIN指不规则三角网,是针对连续三维空间的不规则划分,其最小单元为不规则三角…

[附源码]Python计算机毕业设计高校课程思政案例库系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

【Vue路由】多级路由、路由传参、命名路由、params使用

文章目录多级路由案例实验总结路由传参案例实验总结命名路由路由的params参数多级路由 案例实验 我们尝试做出如下的效果&#xff1a; 首先项目结构&#xff1a; 我们直接看四个路由组件&#xff1a; About.vue <template><h2>我是About的内容</h2> </…

Android 音视频采集那些事

音视频采集 在整个音视频处理的过程中&#xff0c;位于发送端的音视频采集工作无疑是整个音视频链路的开始。在 Android 或者 IOS 上都有相关的硬件设备——Camera 和麦克风作为输入源。本章我们来分析如何在 Android 上通过 Camera 以及录音设备采集数据。 Camera 在 Andro…

web网页设计期末课程大作业:家乡旅游主题网站设计——河北8页HTML+CSS+JavaScript

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

【爬虫实战项目】Python爬虫批量旅游景点信息数据并保存本地(附源码)

前言 今天给大家介绍的是Python爬虫批量下载旅游景点信息数据&#xff0c;在这里给需要的小伙伴们代码&#xff0c;并且给出一点小心得。 首先是爬取之前应该尽可能伪装成浏览器而不被识别出来是爬虫&#xff0c;基本的是加请求头&#xff0c;但是这样的纯文本数据爬取的人会…

丰立智能在创业板上市:总市值达到33亿元,王友利夫妇为实控人

12月15日&#xff0c;浙江丰立智能科技股份有限公司&#xff08;下称“丰立智能”&#xff0c;SZ:301368&#xff09;在深圳证券交易所创业板上市。本次上市&#xff0c;丰立智能的发行价格为22.33元/股&#xff0c;发行数量为3010万股&#xff0c;募资总额约为6.72亿元&#x…

企业数字化进程中,商业智能 BI 如何降本增效

当下形势&#xff0c;不稳定性已是常态&#xff0c;国际形势复杂多变&#xff0c;疫情对各行各业的企业影响巨大&#xff0c;市场环境日新月异&#xff0c;要想在激烈的竞争中站稳脚跟&#xff0c;实现企业盈利&#xff0c;必须降本增效。你是否考虑过利用数字技术这些新手段让…

关于Revit中门窗插入问题技巧和门窗生成

一、Rvit中门窗插入时需要注意的问题和技巧 1.在平面中插入门窗时&#xff0c;在键盘中输入SM门窗会自动定义在墙体的中心位置&#xff0c;如图1所示。 2.空格键可以快速调整门开启的方向 3.在三维视图中插入门窗时&#xff0c;窗户的位置可以任意插入&#xff0c;而插入的门系…

基于springboot休闲娱乐代理售票系统设计与实现的源码+文档

摘要 网络的广泛应用给生活带来了十分的便利。所以把休闲娱乐代理售票管理与现在网络相结合&#xff0c;利用java技术建设休闲娱乐代理售票系统&#xff0c;实现休闲娱乐代理售票的信息化。则对于进一步提高休闲娱乐代理售票管理发展&#xff0c;丰富休闲娱乐代理售票管理经验…

math_常用放缩不等式及其变形@指数@对数@三角函数@一次函数

文章目录三角函数对数分式x>0x>0x>0x∈(0,12π)x\in(0,\frac{1}{2}\pi)x∈(0,21​π)正弦正切x∈(0,1)x\in(0,1)x∈(0,1)有界性正弦余弦反三角x∈Rx\in{R}x∈R指数和幂三角函数对数分式 x>0x>0x>0 sin⁡x<x(x>0)\sin{x}<x(x>0)sinx<x(x>0)…

[GYCTF2020]Easyphp

打开界面&#xff0c;一个登陆的窗口&#xff0c;想到sql注入 然后查看源码没有多余的提示 然后试了一下常见的www.zip成功下载文件 index.php发现了包含文件 <?php require_once "lib.php";if(isset($_GET[action])){require_once(__DIR__."/".$_…

数据结构 | 红黑树、平衡二叉树旋转、并查集

一、红黑树 1.1、红黑树的定义&#xff08;左根右&#xff0c;根叶黑&#xff0c;不红红&#xff0c;黑路同&#xff09; 前提&#xff0c;对于一棵二叉排序树(或者说二叉搜索树)&#xff0c;如果满足以下定义则是红黑树&#xff1a; ①每个结点或是红色&#xff0c;或是黑色的…