Node.js—简介
<h3 id="一nodejs是什么">一、Node.js是什么</h3><h4 id="1-基本概述">1. 基本概述</h4>
<p>Node.js是一个可以让JavaScript运行在服务器端的平台。它是一个为实时Web应用开发而诞生的平台,它从诞生之初就充分考虑了在<strong>实时响应</strong>、超大规模数据要求下架构的可扩展性。这使得它摒弃了传统平台依靠多线程来实现高并发的设计思路,而采用了<strong>单线程、异步I/O、事件驱动式</strong>的程序设计模式。</p>
<p>Node.js 有着强大而灵活的包管理器(node package manager, npm),目前已经有上万个第三方模块,其中有网站开发框架,有 MySQL、PostgreSQL、MongoDB数据库接口,有模板语言解析、 CSS 生成工具、邮件、加密、图形、调试支持,甚至还有图形用户界面和操作系统 API工具。</p>
<p>Node.js 可以作为服务器向用户提供服务,与 PHP、 Python、 Ruby on Rails 相比,它跳过了 Apache、 Nginx 等 HTTP服务器,直接面向前端开发。 Node.js 的许多设计理念与经典架构(如 LAMP)有着很大的不同,可提供强大的伸缩能力 。</p>
<h4 id="2-相关名词介绍">2. 相关名词介绍</h4>
<h5 id="1-javascript">(1) JavaScript</h5>
<p>JavaScript是由ECMAScript、文档对象模型(DOM)和浏览器对象模型(BOM)组成的,而Mozilla则指出JavaScript由Core JavaScript和Client JavaScript组成的。Node.js中的JavaScript只是Core JavaScript,或者说是ECMAScript的一个实现,不包含DOM、BOM或者Client JavaScript,这是因为Node.js不运行在浏览器中,所以不需要使用浏览器中的许多特性。</p>
<h5 id="2-v8引擎">(2) V8引擎</h5>
<p>Node.js 的 JavaScript 引擎是 V8,来自 Google Chrome 项目。 V8 号称是目前世界上最快的 JavaScript 引擎,经历了数次引擎革命,它的 JIT(Just-in-time Compilation,即时编译)执行速度已经快到了接近本地代码的执行速度。 Node.js 不运行在浏览器中,所以也就不存在 JavaScript 的浏览器兼容性问题,你可以放心地使用 JavaScript 语言的所有特性。</p>
<h3 id="二nodejs能做什么">二、Node.js能做什么</h3>
<ul>
<li>具有复杂逻辑的网站;</li>
<li>基于社交网络的大规模 Web 应用;</li>
<li>Web Socket 服务器;</li>
<li>TCP/UDP 套接字应用程序;</li>
<li>命令行工具;</li>
<li>交互式终端程序;</li>
<li>带有图形用户界面的本地应用程序;</li>
<li>单元测试工具;</li>
<li>客户端 JavaScript 编译器;</li>
<li>Node.js 内建了 <strong>HTTP 服务器支持</strong>,也就是说你可以轻而易举地实现一个网站和服务器的组合。</li>
</ul>
<h3 id="三nodejs异步io与事件驱动">三、Node.js异步I/O与事件驱动</h3>
<p>Node.js 最大的特点就是采用异步式 I/O 与事件驱动的架构设计。 传统高并发架构方案是多线程模式,Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。 Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。</p>
<p>Node.js 的异步机制是基于事件的,所有的磁盘 I/O、网络通信、数据库查询都以非阻塞的方式请求,返回的结果由事件循环来处理。</p>
<p>Node.js 进程在同一时刻只会处理一个事件,完成后立即进入事件循环检查并处理后面的事件。这样做的好处是,CPU 和内存在同一时间集中处理一件事,同时尽可能让耗时的 I/O 操作并行执行。对于低速连接攻击, Node.js 只是在事件队列中增加请求,等待操作系统的回应,因而不会有任何多线程开销,很大程度上可以提高 Web 应用的健壮性,防止恶意攻击。</p>
<h3 id="四nodejs性能">四、Node.js性能</h3>
<p>Node.js 用异步式 I/O 和事件驱动代替多线程,带来了可观的性能提升。 Node.js 除了使用 V8 作为JavaScript引擎以外,还使用了高效的 libev 和 libeio 库支持事件驱动和异步式 I/O。</p>
<p>Node.js 的开发者在 libev 和 libeio 的基础上还抽象出了层 libuv。对于 POSIX①操作系统,libuv 通过封装 libev 和 libeio 来利用 epoll 或 kqueue。</p>
<h3 id="五commonjs规范">五、CommonJS规范</h3>
<p>CommonJS 诞生了。 CommonJS 试图定义一套普通应用程序使用的API,从而填补 JavaScript 标准库过于简单的不足。</p>
<p>CommonJS 规范包括了模块(modules)、包(packages)、系统(system)、二进制(binary)、控制台(console)、编码(encodings)、文件系统(filesystems)、套接字(sockets)、单元测试(unit testing)等部分。</p><br><br>
来源:https://www.cnblogs.com/hq82/p/10831569.html
頁:
[1]