`
niuzai
  • 浏览: 68126 次
  • 性别: 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开发工作所需的基础环境,...

    nodejs 18.17.1

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

    node-v12.18.3-x64_nodejs_Node.js_

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

    nodejs-10.12.0版本下载

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

    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安装包 版本v16,以及相关得安装教程

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

    最新版nodeJs

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

    NodeJs-v18.12.1-x86 Windows安装包

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

    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 具有高性能和高效性的特点。...

    Nodejs16-x64 windows安装包

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

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

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

    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位版本的...

Global site tag (gtag.js) - Google Analytics