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,有图为证。
先看处理能力:
再看所占资源:
就一个字,状态稳定,多快好省!至于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
第一个是一旦开始读文件,就等着,读完再接着干别的。而第二个在开始读文件的同时给一个回调函数,然后你读你的,我该干嘛干嘛,等你读完了,再调用回调函数处理。所以第二个快,能充分利用快速的处理资源。
如果还有疑问,想了解更深层的技术问题,有四个字与你共勉:难得糊涂。对于我等非专业程序员,知道这个模式,知道实际效果已经够了。
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 中找到适合自己的应用场景。