`
niuzai
  • 浏览: 67919 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

【转】学习NodeJS第一天:node.js引言

阅读更多

  Node.JS是资深C程序员Ryan Dahl(http://four.livejournal.com/)的作品,依据Google著名的开源JavaScript引擎V8来进行二次开发 的Web I/O服务器(http://nodejs.org/)。V8本身是非常快的JavaScript引擎,处理JS执行运行的速度非常高。相关测试表 明,FireFox、Opera和IE的JS引擎速度都不及V8来得快。而且,还可以说,只要浏览器之间的JS引擎大战一日不减,NodeJs就可以从中 受益。有竞争才有进步:)。

 

NodeJS基本用法也是十分简单明了的,我们看看一下这一句,就是最简单的代码:

var  sys  = require('sys')  ,http = require('http');  

http.createServer(function (req, res) {  
    res.writeHead(200, {'Content-Type': 'text/plain'});  
    res.write('Hello World');  
    res.close();  
}).listen(8006);  

sys.puts('Server running at http://127.0.0.1:8006/'); 

 以上语句var http = require('http');http.createServer(function (req, res) {…});就是创建一个HTTP服务器,侦听来自客户端的请求,匿名参数中的req和res分别代表请求对象和响应对象。NodeJS把逻辑语句写在一个 函数中,说明创建服务器createServer()连这一步骤都是异步的!而且除此之外,req也有相关的异步操作:

    http.createServer(function (req, res) {  
        req.addListener("end",function(){  
            sys.puts("request end");  
        });  
        res.writeHead(200, {'Content-Type': 'text/plain'});  
        res.write('Hello World');  
        res.close();  
    }).listen(8006);  

 这样就对请求req登记了end的事件。在请求结束时通过sys.puts方法加入"request end"。在使用事件的过程中,实质也算是一个异步过程,非同步的。
从宏观层面看以上的演示,上面仅仅是一个比较底层的操作,都是低层次的控制,不足以提供更多High Level逻辑。要增强NodeJS这个平台功能,我们可以使用其他围绕NodeJS而开发模块,甚至是一个初具规模的“框架”,——其中一个就是 Express(http://github.com/visionmedia/express)。安装Express的前提是安装另一个依赖 包:Kiwi(http://github.com/visionmedia/kiwi),然后键入kiwi -v install express才可以正式安装Express。安装好Express之后,立刻输入下面代码测试一下:

    var sys = require("sys"),  
    kiwi = require("kiwi"),  
    express = kiwi.require('express');  
       
    get('/', function(){  
         this.redirect('/hello/world')  
    });  
       
    get('/hello/world', function(){  
         return 'Hello World'  
    });  
       
    get('/goodbye/world', function(){  
         return 'Goodbye World'  
    });  
       
    run();  

 Express运行的URL和端口是http://localhost:3000,默认请求的规则都会被转移到/hello/world目录,返回 'Hello World'的字符串。访问/goodbye/world目录就返回'Goodbye World'。Express之所以被称为一个“框架”,应该还有其他的功能在内,例如请求路由、渲染视图的其他高级功能。

Web服务器的事件编程其意义

我们知道并且十分清楚,JavaScript是单线程的(就当前流行的js v1.5而言),怎么避免I/O通道上的阻塞(block)呢?——基于事件驱动(Event-based)的编程或者或者是一种可行之道,为不少后台程 序解决线程/阻塞之用。自从Viusal Basic流行起,基于事件驱动的编程模型在GUI之上早已为我们所熟悉,存在很长的一段时间了。若说上早期的开发,那时我们经常的一个做法,就是在 main()方法写一个无限循环(while(true) loop),从而获得控制任何时刻程序的能力,亦算是一种朴素的“事件”模型。我们清楚,JavaScript天然是Function First Level的,对一个函数还可以送入一个函数的参数(即传入一个闭包closure),换言之,JS天生与事件驱动的编程是不谋而合,相得益彰的。鉴于 此,Node.js的事件编程理念的确是一个亮点。

另外一点,高并发的Web服务器一直乃久经不衰的热点和话题,也许有很多的解决方案,性能达到一定的指标也没有问题,不过问题是,因而,在保证并满 足性能达标的前提下,却很少见一个自然、适合编写业务逻辑的开发平台,以JavaScript为开发语言的NodeJS正好符合这一需求,一种符合大多数 人需求的DSL(估计js玩家数量可观得可以……)。例如,一个简单的计数器设计,我登录某个url,就触发一个计数器的事件,十分自然。当然,更重要的 是,还是JS的语言特征,即Function、闭包、相似的C语法、精炼与简洁的风格等等,尤其Function,简直为事件模型而生,轻松吻合 node.js异步机制的理念, 才是真正吸引玩家去乐此不疲的原因。


尽管NodeJS现在还非常的年轻,也没有久经世故,不过值得可喜的是,现在涌现了一大批围绕NodeJS的插件、增强包,有的是链接数据库,有的是用于 logging、Template模板、单元测试,有的还是服务于长链接下(long polling)轮询的……等等。我们可以参见NodeJS具体的模块列表,在http://wiki.github.com/ry/node /modules。

 

分享一个Node.js的专题网站,适合初学者:

http://howtonode.org/

nodejs与websocket的资源:

http://blog.new-bamboo.co.uk/2009/12/7/real-time-online-activity-monitor-example-with-node-js-and-websocket

http://blog.johngoulah.com/2010/03/nodejs-websockets-and-the-twitter-gardenhose/ http://blog.andregoncalves.com/2009/12/29/Nodejs-twitter-streaming-with- html5-websockets.html

写node.js的插件(C++)

https://www.cloudkick.com/blog/2010/aug/23/writing-nodejs-native-extensions/

在win平台上跑node.js,借助虚拟机:

http://www.lazycoder.com/weblog/2010/03/18/getting-started-with-node-js-on-windows/

在win直接运行的可执行文件(已编译):

http://www.grati.org/?page_id=213 不错的node.js中文资源

分享到:
评论

相关推荐

    Node.js 安装及环境配置指南

    nodejs安装及环境配置:Node.js 安装及环境配置指南; nodejs安装及环境配置:Node.js 安装及环境配置指南; nodejs安装及环境配置:Node.js 安装及环境配置指南; nodejs安装及环境配置:Node.js 安装及环境配置...

    nodejs安装包 node-v16.20.2-x64

    Node.js 是一个开源、跨平台的 JavaScript 运行环境,它允许开发者在服务器端执行 JavaScript 代码。Node.js 使用 V8 引擎,这个引擎是谷歌 Chrome 浏览器背后的高性能 JavaScript 引擎。Node.js 的核心优势在于其非...

    nodejs(node-v16.13.2-x64.msi)-(node-v18.12.1-x64.msi)

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让开发者能够在服务器端使用 JavaScript 进行编程,极大地扩展了 JavaScript 的应用范围。Node.js 的设计思想是事件驱动、非阻塞I/O模型,这使得它在...

    win7支持的nodejs版本node-v12.8.0-x64

    5. NPM:Node.js自带了npm(Node Package Manager),它是用于管理和安装Node.js模块的工具,可以用来安装和管理项目依赖。 总的来说,这个压缩包提供了一个在Windows 7环境下运行Node.js开发工作所需的基础环境,...

    node-v12.18.3-x64_nodejs_Node.js_

    3. **V8引擎**:Node.js使用谷歌的V8 JavaScript引擎,它能快速地编译和执行JavaScript代码,提供了高性能的优势。 4. **模块化**:Node.js拥有强大的模块系统,使用`npm`(Node Package Manager)来管理和分享代码...

    Node.js英文书籍2015出版共9本(一次下载)

    Full Stack Javascript - Learn Backbone.js, Node.js and MongoDB (APress 2015).epub Learning Node.js for Mobile Application Development (Packt 2015).pdf Microsoft Press Node.js for .NET Developers (2015...

    nodejs-10.12.0版本下载

    2. ES模块支持:Node.js 10开始实验性地支持ES模块,这是JavaScript标准的一部分,提供了更现代的模块系统。 3. N-API(Node Addons API):这是一个稳定的、跨版本的C/C++接口,用于开发Node.js的原生扩展,确保了...

    最新版nodeJs

    2. **npm(Node Package Manager)**:Node.js的包管理器,用于安装和管理第三方模块,极大地丰富了Node.js的功能,比如Express.js(一个流行的Web应用框架)和MongoDB驱动。 3. **V8引擎**:Node.js的核心组成部分...

    nodejs 18.17.1

    Node.js 是一个开源、跨平台的 JavaScript 运行环境,它允许开发者在服务器端运行 JavaScript 代码,极大地拓展了 JavaScript 的应用范围。标题"nodejs 18.17.1"表明这是一个关于 Node.js 版本18.17.1的知识点,通常...

    Node.js(node-v16.15.1-win-x86.zip)

    Node.js 应用程序是用 JavaScript 编写的,可以在 Mac OS X、Windows 和 Linux 上的 Node.js 运行时中运行而无需更改。 Node.js 应用程序旨在最大限度地提高吞吐量和效率,使用非阻塞 I/O 和异步事件。Node.js 应用...

    node.js14.18.3版本下载

    Node.js 是一个开源、跨平台的 JavaScript 运行环境,它允许开发者在服务器端执行 JavaScript 代码。Node.js 使用 V8 引擎,这是 Google 为 Chrome 浏览器开发的高性能 JavaScript 和 WebAssembly 引擎。Node.js 的...

    node.js(v16.16.0) 安装包

    Node.js 是一个开源、跨平台的 JavaScript 运行环境,它让开发者可以在服务器端执行 JavaScript 代码。Node.js 使用了 Google V8 引擎,这个引擎是为 Chrome 浏览器设计的,因此 Node.js 具有高性能和高效性的特点。...

    NodeJs-v18.12.1-x86 Windows安装包

    - **V8引擎**:Node.js 基于 Google 的 V8 JavaScript 引擎,提供高性能的代码执行。 - **单线程模型**:尽管 Node.js 在底层使用多个线程,但对外界它呈现的是单线程模型,简化了并发编程的复杂性。 - **npm 社区**...

    Nodejs16-x64 windows安装包

    ES 特性的支持:Node.js 16.x 支持更多的 ECMAScript(ES)新特性,如顶级作用域的 await(top-level await)、Promise.allSettled() 和 String.prototype.replaceAll(),这些更新让开发者能够利用最新的 JavaScript...

    nodeJS安装包 版本v16,以及相关得安装教程

    nodeJS 是前端开发得必要环境,这是一个node 得安装包,以及相关得安装教程。有需要得同学可以直接下载使用。 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行时环境,用于构建高性能、可伸缩的网络应用。它...

    Node.js高级编程.pdf

    Node.js是一种主流框架,它允许你使用JavaScript快速构建具有高度可伸缩性的网络程序。可是,它有自己的学习曲线,这本较为深入的指南性图书首先介绍了Node.js平台的安装,然后重点关注:创建和加载模块;使用缓冲区...

    nodejs安装包,亲测可用

    Node.js 是一个开源的、跨平台的 JavaScript 运行环境,它允许开发者在服务器端运行 JavaScript 代码。这个“nodejs安装包,亲测可用”指的是一个专为 Windows 7 系统准备的 Node.js 安装程序,版本号为 v10.16.3,...

    node.js windows 2008可安装 x64

    Node.js是一个开源、跨平台的JavaScript运行环境,它允许开发者在服务器端执行JavaScript代码,极大地拓宽了JavaScript的应用领域。 描述中的“windows 2008可安装 x64”进一步确认了我们的关注点是64位版本的...

    安装node.js.doc

    Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。安装 Node.js 需要注意以下几点: Node.js 简介 Node.js 是运行在服务端的 JavaScript,...

Global site tag (gtag.js) - Google Analytics