01 Node.js简介, 安装&配置

时间:2023-03-08 20:57:38

Node.js 简介

Node.js 是什么

Node.js 有着强大而灵活的包管理器(node package manager,npm)

目前, 已经有强大第三方工具模块, 例如数据库连接, 网站开发框架, CSS生成器, 操作系统API, 网络通信 等.

Node.js 是什么 ? 是一个让 javascript 运行在服务器端的平台, 以前javascript只能运行在浏览器中,  node.js 可以解析 javascript.

CommonJS 试图设计一套Javascript的规范.

Node.js 的引擎是 google 的 V8 引擎.

Node.js 不运行在浏览器中,所以也就不存在 JavaScript 的浏览器兼容性问题,你可以放心地使用 JavaScript 语言的所有特性。

Node.js 能做什么

Node.js 内建了 HTTP 服务器支持, 也就是说你可以轻而易举地实现一个网站和服务器的组合。这和 PHP、Perl 不一样,因为在使用 PHP 的时候,

必须先搭建一个 Apache 之类的HTTP 服务器, 然后通过 HTTP 服务器的模块加载或 CGI 调用,才能将 PHP 脚本的执行结果呈现给用户.

补充: HTTP服务器, HTTP是网络传输协议, HTTP服务器简单点说, 就是返回给客户端网页的服务器.

异步I/O 与事件驱动

Node.js 在执行的过程中会维护一个事件队列, 程序在执行时进入事件循环等待下一个事件到来,
每个异步式 I/O 请求完成后会被推送到事件队列,等待程序进程进行处理。

例如,对于简单而常见的数据库查询操作,按照传统方式实现的代码如下:

res = db.query('SELECT * from some_table');

res.output();

以上代码在执行到第一行的时候,线程会阻塞,等待数据库返回查询结果,然后再继续处理。然而,由于数据库查询可能涉及磁盘读写和网络通信,

其延时可能相当大(长达几个到几百毫秒,相比CPU的时钟差了好几个数量级),线程会在这里阻塞等待结果返回.

看看Node.js是如何解决这个问题的:

db.query('SELECT * from some_table', function(res) {

  res.output();

});

这段代码中 db.query 的第二个参数是一个函数,我们称为回调函数。进程在执行到db.query 的时候,不会等待结果返回,

而是直接继续执行后面的语句,直到进入事件循环。当数据库查询结果返回时,会将事件发送到事件队列,等到线程进入事件循环以后,才会调

用之前的回调函数继续执行后面的逻辑。

Node.js 的异步机制是基于事件的. 上例中, 就是异步执行的例子. 所有的磁盘 I/O、网络通信、数据库查询都以非阻塞的方式请求,

返回的结果由事件循环来处理。Node.js 进程在同一时刻只会处理一个事件,完成后立即进入事件循环检查并处理后面的事件。这样做的好处是,

CPU 和内存在同一时间集中处理一件事,同时尽可能让耗时的 I/O 操作并行执行。

01 Node.js简介, 安装&配置

这种异步事件模式的弊端也是显而易见的,因为它不符合开发者的常规线性思路,往往需要把一个完整的逻辑拆分为一个个事件,增加了开发和调试难度.

Node.js 的性能

01 Node.js简介, 安装&配置

CommonJS

CommonJS 试图定义一套普通应用程序使用的API, 从而填补 JavaScript 标准库过于简单的不足.

安装&配置 Node.js

以windows为例 : 直接下载 node.js

http://nodejs.cn/

通过这种方式安装的 Node.js 还自动附带了 npm, 我们可以在命令提示符中直接输入 npm 来使用它.

注 : eclipse node插件: http://www.nodeclipse.org/updates/