看到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。关于动态语言和静态语言的优缺点比较在这里不再展开讨论。只说三点:
- Javascript作为前端工程师的主力语言,在技术社区中有相当的号召力。而且,随着Web技术的不断发展,特别是前端的重要性增加,不少前端工程师开始试水”后台应用“,在许多采用Node.js的企业中,工程师都表示因为习惯了Javascript,所以选择Node.js。
- Javascript的匿名函数和闭包特性非常适合事件驱动、异步编程,从helloworld例子中我们可以看到回调函数采用了匿名函数的形式来实现,很方便。闭包的作用则更大,看下面的代码示例:
- Javascript在动态语言中性能较好,有开发人员对Javacript、Python、Ruby等动态语言做了性能分析,发现Javascript的性能要好于其他语言,再加上V8引擎也是同类的佼佼者,所以Node.js的性能也受益其中。
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事件中访问处理。
发表评论
-
大型分布式网站架构设计与实践
2014-10-17 09:32 8811.大型网站软件系统的特点? a.高并发,大流量。 b.高可用 ... -
产品经理是这样炼成的
2014-10-16 12:02 597产品经理(Product Manager),又称品 ... -
NFC:Arduino、Android与PhoneGap近场通信
2014-10-15 12:53 1502射频识别,RFID(Radio Frequency I ... -
Java特种兵
2014-10-15 09:29 954从事java工作多年,很多东西只知道知其然不知其所以然 ... -
微管理——给你一个技术团队,你该怎么管
2014-06-26 18:54 1398首先,要明白项目 ... -
海量运维、运营规划之道(全彩)
2014-04-23 11:55 774关于海量运维、运 ... -
全程软件测试(第2版)
2014-04-22 14:20 1308软件测试(英语:software testing),描述 ... -
3D打印:三维智能数字化创造(全彩)
2014-04-21 22:58 1087刚刚看完《互联网思维》这本书,书里面简单介绍了3D打印技术 ... -
ADD的人生整理术
2014-03-14 11:34 1012什么是ADD? ADD,英 ... -
专注力:化繁为简的惊人力量
2014-03-14 11:01 1157你有没有这样的同事,他们花了你80%的时间却只给了你不到2 ... -
如何高效的学习
2014-03-11 09:12 710我想对于这个话题每个人有自己的见解,因每个人的习惯,生活方 ... -
SDN核心技术剖析和实战指南
2013-12-09 09:38 1375软件定义网络(Software Defined Ne ... -
智慧的分析洞察
2013-12-04 09:11 786看到这本书的题目让我想到这应该是以本哲学之类的书籍 ... -
做自己
2013-11-22 11:28 4881:每天11:00点前睡觉,每天7:30点前起床; 2:每 ... -
云计算360度
2013-06-27 10:23 984什么是云计算? 我看了很多资料,还是没有弄清楚什么是云 ... -
Web应用安全威胁与防治
2013-01-24 17:31 1807本书的试读章节让我们知道了会话劫持的危害性,对身份验证和会话 ... -
项目中的.NET
2012-11-08 16:34 1007当我看到这一本书的时候,我迫不及待我想拿来读。当我打开试 ... -
Android系统源代码情景分析
2012-11-08 15:24 1085在android系统源代码情景分析一书的试读中,主要是讲 ... -
看敏捷高手交互卓越软件
2012-08-16 15:25 958有效个人管理的四个步骤 ——确定角色:确定你认为重 ... -
神一样的产品经理
2012-07-30 15:41 1052既然有产品经理,那么产品究竟是什么? ...
相关推荐
《Node.js开发指南》是一本面向初学者的Node.js教程,旨在帮助开发者快速掌握这个基于Chrome V8引擎的JavaScript运行环境。Node.js以其高效的非阻塞I/O模型和事件驱动特性,成为构建网络应用的强大工具,尤其在实时...
Node.js是一种方兴未艾的新技术,诞生于2009年。... 而本书的目的就是帮助读者扫清这些障碍,学会使用Node.js进行Web后端开发,同时掌握事件驱动的异步式编程风格,以便进一步利用Node.js的高级特性。
内容概要:《Node.js开发指南-课件和源代码.rar》是一份包含课件和源代码的压缩文件。该资源提供了关于Node.js开发的详细指南,涵盖了Node.js的基础知识、核心模块、异步编程、Web开发、数据库访问等内容。 适用...
《Node.js开发指南1》是一本面向初学者的Node.js入门教程,旨在帮助读者快速掌握Node.js的基础知识和实践技能。作者通过实例讲解和案例教学的方式,深入浅出地介绍了Node.js的核心概念、核心模块以及Web开发实战。 ...
《Node.js开发指南》是一本面向初学者和中级开发者的专业指南,旨在帮助读者掌握Node.js这一强大的服务器端JavaScript运行环境。这本书用中文详细地讲解了Node.js的核心概念、特性和应用,是学习Node.js的理想资源。...
《Node.js开发指南》是一本深入探讨Node.js技术的书籍,其PDF版本为开发者提供了方便的电子学习资源。Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它以其高效的非阻塞I/O模型和事件驱动架构,使得...
《Node.js开发指南》是一本深入探讨Node.js技术的书籍,尤其适合初学者和有一定JavaScript基础的开发者。Node.js是一个开放源代码、跨平台的JavaScript运行环境,它允许开发人员在服务器端执行JavaScript代码,打破...
《Node.js权威指南》旨在成为Node.js领域最全面、最系统和最具实战性的一本书,供初学者系统学习和开发者工作时参考。本书作者是资深Web开发专家,不仅全面、细致地讲解了Node.js的所有功能、特性、使用方法和开发...
《Node.js开发指南》是一本面向初学者的Node.js教程,旨在帮助读者快速掌握Node.js的使用,尤其适合对Web后端开发感兴趣并且希望通过Node.js技术进行开发的读者。本书内容丰富,涵盖了从Node.js的基本概念到实际项目...
本书假设你是一名有经验的PHP开发人员,并且已经开始学习如何编写Node.js。本书介绍了PHP和Node.js这两种语言惊人的相似之处,并详细讲解了如何将整个PHP Web应用转换为Node.js。通过对比一些PHP和Node.js的特性,你...
《图灵系列图书--Node.js开发指南》是一本专为初学者和有一定JavaScript基础的开发者设计的书籍,全面深入地介绍了使用Node.js进行后端开发的知识。Node.js是由Ryan Dahl在2009年创立的一个开源项目,它基于Chrome ...
**Node.js开发指南微博例子** Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它以其非阻塞I/O和事件驱动的特性,使得它在构建高性能的网络应用方面展现出强大的优势。在这个“Node.js开发指南微博例子”中...
总的来说,《Node.js开发指南》涵盖了Node.js从基础到进阶的各个方面,无论你是JavaScript新手还是希望转战服务器端的前端开发者,都能从中受益匪浅。通过阅读这本书,你将具备使用Node.js开发高效、可扩展的网络...