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 ...
随机推荐
- Unity学习系列一简介
一.简介 Unity的目标是为了提升"依赖注入"的思想,去建立更加松耦合的系统.patterns & practices 小组在那个时候实现DI的方式和我们现在认为的DI有 ...
- CSS3实现纸张边角卷起效果
html代码 <body> <div class="page"> <div class="page-box"> <h1 ...
- CentOS安装PHP7+Nginx+MySQL
本文属于动手搭建PHP开发环境的一部分,更多点击链接查看. 本文以centos6为例.命令部分均省略sudo命令. 安装PHP 下载 http://cn2.php.net/distributions/ ...
- 如何自定义Tomcat Realm实现我们的用户认证需求
导读 Tomcat对于J2EE或Java web开发者而言绝不陌生,但说到Realm,可能有些人不太清楚甚至没有听说过,那么到底什么是Realm?简单一句话就是:Realm是Tomcat中为web应用 ...
- php交叉合并数组
如数组 array1 = array('a', 'b', 'c'); array2 = array('1', '2', '3'); 希望能实现结果 array3 = array('a', '1 ...
- Linux进程间的通信
一.管道 管道是Linux支持的最初Unix IPC形式之一,具有以下特点: A. 管道是半双工的,数据只能向一个方向流动: B. 需要双工通信时,需要建立起两个管道: C. 只能用于父子进程或者兄弟 ...
- UVa 12657 Boxes in a Line(数组模拟双链表)
题目链接 /* 问题 将一排盒子经过一系列的操作后,计算并输出奇数位置上的盒子标号之和 解题思路 由于数据范围很大,直接数组模拟会超时,所以采用数组模拟的链表,left[i]和right[i]分别表示 ...
- 分布式理论(五)—— 一致性算法 Paxos
前言 Paxos 算法如同我们标题大图:世界上只有一种一致性算法,就是 Paxos.出自一位 google 大神之口. 同时,Paxos 也是出名的晦涩难懂,推理过程极其复杂.楼主在尝试理解 Paxo ...
- 浅析libuv源码-获取精确时间
在Timer模块中有提到,libuv控制着延迟事件的触发,那么必须想办法精确控制时间. 如果是JS,获取当前时间可以直接通过Date.now()得到一个时间戳,然后将两段时间戳相减得到时间差.一般情况 ...
- .8-浅析express源码之请求处理流程(1)
这一节就讲从一个请求到来,express内部是如何将其转交给合适的路由,路由又是如何调用中间件的. 以express-generator为例,关键代码如下: // app.js app.use('/' ...