`
lilin530
  • 浏览: 92097 次
  • 性别: 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

    10. **学习资源**:提供的PDF文件如“Node.js开发指南”、“Node.js入门”等,都是帮助初学者掌握Node.js的宝贵教材,涵盖从基础知识到实践案例的全面讲解。 总之,Node.js是一个强大的工具,结合JavaScript语言,...

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

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

    《nodejs开发指南》中文pdf

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

    Node.js基础开发指南.pdf 清晰中文完整版

    《Node.js基础开发指南》是一本全面介绍Node.js技术的中文教材,旨在帮助读者从零开始掌握这个强大的JavaScript运行环境。Node.js以其异步、事件驱动的非阻塞I/O模型,使其在处理高并发、实时应用方面表现出色。本...

    node.js开发指南1

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

    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-《Node.js调试指南》

    《Node.js调试指南》是一份详细总结了Node.js开发中调试技巧和策略的资源,旨在帮助开发者深入理解Node.js的调试机制,并提供实践指导。 一、基础调试工具:内置的`console.log()` 在初识Node.js调试时,`console....

    25-Node.js开发指南_nodejs_开发_

    **Node.js开发指南** Node.js是一款基于Chrome V8引擎的JavaScript运行环境,它以其异步非阻塞I/O和事件驱动的模型,为构建高性能网络应用提供了强大的支持。本指南由清华大学学长编撰,旨在为初学者提供一个清晰、...

    nodejs开发指南带随书源码

    《Node.js开发指南》是一本深入探讨Node.js的书籍,附带了随书源码,为读者提供了实践操作的基础。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它允许开发者使用JavaScript进行服务器端编程,打破了传统的...

    Node.js 开发指南

    Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台,用来方便地搭建快速的,易于扩展的网络应用。Node.js 借助事件驱动,非阻塞 I/O 模型变得轻量和高效,非常适合 run across distributed devices 的 data...

    Node.js入门教程.pdf

    Node.js 的出现改变了传统的 Web 开发模式,使得开发者可以使用 JavaScript 语言来开发服务器端应用程序。 Node.js 的特点是异步 I/O 模型,事件驱动和非阻塞式 I/O,这使得 Node.js 能够处理高并发请求,且性能...

    《node.js开发指南》中样例优化

    在《Node.js开发指南》中,作者深入浅出地介绍了如何使用Node.js构建高效、可扩展的网络应用。本优化项目结合了MongoDB数据库、Express框架以及Bootstrap前端库,为书中的示例提供了更为完善的解决方案。 MongoDB是...

    node.js 权威指南

    第二部分(第13~15章)介绍了在使用Node.js进行开发时极有可能用到的第三方开发包,探讨了如何在Node.js应用程序中使用关系型数据库及NoSQL型数据库,如何使用Express框架开发Web应用程序,以及如何使用Socket.IO...

    Learning Node.js Development 2018

    《Learning Node.js Development 2018》是一本专为初学者设计的Node.js开发指南,旨在帮助读者全面掌握Node.js的核心概念和技术。Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它以其异步、非阻塞I/O模型而...

    Node.js-Node.js编码风格指南

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它让开发者能够在服务器端使用JavaScript进行编程。"Node.js编码风格指南"旨在提供一套统一的代码编写规范,以提高代码的可读性、可维护性和团队协作效率。...

    Node.js 6.x Blueprints(pdf+epub+mobi+code)

    《Node.js 6.x Blueprints》是一本专为开发者设计的深入学习Node.js 6.x版本的实战指南。这本书不仅提供了理论知识,还包含了丰富的实践项目,帮助读者掌握这一流行的JavaScript后端框架的核心技术和实际应用。书中...

Global site tag (gtag.js) - Google Analytics