`
lilin530
  • 浏览: 90958 次
  • 性别: 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+源码

    《Node.js开发指南》是一本面向初学者的Node.js教程,旨在帮助开发者快速掌握这个基于Chrome V8引擎的JavaScript运行环境。Node.js以其高效的非阻塞I/O模型和事件驱动特性,成为构建网络应用的强大工具,尤其在实时...

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

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

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

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

    node.js开发指南1

    《Node.js开发指南1》是一本面向初学者的Node.js入门教程,旨在帮助读者快速掌握Node.js的基础知识和实践技能。作者通过实例讲解和案例教学的方式,深入浅出地介绍了Node.js的核心概念、核心模块以及Web开发实战。 ...

    《nodejs开发指南》中文pdf

    《Node.js开发指南》是一本面向初学者和中级开发者的专业指南,旨在帮助读者掌握Node.js这一强大的服务器端JavaScript运行环境。这本书用中文详细地讲解了Node.js的核心概念、特性和应用,是学习Node.js的理想资源。...

    node.js开发指南.pdf

    《Node.js开发指南》是一本深入探讨Node.js技术的书籍,其PDF版本为开发者提供了方便的电子学习资源。Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它以其高效的非阻塞I/O模型和事件驱动架构,使得...

    node.js开发指南(带目录书签)PDF

    《Node.js开发指南》是一本深入探讨Node.js技术的书籍,尤其适合初学者和有一定JavaScript基础的开发者。Node.js是一个开放源代码、跨平台的JavaScript运行环境,它允许开发人员在服务器端执行JavaScript代码,打破...

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

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

    Node.js开发指南_中文正版1

    《Node.js开发指南》是一本面向初学者的Node.js教程,旨在帮助读者快速掌握Node.js的使用,尤其适合对Web后端开发感兴趣并且希望通过Node.js技术进行开发的读者。本书内容丰富,涵盖了从Node.js的基本概念到实际项目...

    写给php开发者的NODE.js学习指南

    本书假设你是一名有经验的PHP开发人员,并且已经开始学习如何编写Node.js。本书介绍了PHP和Node.js这两种语言惊人的相似之处,并详细讲解了如何将整个PHP Web应用转换为Node.js。通过对比一些PHP和Node.js的特性,你...

    《图灵系列图书--node.js开发指南》PDF

    《图灵系列图书--Node.js开发指南》是一本专为初学者和有一定JavaScript基础的开发者设计的书籍,全面深入地介绍了使用Node.js进行后端开发的知识。Node.js是由Ryan Dahl在2009年创立的一个开源项目,它基于Chrome ...

    Node.js开发指南微博例子

    **Node.js开发指南微博例子** Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它以其非阻塞I/O和事件驱动的特性,使得它在构建高性能的网络应用方面展现出强大的优势。在这个“Node.js开发指南微博例子”中...

    node.js开发指南(超清版)

    总的来说,《Node.js开发指南》涵盖了Node.js从基础到进阶的各个方面,无论你是JavaScript新手还是希望转战服务器端的前端开发者,都能从中受益匪浅。通过阅读这本书,你将具备使用Node.js开发高效、可扩展的网络...

Global site tag (gtag.js) - Google Analytics