Nodejs非专业介绍

Nodejs非专业介绍

面向非专业程序员的node.js介绍,专业程序员请回退

介绍Node.js时,一般都会说它是运行在服务器环境中的JavaScript解释器,有了它,我们可以直接在服务器上跑Javascript代码,就像跑PHP,ruby和java代码一样。

实际上Node.js并不是唯一的服务端Javascript解释器,它还有很多同类产品。而且Javascript最初就是用在服务端的编程语言。当年为了跟微软在互联网上抢地盘,网景要为非专业程序员打造一款小清新的解释型语言,以便跟Java互补。终于在1994年12月推出了用在 Netscape Enterprise Server上的LiveScript,小名Mocha。1995年,这门语言起了个当时看来很洋气的名字,Javascript,推出了客户端版本,作为网景浏览器的一部分一起发布。Javascript可以让浏览器跟用户交互,可以控制浏览器,可以跟后台进行异步通讯(该项技术在1996年出现在微软的IE中),并修改浏览器中所显示的内容。可网景终于输掉了这场战争,才使得服务端Javascript变成了今天的一个噱头。

Node.js基于Google给Chrome浏览器写的V8引擎, 现就职于Joyent 的Ryan Dahl (1)根据自己的需要做了些定制,比如读写文件系统,以及处理HTTP请求、返回HTTP响应的能力。其技术上最大的卖点是非阻塞的I/O和基于事件的异步处理机制。

Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses <b>an event-driven, non-blocking I/O model</b> that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.-- http://nodejs.org

不过这都不是什么突破性创新,我看中的是他的简单高效和庞大的类库,下面是今天(2013年4月22日)npmjs.org上给出的数据:

Node Packaged Modules

Total Packages: 28 092

 126 938	 downloads in the last day

8 502 793 downloads in the last week 31 970 743 downloads in the last month

(1) 开源软件的生命力和他身后的支撑力量紧密相关。Ryan Dahl不是一个人在战斗,他现在把node.js掌门人的位置转给了其同事Isaac Schlueter(npm的主创人员)

既然他吆喝自己的非阻塞I/O和基于事件的异步式处理机制,我们就先来看一下这有什么好处。技术上有一句至理名言:“万般皆破,唯快不破”。所有拿得出手的东西,首先都要围绕一个字做功夫。按非专业的说法,Node每秒可以用一个线程处理上千条请求,你甚至可以在一个线程上运行几个HTTP服务器。Nginx用的就是这项技术,完胜老大Apache,有图为证

先看处理能力:

enter image description here

再看所占资源:

enter image description here

就一个字,状态稳定,多快好省!至于Node的图。。。请领会精神,或参考专业人士的建议

至于他为什么这么强,我们先来看一个小例子:

阻塞版:

var text = readFileSync("sample.html")
console.log(text); // executed after the file has been read completely

非阻塞事件驱动版:

readFile("sample.html", function(err, text) {
    console.log(text); // executed after the file has been read completely 
});
console.log("xxx"); // this line will be executed immediately

第一个是一旦开始读文件,就等着,读完再接着干别的。而第二个在开始读文件的同时给一个回调函数,然后你读你的,我该干嘛干嘛,等你读完了,再调用回调函数处理。所以第二个快,能充分利用快速的处理资源。

如果还有疑问,想了解更深层的技术问题,有四个字与你共勉:难得糊涂。对于我等非专业程序员,知道这个模式,知道实际效果已经够了。


6 回复

Node.js 非专业介绍

面向非专业程序员的Node.js介绍,专业程序员请回退。

什么是Node.js?

介绍Node.js时,一般都会说它是运行在服务器环境中的JavaScript解释器,有了它,我们可以直接在服务器上跑JavaScript代码,就像跑PHP、Ruby和Java代码一样。

实际上,Node.js并不是唯一的服务端JavaScript解释器,它还有很多同类产品。而且,JavaScript最初就是用在服务端的编程语言。当年为了跟微软在互联网上抢地盘,网景要为非专业程序员打造一款小清新的解释型语言,以便跟Java互补。终于在1994年12月推出了用在 Netscape Enterprise Server上的LiveScript,小名Mocha。1995年,这门语言起了个当时看来很洋气的名字——JavaScript,推出了客户端版本,作为网景浏览器的一部分一起发布。JavaScript可以让浏览器跟用户交互,可以控制浏览器,可以跟后台进行异步通讯(该项技术在1996年出现在微软的IE中),并修改浏览器中所显示的内容。可网景终于输掉了这场战争,才使得服务端JavaScript变成了今天的一个噱头。

