不只是Web:十大令人振奋的Node.js项目

除了在Web服务器领域大展拳脚之外,Node.js同样也在无处不在的JavaScript应用程序创建当中散发出耀眼的光芒。

Node.js:不只是网站

就在仅仅几年之前,Node.js初始版本刚刚诞生时还只是一款谷歌出于尝试目的、利用Chromium V8打造而成的服务器端JavaScript引擎;然而时至今日,它已经成为一整套全面开花的完整平台。PayPal等高流量网站的工程师们曾经撰写出大量经验心得,与大家分享Node.js如何令Web框架的创建工作变得更加简便易行。

不过Node.js绝不只是一套Web堆栈——作为一项技术,它在多个不同层面焕发出勃勃生机。我们将通过今天的文章一同了解利用Node.js打造出的各类项目,其中包括服务器监控、流媒体、远程控制以及桌面与移动应用等等。在了解了这么多背景信息后,大家一定也会发出这样的感慨——Node.js的价值已经远远超出了常见Web服务器的范畴。

NodeOS

这款由Jacob Groundwater打造的项目在诞生之日起便承载着巨大的野心——希望围绕Linux核心建立起一套新型环境。其中Node.js作为“shell”,而Node的mpn则被用于系统包管理器。到目前为止,NodeOS的首个版本以Docker与Vagrant为创建基础——好的方面在于这样能使早期版本在共享、fork以及迭代方面更加便捷;但负面影响是系统运行所涉及的hoops过多。

不过总体来说,该项目的核心思路仍然颇具吸引力。大家不妨试想一下,Node.js不仅将被用于包管理,而且还负责打理脚本、界面以及大部分其它操作系统创建所必需的任务。

Noduino

希望通过网页控制自己Arduino的硬件技术人士们有福了,Noduino允许大家经由WebSocket或者串连接实现Arduino访问。该项目目前尚处于起步阶段,但驱动主板上的LED模块、捕捉来自Arduino的事件(例如按下按钮)等常见功能都可以正常支持。

Node-WebKit

作为专门针对Node.js应用程序的运行时,Node-WebKit允许大家将应用程序打包为精简化Chromium副本并将其交付至任何Node.js及Chromium已经移植过的平台(目前包括Linux、Mac OS X以及Windows)。打包的过程可以说非常简单。我们只需要将Node.js应用程序副本进行压缩、再添加一份清单,这就完成了。大家甚至可以通过Node.js方法及对象实现应用程序窗口菜单访问与其它平台原生操作。

跨平台应用程序部署从来不是一件简单的工作。如果大家希望能利用Web技术开发出桌面应用程序,那么不妨将Node-WebKit视为其它那些更大、更笨重框架的有益补充。

PDFKit

作为一款针对Node.js的PDF文档创建库,PDFKit允许大家利用一套“HTML 5 canvas类API”创建PDF文件,同时支持矢量图形创建以及字体嵌入。由于项目尚未彻底成熟,目前不少标准PDF功能(例如文档安全保护以及表格创建)仍然处于开发当中,不过文本换行、项目符号列表、高亮显示以及注释信息等功能已经正常可用。需要提醒大家的是,我们最好将PDFKit作为一款从头开始创建PDF文件的工具,而不要将其用于文件转换。如果各位需要对现有PDF文件进行调整,最好还是使用另一款名为“Scissors”的Node项目。

Log.io

Node.js在快速与Web两方面具备惊人的优势——而这两种特性无疑是大家最希望在监控工具当中看到的。作为一款实时日志监控系统,Log.io利用Socket.io库直接向大家的浏览器发送活动报告。在这里不存在持久层,受监控日志文件中的任何内容变动都会立即被转发给服务器、然后再传递到我们面前。更重要的是,有了第三方处理机制的辅助,系统只需将格式正确的信息发送至服务器监听TCP接口即可。

Nodecast或者Leapcast

谷歌的Chromecast还衍生出至少两款Node.js应用程序,它们能够帮助大家直接将基于移动设备的视频或者音乐发送到PC机上。只需在PC端运行Nodecast或者Leapcast,启动我们的移动设备,选择一款支持Chromecast的应用程序,而后大家即可将移动端的内容传输到电脑上。就这两者而言,Nodecast的复杂程度要低得多,但其功能也更弱一些。目前它能够通过测试的媒体来源只有YouTube与谷歌音乐。请大家别把Nodecast与Nodecast库弄混了,后者的作用在于为设备(例如Chromecast)提供使用拨号发现协议所需要的连接。

Nexe

在众多看似渺小但却实用性极高的Node.js工具当中,Nexe正是颇具代表性的一款——它的作用在于为Node.js应用创建单独存在的可执行文件。生成的结果可以在无需额外安装Node.js运行时的前提下直接运行,这就帮助非技术终端用户彻底告别了所有与Node.js应用程序运行存在依赖关系的组件。(显然,如果大家发布的是一款不涉及图形用户界面的Node.js应用,那么Nexe肯定能帮上大忙;不过对不起拥有图形用户界面的应用,Node-WebKit之类的方案才是正确的选择)。再来说说缺点:Nexe最大的问题在于目前还无法作用于Windows平台(只适用于Linux与Mac OS X),而且它也不支持原生Node.js模块。

