Node.js 是一门在浏览器外运⾏ JavaScript 的语言,运行时引擎是V8(Google Chrome 的内核)。
也就是说能够用同一个技术栈去写web前后端的实现代码,
这个个性应该是在所有语言中应该是举世无双的

Node 是天生非阻塞式的异步io语言
主线程是单线程,主线程中的操作是同步阻塞的。但它把所有须要异步的操作扔给了IO线程池,主线程通过肯定的事件轮询机制与IO线程池交互失去异步数据。,这便是node单线程和事件驱动的精华之处了。
---具体参见NodeJs 的 Event loop 事件循环机制详解

这个个性使得nodejs应用在高并发互联网、物联网、数据中台更具劣势

你可能会问为何具备高并发的劣势?要从以下几点说
1.数据类型是弱类型的劣势,弱类型在传值的时候,是不会去强制转化类型的,弱类型简直都是json操作。因而在数据传递转换方面是缩小了开销的。
例如其余强类型语言,在c层须要转换成承受的vo模型,s层还须要转化成do模型,dao层还须要转化成实体模型。这些在运行时都会在内存中耗费性能。尤其是在数据在乘以万倍以上的状况下。

2.nodejs的异步IO实现的形式,是无锁线程模型,用一个过程实现多个线程的模型,WorkerThread间及主线程间不能应用同一块内存。 这种模型在单节点有比拟高吞吐量与低提早个性,比用Cassandra的实现模型速度要快。

劣势方面,以下几点
1.正是因为是弱类型,所以对于开发的程序员技术上的要求会更多,须要提供清晰的api文档,和残缺单元测试和覆盖率。
2.Cpu密集计算的业务场景,如果业务须要做大量的高复杂度计算,那么选多线程模型语言可能更具备劣势,nodejs须要用多Worker的形式来进步cpu的利用率。

总体言之:
对于其余语言中规中矩,nodejs下限会更高,同时上限也很低。
开发人员如果对业务清晰,多利用其异步个性,在避开nodejs的弱点,那么就能输入更高效的程序。