Node.js的基础

Node.js基于Google给Chrome浏览器写的V8引擎,现就职于Joyent的Ryan Dahl根据自己的需要做了些定制,比如读写文件系统,以及处理HTTP请求、返回HTTP响应的能力。其技术上最大的卖点是非阻塞的I/O和基于事件的异步处理机制。

Node.js is a platform built on Chrome’s JavaScript runtime for easily building fast, scalable network applications. Node.js uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

npm包管理器

Node.js背后有一个强大的类库支持,这就是npm(Node Package Manager)。npm提供了大量的模块,让开发者能够轻松地构建复杂的应用程序。下面是今天(2013年4月22日)npmjs.org上给出的数据:

Node Packaged Modules

  Total Packages: 28,092

     126,938	 downloads in the last day
  8,502,793	 downloads in the last week
31,970,743	 downloads in the last month

Node.js的优势

Node.js之所以强大,是因为它的非阻塞I/O和基于事件的异步处理机制。这意味着Node.js可以高效地处理大量并发请求,而不必等待每个请求完成后再处理下一个请求。这种特性使得Node.js非常适合处理实时应用,如聊天室、在线游戏等。

示例代码

阻塞版代码
var fs = require('fs');

var text = fs.readFileSync("sample.html");
console.log(text); // 执行在文件完全读取完成后
非阻塞事件驱动版代码
var fs = require('fs');

fs.readFile("sample.html", function(err, text) {
    console.log(text); // 执行在文件完全读取完成后
});

console.log("xxx"); // 这行代码会立即执行

第一个代码片段是一旦开始读文件,就等着,读完再接着干别的。而第二个代码片段在开始读文件的同时给一个回调函数,然后你读你的,我该干嘛干嘛,等你读完了,再调用回调函数处理。所以第二个代码片段更快,能充分利用快速的处理资源。

总结

Node.js以其高效的性能和丰富的类库赢得了广大开发者的青睐。尽管它的技术细节可能对非专业程序员来说有些复杂,但只要理解了它的核心概念,就能利用它来构建高性能的应用程序。希望这篇非专业的介绍对你有所帮助!


通过这些简单的示例和解释,希望能帮助非专业程序员更好地理解和使用Node.js。


ryan在写node的时候还没有去joyent呢。

谢谢指正

javascript 与后台异步交互也应该是微软首先实现的

谢谢

Node.js 非专业介绍

Node.js 是一种运行在服务器端的 JavaScript 运行环境。虽然它并不是唯一的服务器端 JavaScript 解释器,但它凭借其高性能和丰富的类库迅速获得了广泛的应用。

Node.js 背景

Node.js 基于 Google 的 V8 引擎开发,能够解析和执行 JavaScript 代码。它的主要特点是使用 事件驱动非阻塞 I/O 模型,使其非常适合处理大量并发连接的应用场景。

示例代码

让我们通过两个简单的示例来理解阻塞式和非阻塞式的区别:

阻塞式代码

阻塞式代码会等待操作完成后再继续执行其他代码。

const fs = require('fs');

// 读取文件并等待操作完成
let text = fs.readFileSync('sample.html');
console.log(text);
非阻塞事件驱动代码

非阻塞事件驱动代码会在等待操作完成的同时继续执行其他代码。

const fs = require('fs');

// 读取文件并提供回调函数
fs.readFile('sample.html', (err, text) => {
    if (err) throw err;
    console.log(text);
});

console.log('xxx'); // 这行代码会立即执行

优势

  • 性能高:Node.js 在处理大量并发连接时表现非常出色。
  • 资源占用少:相比传统 Web 服务器(如 Apache),Node.js 所需的资源更少。
  • 类库丰富:Node.js 有着庞大的类库生态系统(如 npm),方便开发者使用。

总结

Node.js 以其高效、轻量级和易用的特点,在现代 Web 开发中扮演着重要的角色。无论你是初学者还是有一定经验的开发者,都能从 Node.js 中找到适合自己的应用场景。

回到顶部