Node.js简介

介绍

诞生于2009年。
Node.js,或者 Node,是一个可以让 JavaScript 运行在服务器端的平台。
它可以让JavaScript 脱离浏览器的束缚运行在一般的服务器环境下。

Node.js 有着强大而灵活的包管理器( node package manager, npm),目前已经有上万个第三方模块。

  • Node.js 不是一种独立的语言。
  • Node.js 也不是一个 JavaScript 框架。
  • Node.js 是一个让 JavaScript 运行在服务端的开发平台,它让 JavaScript 成为脚本语言世界的一等公民,在服务端堪与 PHP、 Python、Perl、 Ruby 平起平坐。
  • Node.js 内建了 HTTP 服务器支持,也就是说你可以轻而易举地实现一个网站和服务器的组合。

Node.js 的 JavaScript 引擎是 V8,来自 Google Chrome 项目。 V8 号称是目前世界上最快的 JavaScript 引擎,经历了数次引擎革命,它的 JIT( Just-in-time Compilation,即时编译)执行速度已经快到了接近本地代码的执行速度。 Node.js 不运行在浏览器中,所以也就不存在 JavaScript 的浏览器兼容性问题,可以放心地使用 JavaScript 语言的所有特性。

Node.js的特点

最大的特点就是采用异步式 I/O 与事件驱动的架构设计。

  • Node.js 使用的是单线程模型,对于所有 I/O 都采用异步式的请求方式,避免了频繁的上下文切换。 Node.js 在执行的过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件到来,每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。

  • Node.js 的异步机制是基于事件的,所有的磁盘 I/O、网络通信、数据库查询都以非阻塞的方式请求,返回的结果由事件循环来处理。
    (Node.js 进程在同一时刻只会处理一个事件,完成后立即进入事件循环检查并处理后面的事件。这样做的好处是,CPU 和内存在同一时间集中处理一件事,同时尽可能让耗时的 I/O 操作并行执行。对于低速连接攻击, Node.js 只是在事件队列中增加请求,等待操作系统的回应,因而不会有任何多线程开销,很大程度上可以提高 Web 应用的健壮性,防止恶意攻击)

Node.js的架构

Node.js 用异步式 I/O 和事件驱动代替多线程,带来了可观的性能提升。 Node.js 除了使用 V8 作为JavaScript引擎以外,还使用了高效的 libev 和 libeio 库支持事件驱动和异步式 I/O。
Node.js的架构图:
在这里插入图片描述

CommonJS

如今为了统一 JavaScript 在浏览器之外的实现,CommonJS 诞生了。
CommonJS 试图定义一套普通应用程序使用的API,从而填补 JavaScript 标准库过于简单的不足。 CommonJS 的终极目标是制定一个像 C++ 标准库一样的规范,使得基于 CommonJS API 的应用程序可以在不同的环境下运行,就像用 C++ 编写的应用程序可以使用不同的编译器和运行时函数库一样。为了保持中立, CommonJS 不参与标准库实现,其实现交给像 Node.js 之类的项目来完成。

CommonJS 规范包括了模块( modules)、包( packages)、系统( system)、二进制( binary)、控制台( console)、编码( encodings)、文件系统( filesystems)、套接字( sockets)、单元测试( unit testing)等部分。目前大部分标准都在拟定和讨论之中,已经发布的标准有Modules/1.0、 Modules/1.1、 Modules/1.1.1、Packages/1.0、 System/1.0。

Node.js 是目前 CommonJS 规范最热门的一个实现,它基于 CommonJS 的Modules/1.0 规范实现了 Node.js 的模块,同时随着 CommonJS 规范的更新, Node.js 也在不断跟进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值