13 款惊艳的 Node.js 框架——第2部分
【编者按】本文作者为 Peter Wayner,主要介绍13款至精至简的 Node.js 框架,帮助你简化高速网站、丰富 API 以及实时应用的开发流程。本文系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文第二部分。点此查看本文的第一部分。
Node.js 推出至今也有些年头了,但它就像初生的太阳,充满朝气。人们不断地探索更新更好的平台信息发布方式,于是选择也越来越多。这些努力最终催生了多款 Node.js 框架,不论是 Node.js 爱好者还是新手,都可以尽情探索,寻求新的提升。下文将介绍另外7款不错的 Node.js 框架。
7、Hapi

借助 Hapi 框架,可以搭建完整的网站。但是,很多 Hapi 用户专注于用其打造从后台抽取数据,并快速高效地进行发布的服务。每台服务器只是一组映射的集合,这些映射将 URL 路径对应到生成结果的函数,而这些路由则通过 Hapi API 进行配置,而不是写入新代码中。此外,Hapi 社区支持多种多样的插件,可用于处理搭建服务时必要的身份验证、安全等问题。
上图展示了 Boom 插件正式判定的几个标准化错误,Boom 插件提供了一组工具,可以帮助用户更好地了解可能出现的 HTTP 错误。
Hapi 基于要求基本属性的许可证发布,其 GitHub 地址在此。
8、Sails.js

如果你需要打造一个企业级的自定义 Web 应用,Sails.js MVC 框架能帮助你处理许多应用核心任务,同时适应性很高,能与其他工具协作。据其维护人员称:Sails 不仅“无所谓前端环境”,而且能适配“任何数据库”。并且,如果你使用该框架生成的标准 REST API,其中的大部分实现过程都是自动化的。如果你喜欢 Ruby 的惯例哲学以及 MVC 的分离特性,Sails 的一切会显得似曾相识,你也能很快上手。
上图展示了一个 Sails 应用的基本目录结构。
Sails 基于 MIT 许可证发布,其 GitHub 地址在此。
9、StrongLoop

创建 API 的大部分工作都可以自动化。一旦知道了数据模型,搭建用于数据编辑的工具在很大程度上只是练习而已。StrongLoop 自动化了大部分此类操作,并添加了针对大多数大型数据存储,诸如 Oracle、MySQL 及 MongoDB,的连接器。此外,为了提高适应性,他们不是支持随时间变化的动态数据模型,就支持带有固定模式的静态模型。这由你决定。此外,还提供了一个现成的安全层,具备访问控制表及一些不错的移动服务。以上一切都是基于 Express 搭建的,因此,你要从 Express 的全部功能集入手。
上图展示了 StrongLoop 的 API 探索工具。
对于测试项目,StrongLoop 可基于混合型开源许可证发布。其 GitHub 地址在此。
10、ActionHero

许多框架都把为全功能用户提供高端支持设为目标,这些用户往往运行着浏览器、通过 JSON 实现交互。ActionHero 不仅能实现这一点,还在低端,通过有线协议与 TCP 直接通信。如果你需要比 JSON 更为简单的数据格式,这就非常方便了。此外,如果你想发送原始文件,这一机制也大有益处,因为 ActionHero 的发布方式与 CDN 类似,不会要求你运行 Apache 或 Nginx。
上图展示了 ActionHero 处理不同动作以及与 Redis 连接的栈结构。
ActionHero 基于 Apache 许可证发布,其 GitHub 地址在此。
11、Keystone.js

Express 与 MongoDB 是 Node.js 栈的关键组成部分。但是,你需要将二者结合,再添加一点新的功能,才能真正实现消息传递。Keystone.js 旨在联结 Express 与 MongoDB 以实现一个内容管理系统。不过,借助于 Keystone 提供的 Yeoman 框架构建服务,这一过程已经大为简化。Yeoman 能帮助你填好文件,安装好运行博客或博文等内容所需的所有组件。
上图展示了一个使用 Yeoman 及 Keystone 搭建的图片共享演示网页的一部分。
Keystone 基于 MIT 许可证发布,其 GitHub 地址在此。
12、Sequelize

像 PostgresQL 或 MySQL 之类的 SQL 数据库来自事务处理世界,你发出一个命令,进而等待答复。而 Node 则建立于在 JavaScript 中颇为常见的异步回调架构。Sequelize 将二者进行了整合。当你为其支持的五大数据库中的任意一种创建 SQL 查询时,Sequelize 会发送查询,并承诺在数据库返回查询结果时调用你的函数。它将旧世界与新的架构命令(architectural imperative)进行了联姻。
上图展示了如何重写一条旧 SQL 查询以适应 Node 摩登世界。
Sequelize 的源码基于要求基本属性的许可证发布,其 GitHub 地址在此。
13、Mean.io

