首页 > 技术文章 > 初识NodeJS

yixin25 2018-04-08 23:15 原文

  惠善一的博客:https://huishanyi.club

  Node.js的学习,尽自己最大努力,去了解,去掌控它。

       对于Node.js,我认为它只是一个运行环境,或者说是一个开发平台,要说详细,我想加点修饰就可以了,它是可以使JavaScript运行在浏览器端外的一个运行环境,可以让JavaScript运行在服务器端的一个开发平台。实际上,它是对Google V8引擎进行了封装。

       Node.js从名字上就可以看出肯定与JS有着密切的联系(都采用了ECMAscript语法),当然,不难看出也存在着一定的差异Node.js:是一个可以快速构建网络服务及应用的平台,运行在服务器的ECMAScript中,操作服务器的文件、数据库、http系统底层的一些东西,主要用于后端的开发。JavaScript:是一种Web前端语言,浏览器的ECMAscript在前台解析,操作历史记录、BOM与DOM,主要用于Web前端开发)。

  接下来,详细说一下Node.js。简单来说,Node.js就是运行在服务器端的JavaScript。Node.js是一个基于Chrome V8引擎的JavaScript运行环境。Node.js使用了一个事件驱动、非阻塞I/O的模型,使其轻量(体积小、无插件)又高效(运行速度快)。Node.js的包管理器npm,是全球最大的开源系统。Node.js特性单线程、异步I/O

  Node.js优势:

  1. 基于事件驱动;
  2. 单进程、单线程(降低线程创建与切换的消耗);
  3. 异步I/O(非阻塞I/O);
  4. 依赖于Chorm V8引擎进行代码解释,运行速度快;
  5. 轻量、可伸缩,适用于数据的实时交互。

  

  Node.js劣势:由于单进程、单线程,使其也存在着一定的缺点。

  1. 不适用CPU密集型应用,当其中如果存在大循环(耗时长的运算),就会使得后续的I/o无法发起;
  2. 仅支持单核CPU,所以不能充分利用CPU;
  3. 可靠性低,若中间代码某个环节崩溃,整个系统都将崩溃;
  4. 开元组件库组件上传条件低,使得资源质量参差不齐,更新快,向下不兼容。

  当然,出了问题自然就要解决问题,尤其是这么好用的东西,,只要学了JS,这个就不会存在什么大问题,在不用再费很大功夫的同时掌握一门语言,并且涉及广还这么好用,何乐而不为?

  解决方案:

  劣势1方案:将大型运算任务分解为多个小任务,使运算可以适时释放,不阻塞后续I/O的发起;

  劣势3方案:Nginx反向代理,负载均衡,开多个进程,绑定多个代理;开多个进程监听同一端口,使用cluster模块。

 

  以上就是我对Node.js的简单介绍,若对个别概念性名词存在问题,可以百度普及一下,若存在其他问题,欢迎讨论。

推荐阅读