0%

NodeJS系列一:起源、特点以及应用场景

起源

NodeJS是一个基于Chrome V8引擎的JavaScript运行环境,由Ryan Dahl创造的(你知道的,就是后来又搞了deno大家在那个项目issues里面吐槽学不动-了),可以让我们的JavaScript代码在服务器端运行,RY的初衷是写一个基于事件驱动以及非阻塞I/O的的web服务器,所以最开始,RY也称NodeJS为web.js,但后来项目的发展显然超出了他的预期,这也归功于JavaScript的门槛低,简单易入门。大佬曾经评估过其它语言:C的开发成本较高而且对于一般的开发来说是比较难懂的;大佬想用Haskell,所以就放弃了…很庆幸大佬选中了JavaScript,给了我们前端er轻松进入后端的机会,当然,这也造就了一大堆自称“全栈开发者”同行。

特点

主要特点一就是单线程,这也是JavaScript的一大特点,NodeJS保持了浏览器中JavaScript的这个特点,好处就是不用在意线程之间的状态同步,也没有死锁等问题,不好的地方也就是单线程的弱项:无法利用多核CPU;错误会引起应用退出;大量计算占用CPU会导致无法继续调用异步I/O

第二大特点就是事件驱动:NodeJS会把所有的异步操作使用事件机制来解决,说到这个让我想起了回调地狱,不过现在好多了,有了Promise和async/await,就是try/catch总让我觉得不那么优雅

第三个特点是非阻塞I/O:也就是在程序读取文件的时候不会阻塞代码的继续执行

另一个特点就是很容易的让同一个开发者同时具备前端和后端的开发能力,这其中的好处自然也不用我多说了,纵观上一个十年,JavaScript的发展突飞猛进,不论是在前端,还是在服务器端,都是大放异彩,各种优秀的前后端项目也是层出不穷,JavaScript程序员数量也是翻倍的增长,不过还是有巨大的人才缺口在等着后来者去填补

One more thing:总会被忽略的轻量级和跨平台特点以及简单的环境搭建都是可以大大的提升程序员编程幸福指数的

应用场景

  • 在线聊天:socket.io是个好东西~
  • restful API:把复杂且非敏感的逻辑运算交给前端完成,后端负责准备数据,这样就可以利用NodeJS的高并发这个特点,构建restful API,既有高并发,又得到了高性能
  • 其实我还想说一个构建跨平台桌面应用程序的东西:Electron