当前位置: 首页 > 科技观察

面试官:说说你对Node.js的理解?的优点和缺点?应用场景?

时间:2023-03-20 22:11:05 科技观察

本文转载自微信公众号《JS日报》,作者慧慧。转载本文请联系JS每日一问公众号。1.什么是Node.js?它是一个开源和跨平台的JavaScript运行时环境。它在浏览器之外运行V8JavaScript引擎(GoogleChrome的核心)。使用事件驱动、非阻塞和异步输入输出模型等技术来提高性能是可以理解的。因为Node.js是一个服务器端的、非阻塞I/O、事件驱动的JavaScript运行环境,非阻塞异步Nodejs使用的是非阻塞I/O机制,不会引起任何I/O操作。阻塞,当它完成时,以时间的形式通知执行操作。比如执行访问数据库的代码后,会立即转向后面的代码,将数据库返回结果的处理代码放在回调函数中,从而改进程序。event-driven事件驱动的执行效率是,当有新的请求进来时,会将请求推入一个事件队列,然后通过一个循环来检测队列中的事件状态变化。如果检测到状态发生变化的事件,则执行该事件对应的处理代码,一般是读文件等回调函数。文件读取完成后,会触发相应的状态,然后使用相应的回调函数进行处理。2.优缺点优点:处理高并发场景下的性能对于I/O密集型应用更好,也就是说应用在极限运行的时候,CPU占用率还是比较低的,大部??分时间花费在I/O硬盘内存读写操作上。因为Nodejs是单线程的,缺点是:不适合CPU密集型应用只支持单核CPU,不能充分利用CPU可靠性低,一旦一部分代码崩溃,整个系统就会崩溃3.应用场景借助Nodejs的特点和缺点,将其应用场景分类如下:擅长I/O,不擅长计算。因为Nodejs是单线程,如果计算(同步)过多,会阻塞本线程的大量并发I/O,应用不需要进行很复杂的处理。配合websocket开发长连接实时交互应用具体场景可表述如下:第一类:用户表单采集系统、后台管理系统、实时交互系统、考试系统、联网软件、高并发web应用第二类:基于web、canvas等的多人网络游戏第三类:基于web的多人实时聊天客户端、聊天室、图文直播第四类:单页浏览器应用第五类:操作数据库,提供基于JSON的前端和移动端其实Nodejs几乎可以实现所有的应用,只要考虑是否适合使用即可。