毫无疑问,软件解决方案很少在真空环境下进行,这意味着我们将不可避免地要同集成工作打交道。简单的集成当然不成问题,然而如果集成需求较为复杂,那么需要接入现有应用中的第三方产品可能多达数十种。考虑到具体定制与业务逻辑的复杂性,不同厂商的API开放性与全面性条件可能引发令人头痛的难题。
为了完成相关集成工作,历史上曾出现了一系列天津高端网站设计公司解决方案,包括DOS批处理文件、Linux shell脚本、Perl以及Python等等。但如今,Node.js开始广泛普及,并成为众多从业者的主流选项。具体原因,则分为以下五点。
1. Node.js拥有通用性优势
凭借着JavaScript的超高普及度,Node.js亦拥有可观的用户群体。正因为JS的直观性与风格包容能力,Node.js得以轻松适应服务器端开发需求,并享受规模巨大的JS技术社区的有力支持。
此外,在集成领域,厂商本身亦越来越多地使用着JS及其相关产品。通过这种自给自足的对接方式,外加巨大的JS技能掌握者基础,Node.js表现出独一无二的易用性特征。
另外,Node.js采取运行时内编译的处理方式,意味着其代码具备可读性。再有,Node.js的运行性能亦相当出色。
2. Node.js拥有大量模块
Node.js之所以如此流行,同样归功于广阔的开发者社区能够生不逢时其代码以实现模块化功能,而后结合require()声明进行解释。其基本格式为:
目前已经发布的模块数量极为惊人。这意味着大家能够轻松找到大量适合自身功能需求的现成代码,并通过数行粘合代码将其引入自身项目。MySQL与MongoDB就是其中的典型范例。
各类厂商亦加入到了这一阵营中来。目前众多打包器与客户端皆可通过Node模块的方式交付至工具与应用程序。Twitter的客户端“SDK”就是其中一例。
下面我们来看如何轻松为Moogsoft AIOps系统的用户发布一项示例模块:
模块帮助厂商快速公布API及功能,并将其与本地Node.js代码轻松对接。
3. JSON具备原生性质
JSON,即Javascript Object Notation,是一种轻量级数据交换格式,其拥有众多集成化优势。简单、易学,且能够适应几乎任何用例类型。
JSON具备人类可读性,适用于快速部署与结果维护。另外,JSON比XML更易于解释,并开始逐渐取代XML成为客观层面的数据交换格式。目前主流云供应商几乎普遍采用JSON作为默认的有效载荷。
更值得一提的是,JSON原生于Node.js之内。全部JavaScript值——除原语之外——皆属于对象,且JS当中各类复杂或分层对象皆可以JSON形式描述。这意味着我们仅需几步即可处理JSON载荷。
示例载荷:
可因此处理为:
这种对外部系统间交换数据以代码内方式进行处理的能力,无疑能够极大加快集成工作的执行速度。
4. REST同样原生存在
虽然REST在客观层面讲不算原生,但其实际效果却几乎与原生无异。
Node.js能够原生支持HTTP/HTTPS,因此能够在RESTful端点上轻松执行GET或者POST。即使相关厂商未提供项目必需的js模块,其至少能够提供示例代码以供用户复制及粘贴。
另外,大家亦可利用多种Node模块在隐藏复杂底层机制的同时,实现全面的REST连接能力。(Node.js的HTTP/HTTPS API实际上相当底层,旨在确保不存在任何功能限制。)
为什么REST如此重要?正如JSON已经在客观上成为默认数据交换格式,RESTful Web服务同样快速成为最重要的Web友好协议——对于不少厂商而言,REST已然成为API的同义词。
再有,Node.js的HTTP/HTTPS模块还提供服务器功能,意味着Node.js应用程序能够监听并响应各类REST方法。
如果大家希望发挥应用程序对输出REST的支持能力并提供复杂及丰富的Web服务,则Express Node模块值得一观——其能够快速轻松地完成Web服务器编写。再有,REST及其机器数据表亲WebHook亦适用于构建系统间API以及各类命令与工具。
5. 打包
Node.js模块易于发布及访问的特性成为其拥有极高人气的另一个理由。
在Node.js内置软件包管理器NPM的帮助下,Node模块可实现快速发布与访问。贡献者创建的package.ison文件中包含各项细节与依赖性,并可被推送至NPM公共仓库中供各类访问者使用。
大家使用以下命令即可访问由我们编写的模块:
对于像我这样的Unix老用户来说,命令行同样非常重要。而Node.js能够轻松创建各类命令行工具,同时快速添加各类参数并由NPM实施安装。
举例来说,我们可以通过以下命令安装一款名为myTool的CLI工具:
此命令将对myTool进行全局安装。这意味着Node.js非常适合创建沙箱打包器、脚本、归档以及报告等方案。
除了之前提到的五项理由,随着谷歌V8 JavaScript引擎的每一次迭代,Node.js性能亦将同步提升。虽然我同样尊重Python,然而Node.js已经成为我们目前的最优选项——不知道大家意下如何?