Hyro

在利用Node-WebKit所打造的应用程序当中,Hyro这款实时HTML 5编辑器可谓一枝独秀。原始HTML内容被显示在当前页面的左手边,而结果内容则被显示在右手边。语法高亮功能由CodeMirror提供。Hyro项目的开发者并不打算将其打造成一款成熟的Web IDE,而只是将其塑造为一套专门针对HTML或者CSS的轻量级记事本方案。从这个角度讲,它可以被看作Node.js在适当支持应用程序却又不过度介入方面的典型范例。

Hy0072o

在利用Node-WebKit所打造的应用程序当中,Hyro这款实时HTML 5编辑器可谓一枝独秀。原始HTML内容被显示在当前页面的左手边,而结果内容则被显示在右手边。语法高亮功能由CodeMirror提供。Hyro项目的开发者并不打算将其打造成一款成熟的Web IDE,而只是将其塑造为一套专门针对HTML或者CSS的轻量级记事本方案。从这个角度讲,它可以被看作Node.js在适当支持应用程序却又不过度介入方面的典型范例。

Haroopad

作为另一款将Chromium作为自身UI的Node.js应用程序,Haroopad允许大家Markdown类型的文本,并将其生成为HTML。编辑与查看在窗口中并排而列并同步滚动,而且始终保持实时更新。文档也能够以HTML或者Markdown格式通过邮件进行发送,通过这种方式大家可以在完全无需使用插件的前提下将其发送至Tumblr或者添加到Evernote当中。说到这个,我们希望Haroopad的开发人员们能添加一套插件架构。像这样的一款程序存在很大改进空间。虽然他们一直在努力拓展多种格式,但目前Haroopad仍然只能支持HTML这一种。

TiddlyWiki5

这也是我个人最喜爱的项目。虽然命名显得不够简洁,但TiddlyWiki的才艺实力简直无穷无尽——这是一套维基系统,能够在不连接网络或者Web服务器的情况下通过单独HTML文件或者本地方式运行。经过彻底重新设计的版本5能够直接与Node.js相集成,从而实现大量原本独立运行模式下根本无法完成的功能。到发稿之时,TiddlyWiki 5仍然处于测试阶段,不过根据时间规划我们将在今年年底迎来它的正式版本。

原文链接:http://www.infoworld.com/slideshow/131906/beyond-the-web-10-surprising-nodejs-projects-232369#slide1

原文发布于微信公众号 - Golang语言社区(Golangweb)

原文发表时间:2018-03-08

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏FreeBuf

魔兽世界中招:一条命令行就能劫持你的游戏!

最近出现了一种涉及社工技术的新型游戏攻击骗局,攻击者利用了魔兽世界(World of Warcraft,WoW)游戏插件中一个隐藏的功能。 新型攻击 想象一下这...

4628
来自专栏Crossin的编程教室

【我问 Crossin】Crossin 这个名字是什么意思?

1 新建 git 项目是用 git init 还是 git clone,git init 和 git clone 都是创建新仓库,两个有什么区别? git in...

3719
来自专栏面朝大海春暖花开

对java前后端分离的理解

在工作期间,无非就是ui设计页面,前端开发html,之后将做好的页面交给我,我负责后台逻辑一件html的页面渲染。

2K5
来自专栏*坤的Blog

提高效率

1932
来自专栏技术小黑屋

Google Play Services 7.5新增API及多项特性

本文为 InfoQ 中文站特供稿件,首发地址为:文章链接。如需转载,请与 InfoQ 中文站联系。

1282
来自专栏京东技术

小巧“玲珑”—京东物流自动化测试平台核心功能首次曝光

负责京东物流研发的全部产品线的质量保障工作,是京东集团最早开始全面实施自动测试的团队之一。经过多年的技术沉淀,围绕质量、效率、过程改进、技术提升等方面,去发现、...

1674
来自专栏恰童鞋骚年

《大型网站技术架构》读书笔记之七:随需应变之网站的可扩展架构

此篇已收录至《大型网站技术架构》读书笔记系列目录贴,点击访问该目录可获取更多内容。

1083
来自专栏菩提树下的杨过

这几天遇到的关于IE6/sql2008/win2003的奇怪bug

前一阵对公司网站的购物车功能进行了改造,允许不同商家的商品放到同一个购物车,下单时自动按商家来拆分订单。 本地测试时一切正常,IE6/IE7/IE8均没问题。部...

1896
来自专栏Python中文社区

用Python把告警日志发到微信上

專 欄 ❈RaPoSpectre,Python中文社区专栏作者。 网站:www.rapospectre.com❈ 前言 笔者所在公司项目的告警信息会通过钉钉发...

8079
来自专栏java一日一条

内存不足:杀死进程还是牺牲子进程

早上6点,我不得不开始处理“叫醒”我的一些问题。因为当这些问题发生的时候,我的手机铃声响了。昏睡中的我非常不情愿地拿起了手机,检查我是否疯狂到将叫醒闹钟设在了早...

1291

扫码关注云+社区

领取腾讯云代金券