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 直到现在,其实语言只是一种工具,例如在后端中,抛开语言这一层,还有很多东西是需要我们去不断学习的 。
推荐阅读
-
拾物记|武则天为何对狄仁杰如此器重甚至在他去世之后哀叹朝堂空矣
-
虞书欣安崎向岳云鹏认错|虞书欣安崎向岳云鹏认错 怎么回事?两人有什么纠葛
-
IT那些事儿苹果不再赠送充电器和耳机 一切向利润看齐的野心
-
轮滑|60岁大爷玩轮滑和未牵绳的狗相撞,如何划分责任引争议
-
-
可爱的贵生|雨过天晴,彩虹出现,4大星座爱情重逢,再度相爱,未来一周
-
「懒懒的叉子」这样做难道就不怕挨打吗?,搞笑GIF趣图开心一刻:小哥很皮啊
-
小爱说游戏我把他一个月工资扣了,Uzi极限开团Godv:他要不是俱乐部老板
-
「玛加迪镇」通讯:“中国维和官兵为我们圆梦”——记中国赴黎巴
-
生肖|11月中下旬多有机遇降临,贵人提拔点拨,人生与众不同的3生肖
-
港股挖掘机|| 康德莱医械(01501)涨超5% 中期纯利同比增长42.58%至6739.3万,港股异动
-
斑马网|再遭泄露噩梦!网上惊现《最后生还者2》多人模式视频
-
孩子|郑州暴雨众人游泳破窗救下三人 救援过程惊心动魄网友点赞
-
起跑线|汪涵6岁儿子上8个兴趣班被逼到崩溃:鸡娃的隐患,将在10年后爆发
-
雨晖游戏迷|降服金鱼精时,观音为何不梳妆就来了,你看看她念的咒语是什么,原创
-
爱云资讯 5.0版本又在云栖大会亮相了,真香!斑马智行4.0刚上车
-
脸部穴位图及作用?用什么怎么能把脸化装的白白的粉嫩的啊???谁能详细点教教我??谢谢!!?
-
-
翡翠|棉不是瑕疵吗?为什么高冰种雪花棉,能够卖上这么昂贵的价格
-
「润涵谈娱乐」为给纪晓岚“降火”,乾隆皇帝赐给纪晓岚两个宫女