除了在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