`
lilin530
  • 浏览: 88060 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Node.js开发指南

阅读更多

         看到Node.js这个名字,初学者可能会误以为这是一个Javascript应用,事实上,Node.js采用C++语言编写而

 

成,是一个Javascript的运行环境。既然不是Javascript应用,为何叫.js呢?因为Node.js是一个Javascript的运行环

 

境。提到Javascript,大家首先想到的是日常使用的浏览器,现代浏览器包含了各种组件,包括渲染引擎、Javascript引

 

擎等,其中Javascript引擎负责解释执行网页中的Javascript代码。作为Web前端最重要的语言之一,Javascript一直是

 

前端工程师的专利。不过,Node.js是一个后端的Javascript运行环境(支持的系统包括*nux、Windows),这意味着

 

你可以编写系统级或者服务器端的Javascript代码,交给Node.js来解释执行。

 

 

Node.js采用了Google Chrome浏览器的V8引擎,性能很好,同时还提供了很多系统级的API,如文件操作、网络编程

 

等。浏览器端的Javascript代码在运行时会受到各种安全性的限制,对客户系统的操作有限。相比之下,Node.js则是一个

 

全面的后台运行时,为Javascript提供了其他语言能够实现的许多功能。

Node.js采用事件驱动、异步编程,为网络服务而设计

事件驱动这个词并不陌生,在某些传统语言的网络编程中,我们会用到回调函数,比如当socket资源达到某种状态时,注

 

册的回调函数就会执行。Node.js的设计思想中以事件驱动为核心,它提供的绝大多数API都是基于事件的、异步的风格。

 

以Net模块为例,其中的net.Socket对象就有以下事件:connect、data、end、timeout、drain、error、close等,

 

使用Node.js的开发人员需要根据自己的业务逻辑注册相应的回调函数。这些回调函数都是异步执行的,这意味着虽然在代

 

码结构中,这些函数看似是依次注册的,但是它们并不依赖于自身出现的顺序,而是等待相应的事件触发。

Node.js的特点

 

  • 物理机配置:RHEL 5.2、CPU 2.2GHz、内存4G
  • Node.js应用场景:MemCache代理,每次取100字节数据
  • 连接池大小:50
  • 并发用户数:100
  • 测试结果(socket模式):内存(30M)、QPS(16700)、CPU(95%)

从上面的结果,我们可以看到在这样的测试场景下,qps能够达到16700次,内存仅占用30M(其中V8堆占用22M),CPU则达到95%,可能成为瓶颈。此外,还有不少实践者对Node.js做了性能分析,总的来说,它的性能让人信服,也是受欢迎的重要原因。既然Node.js采用单进程、单线程模式,那么在如今多核硬件流行的环境中,单核性能出色的Node.js如何利用多核CPU呢?创始人Ryan Dahl建议,运行多个Node.js进程,利用某些通信机制来协调各项任务。目前,已经有不少第三方的Node.js多进程支持模块发布,专栏后面的文章会详细讲述Node.js在多核CPU下的编程。

Node.js的另一个特点是它支持的编程语言是Javascript。关于动态语言和静态语言的优缺点比较在这里不再展开讨论。只说三点:

  1. Javascript作为前端工程师的主力语言,在技术社区中有相当的号召力。而且,随着Web技术的不断发展,特别是前端的重要性增加,不少前端工程师开始试水”后台应用“,在许多采用Node.js的企业中,工程师都表示因为习惯了Javascript,所以选择Node.js。
  2. Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程,从helloworld例子中我们可以看到回调函数采用了匿名函数的形式来实现,很方便。闭包的作用则更大,看下面的代码示例:
  3. var hostRequest = http.request(requestOptions,function(response) {
        var responseHTML ='';
        response.on('data', function (chunk) {
            responseHTML = responseHTML + chunk;
        });
        response.on('end',function(){
            console.log(responseHTML);
            // do something useful
       });
    });

    在上面的代码中,我们需要在end事件中处理responseHTML变量,由于Javascript的闭包特性,我们可以在两个回调函数之外定义responseHTML变量,然后在data事件对应的回调函数中不断修改其值,并最终在end事件中访问处理。

  4. Javascript在动态语言中性能较好,有开发人员对Javacript、Python、Ruby等动态语言做了性能分析,发现Javascript的性能要好于其他语言,再加上V8引擎也是同类的佼佼者,所以Node.js的性能也受益其中。
分享到:
评论

相关推荐

    Node.js 开发指南.pdf

    第5章 使用Node.js进行Web开发 79 5.1 准备工作 80 5.1.1 使用http模块 82 5.1.2 Express框架 83 5.2 快速开始 84 5.2.1 安装Express 84 5.2.2 建立工程 85 5.2.3 启动服务器 86 5.2.4 工程的结构...

    node.js开发指南(随书源码)

    Node.js是一种方兴未艾的新技术,诞生于2009年。... 而本书的目的就是帮助读者扫清这些障碍,学会使用Node.js进行Web后端开发,同时掌握事件驱动的异步式编程风格,以便进一步利用Node.js的高级特性。

    Node.js开发指南-课件和源代码.rar

    内容概要:《Node.js开发指南-课件和源代码.rar》是一份包含课件和源代码的压缩文件。该资源提供了关于Node.js开发的详细指南,涵盖了Node.js的基础知识、核心模块、异步编程、Web开发、数据库访问等内容。 适用...

    node.js开发指南

    本书首先简要介绍Node.js,然后通过各种示例讲解Node.js 的基本特性,再用案例式教学的方式讲述如何用Node.js 进行Web 开发,接着探讨一些Node.js 进阶话题,最后展示如何将一个Node.js 应用部署到生产环境中。...

    node.js 开发指南 中文正版

    node.js 作为构建高并发,多线程应用的利器,是前端开发人员也可以进入后端开发

    Node.js权威指南 超清完整版 自带全部书签 PDF

    《Node.js权威指南》旨在成为Node.js领域最全面、最系统和最具实战性的一本书,供初学者系统学习和开发者工作时参考。本书作者是资深Web开发专家,不仅全面、细致地讲解了Node.js的所有功能、特性、使用方法和开发...

    node.js开发指南 pdf+源码

    本书是一本Node.js的入门教程,写给想了解Node.js的开发人员。

    node.js 开发指南

    本书是一本 Node.js 的入门教程,写给想了解 Node.js 的开发人员。我的目标是使读者通 过阅读本书,学会使用 Node.js 进行 Web 后端开发,同时能熟悉事件驱动的异步式编程风格, 以便进一步了解 Node.js 的许多高级...

    node.js 开发指南(详细)

    我的目标是使读者通过阅读本书,学会使用 Node.js 进行 Web 后端开发,同时能熟悉事件驱动的异步式编程风格,以便进一步了解 Node.js 的许多高级特性,以及它所应用的更多领域。 本书共6章,分别讨论了 Node.js 的...

    Node.js 开发指南

    Node.js 开发指南是一本入门级的Node开发中文指南

    Node.js-《Node.js调试指南》

    《Node.js 调试指南》是本人整理的从事 Node.js 开发这几年的一些调试经验和思路,希望授人以鱼也能授人以渔。

Global site tag (gtag.js) - Google Analytics