Node.js 避免了由于需要等待输入或者输出(数据库、文件系统、Web服务器…)响应而造成的 CPU 时间损失,这得益于 Libuv 强大的异步 I/O 。
【Node.js 是什么?我为什么选择它?】事件与回调在 JavaScript 中已是屡见不鲜,同时这种编程对于习惯同步思路的同学来说可能一时很难理解,但是这种编程模式,确是一种高性能的服务模型 。Node.js 与 Nginx 均是基于事件驱动的方式实现,不同之处在于 Nginx 采用纯 C 进行编写,仅适用于 Web 服务器,在业务处理方面 Node.js 则是一个可扩展、高性能的平台 。
起初 Node.js 只能运行于 linux 平台,在 v0.6.0 版本后得益于 Libuv 的支持可以在 windows 平台运行 。
Node.js 适用于什么
讲了这么多那么谈下 Node.js 适合什么场景?
Node.js 的优势主要在于事件循环,非阻塞异步 I/O,只开一个线程,不会每个请求过来我都去创建一个线程,从而产生资源开销 。
通常我们可以使用 Node.js 来做为中间层,负责组装数据提供 API 接口给到前端调用,这些数据源可能来自第三方接口或者数据库,例如,以前可能我们通过后端 Java、php 等其它语言来做,现在我们前端工程师通过 Node.js 即可完成,后端则可以更专注于业务开发 。
既然提到了 ResultFul API,顺便推荐一个去哪儿开源的 API 管理工具 YAPI:https://github.com/YMFE/yapi 使用的 Node.js 进行开发的(声明下这里不是打广告,只是这个用起来真的很赞!忍不住向给大家推荐!) 。
RPC(Remote Procedure Call)中文名「远程过程调用」,也许你对它很陌生,但是在当今微服务模式下,我们可能是针对功能或者具体的业务形态进行服务化,那么服务之间的通信一种常见的模式我们都知道通过 HTTP 来实现,了解网络模型的同学可能知道,如果我们现在通过 TCP 的方式是不是会更高效呢?
当然是的,HTTP 属于应用层协议,在这之下就是传输层,显然以 TCP 形式是很有优势的,RPC 服务也就是采用的 TCP,现在出名的 RPC 服务例如,Google 的 gRPC、阿里的 Dubbo 。
可以做为基础工具,前端领域中的编译器、构建工具、搭建脚手架等 。比较出名的例如 Webpack、Gulp 都是很成功的 。
Nodeclub 是使用 Node.js 和 MongoDB 开发的社区系统,界面优雅,功能丰富,小巧迅速,可以用它搭建自己的社区 。Cnode 社区就是一个成功的例子,Cnode 地址:https://cnodejs.org/
https://github.com/cnodejs/nodeclub
Backend For Frontend,简称 BFF,服务于前端的后端,并非是一种新技术只是一种逻辑上的分层,在这一层我们可以做一些资源的整合,例如:原先前端需要从三个不同的地方来获取资源,那么,有了这一层之后,我们是不是可以做个聚合,统一处理之后返回给前端,同时也不授后端系统的变迁,导致也要去更改 。
这将是未来经常会听到的一个词,ServerLess 是一种 “无服务器架构”,它不需要开发者去关心运维、流量处理这些工作,开发者则可以更关注于业务本身 。
函数即服务,那么写一个函数就可以实现一个 API 接口给到前端,显然对开发工作是减轻了很多,在 JavaScript 中函数则是一等一的公民,在 ServerLess 这一场景下 Node.js 本身也很轻量级,还是拥有着很大的优势 。
微服务也是近两年一个很火热的词,这里提几个微服务主要的特点:小型服务、以独立进程运行、可以使用不同语言 。那么这里则可以根据业务形态来选择不同的语言实现,Node.js 本身也是很轻量级的,实现起来也很快,在一些 I/O 密集场景还是很适用的 。
什么场景选择什么工具,没有最好的只有更合适的!
为什么选择 Node.js
谈一些个人感受及经历,其实接触计算机行业说不晚也不早,在高中阶段开始接触的编程,在接触 Node.js 之前也学过很多编程语言,大致曲线是这样的 VB(这个是在高中时期)、C、C#(.Net)、Java、PHP 这些都是在学校的时候没事玩弄的,还有接触到前端,真的很杂,但没有一样精通的,这也是最可怕的,在大三暑假去了北京一家公司在那里实习了两个月 PHP,但是之间有遇见做 Node.js 的同学,当时很好奇,哇奥,这是什么东东,竟然可以让 JavaScript 做后端,就是没见过市面那种 。后来简单的做了了解,回到学校之后开始学习 Node.js 网上找各种资料看,阴差阳错吧,就这样选择了 Node.js 直到现在,其实语言只是一种工具,例如在后端中,抛开语言这一层,还有很多东西是需要我们去不断学习的 。
推荐阅读
-
-
【全视角】又定档一部新剧,网友:霸屏的节奏,潘粤明《龙岭迷窟》刚上线
-
-
AM585东南广播:居全国前列,福建日产口罩2866万个
-
-
鸢尾时尚秀|路人街拍,时髦好看的印花衬衫搭配牛仔裙,看起来很迷人
-
商业综合报道开启“债券评级”新格局!大路网信用3.0带来颠覆性科技创新
-
-
网易娱乐|陈钰琪秒删是什么情况 陈钰琪发适可而止是什么意思
-
哭笑不得|班级“倒数第一”小学生试卷曝光,老师看完哭笑不得:脑回路清奇
-
混世魔王程咬金|程咬金墓出土国宝级文物,真实身世被揭开,原来我们都被演义骗了
-
-
-
「IT之家」Win10 如何安全捐赠 CPU 研究算力,全球抗击新冠病毒,微软
-
孕婴帮:一家四口患白血病,元凶是娃喜欢吃的这道菜,5个食品少给娃吃
-
-
形成新的三巨头,保罗回归,但是德帅仍不死心,轮换的五小阵容
-
-
手机之家|1 亿像素主摄 是产品降级还是另有隐情,小米新款超大杯取消
-
OPPO Reno5 Pro+正式发布 影像、游戏全新体验升级