实际上,Mean 并不是一个 Node.js 框架。它是一组预先优化过以协调运行的框架与技术的集合。作为缩略词,MEAN 实际上代表着 MongoDB, Express, Angular 以及 Node。每个组成成分本身都是 Node 生态系统中最流行的部分。当它们聚集在一起时,使用起来甚至更加方便。
上图展示了 Node 包管理器如何安装这些成分,以及用于开发应用的一个新指令: mean。
组成 Mean 的各个成分有其自己的许可证以及源码库。
OneAPM 能帮助您轻松锁定 Node.js 应用性能瓶颈,通过强大的 Trace 记录逐层分析,直至锁定行级问题代码。以用户角度展示系统响应速度,以地域和浏览器维度统计用户使用情况。想阅读更多技术文章,请访问 OneAPM 官方博客。
本文转自 OneAPM 官方博客
13 款惊艳的 Node.js 框架——第2部分的更多相关文章
- 13 款惊艳的 Node.js 框架——第1部分
[编者按]本文作者为 Peter Wayner,主要介绍13款至精至简的 Node.js 框架,帮助你简化高速网站.丰富 API 以及实时应用的开发流程.本文系国内 ITOM 管理平台 OneAPM ...
- LoopBack – 开源的,可扩展的 Node.js 框架
LoopBack 是建立在 Express 基础上的开源 Node.js 框架,专门为 Mobile,Web 和其他设备做了优化.LoopBack 能够连接到多个数据源,使用 Node.js 编写业务 ...
- Node.js 框架
Node.js的是一个JavaScript平台,它允许你建立大型的Web应用程序. Node.js的框架平台使用JavaScript作为它的脚本语言来构建可伸缩的应用. 当涉及到Web应用程序的开发 ...
- node.js框架express的安装
node.js框架express的安装 首先假定你已经安装了 Node.js,接下来为你的应用创建一个目录,然后进入此目录并将其作为当前工作目录. $ mkdir myapp $ cd myapp 通 ...
- 不可错过的Node.js框架
前言 Node.js是由Ryan Dahl于2009年创建的.它是一个开源的跨平台运行时环境,用于开发服务器端和网络应用程序,它是基于Google Chrome V8 JavaScript引擎构建的. ...
- 【转】node.js框架比较
我偶然间看到这篇文章,转这个文章并没有什么含义,仅仅是感觉总结的不错,对于新学node的友友们来说希望这篇文章为大家对 Node.js 后端框架选型带来一些帮助,学习不再迷茫,也是让我有个保存,以后参 ...
- Node.js 框架对比之 Express VS Koa
背景 上图是一个典型的采用 Node.js 开发 web 应用的前后端结构,下面介绍一下 Node 服务层在其中的作用以及使用 Node.js 的一些优劣. Node 服务层作用: 请求代理 传统做法 ...
- 初探 Node.js 框架:eggjs (环境搭配篇)
eggjs 是一个优秀的 Node.js 框架 概述:为什么标题上说 eggjs 是一个优秀的 Node.js 框架(可跳过)? 换言之,我们为什么选择 eggjs 进行开发而不是之前初学时使用的 E ...
- [转]Node.js框架对比:Express/Koa/Hapi
本文转自:https://www.cnblogs.com/souvenir/p/6039990.html 本文翻译自: https://www.airpair.com/node.js/posts/no ...
随机推荐
- SQL Server 2016 需要单独安装 SSMS
默认安装完 MSSQL 后,不自带 SSMS 的管理工具了,需要的话可以单独安装,貌似更专业了一些. https://msdn.microsoft.com/library/mt238290.aspx ...
- 文件句柄FileDescriptor的hanle/fd两个字段分析
对于FileInputStream/FileOutputStream/RandomAccessFile,使用handle来表示底层的文件句柄 对于ServerSocket/Socket,使用fd来表示 ...
- maven - 使用nexus 搭建maven私服
1, java环境 [wenbronk@localhost nexus]$ java -version java version "1.8.0_121" Java(TM) SE R ...
- 面试:C++输入数据
最近在做笔试题,相比与leetcode,笔试题都是要自己写输入输出的,每次在这里都浪费了不少时间,这篇文章总结了一下在C++中怎么向数组中输入数据. 1. 先输入数组大小,然后输入数据数据,中间以空格 ...
- 【杂谈】从CGI到Servlet
访问服务器的静态页面 每个Web服务器都运行着一个HTTP服务软件,用于响应web浏览器的请求,返回客户想要的页面.HTTP服务器都会有一个文件夹用于放置相关的页面文件,默认是 /user/loca ...
- Spring MVC - MultipartFile实现文件上传(单文件与多文件上传)
准备工作: 需要先搭建一个spirngmvc的maven项目 1.加入jar包 <dependency> <groupId>commons-fileupload</gro ...
- mongodb备份策略
概述 数据库的备份非常非常非常重要!!!否则出问题连哭的机会有没有(欲哭无泪)今天主要是做一个mongodb的数据库备份. 1.关于备份 备份其实很简单,这里选择的是对mongodb中的某个库进行全备 ...
- Netty 源码剖析之 unSafe.read 方法
目录: NioSocketChannel$NioSocketChannelUnsafe 的 read 方法 首先看 ByteBufAllocator 再看 RecvByteBufAllocator.H ...
- 使用并发工具实现 RPC 调用流量控制
前言 RPC 服务中,每个服务的容量都是有限的,即资源有限,只能承受住给定的网络请求,所以,在设计 RPC 框架的时候,一定要考虑流量控制这个问题.而 Java 中,实现流量控制有很多中方式,今天说 ...
- EWS 通过SubscribeToPullNotifications订阅Exchange删除邮件
摘要 在使用拉通知的方式监听exchange邮件的时候,无法监听到收件箱删除的邮件.最后通过调试发现,在删除收件箱邮件的时候,是将收件箱的邮件移动到了deleted item文件夹,会触发Moved事 ...