您的位置:首页 > Web前端 > Node.js

了不起的Node.js: 将JavaScript进行到底

2013-11-29 14:22 399 查看
了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发)Guillermo Rauch 赵静 译ISBN 978-7-121-21769-22014年1月出版定价:79.00元 32016

编辑推荐Node.js是一个由JavaScript书写而成的强大的web开发框架,它让开发强壮的、伸缩性良好的服务端web应用变得更加简单,容易。本书向你展示了什么是Node以及如何让你在项目中使用它。本书包含大量实际应用中的示例程序,证明了为什么Node.js会快速成为web开发首选工具的原因,通过本书,你能够快速熟悉和掌握达到如下目标所需的Node知识和技能:了解Node基于事件轮询的架构、无阻塞IO以及事件驱动的编程方式精通Node.js的API轻松实现开发实时应用相关的技术,如SOCKET.IO和HTML5 WEBSOCKETS编写能够支持跨多台服务器的高并发应用通过Node来支持多种数据库以及数据存储工具编写在单台服务器情况下能够处理万级并发量的程序能够在一个包含更多Node知识和注解示例(含源代码)的网站上和其他开发者进行实时地沟通交流本书包含大量全彩插图和实用的源代码,绝对是一本革命性web开发工具――Node的实用指南。内容提要本书是一本经典的 Learning by Doing的书籍。它由 Node社区著名的 Socket.IO作者―― Guillermo Rauch,通过大量的实践案例撰写,并由 Node社区非常活跃的开发者―― Goddy Zhao翻译而成。本书内容主要由对五大部分的介绍组成: Node核心设计理念、 Node核心模块 API、Web开发、数据库以及测试。从前到后、由表及里地对使用 Node进行 Web开发的每一个环节都进行了深入的讲解,并且最大的特点就是通过大量的实际案例、代码展示来剖析技术点,讲解最佳实践。目录PART Ⅰ 从安装与概念开始CHAPTER 1 安装...............................................3在Windows下安装...............................................3在OS.X下安装. ................................................4在Linux下安装.................................................5编译. ............................................................5确保安装成功. ...............................................5 Node.REPL.................................................5执行文件.......................................................... 6NPM.................................................................6安装模块...........................................................7自定义模块. .......................................................8安装二进制工具包. ..................................................9浏览NPM仓库........................................................9小结................................................................. 10CHAPTER 2JavaScript概览.........................................11介绍.......................................................... 11JavaScript基础.....................................................12类型. ......................................................... 12类型的困惑. ............................................... 12函数. .......................................................... 13THIS、FUNCTION #CALL以及FUNCTION#APPLY.................... 14函数的参数数量. ........................... 14闭包. ........................................................ 14类. .............................................................. 15继承. ..................................................... 16 TRY.{}.CATCH.{}...................................... 17v8中的JavaScript...............................17 OBJECT#KEYS.......................................................18 ARRAY#ISARRAY................................................18数组方法................................................. 18字符串方法.. .................................................... 19JSON.............................................................19FUNCTION#BIND.......................................................19FUNCTION#NAME..............................................19_PROTO_(继承)............................................. 20存取器....................................................... 20小结.............................................................. 21CHAPTER 3 阻塞与非阻塞IO.................................23能力越强,责任就越大................................................. 23阻塞. ............................................................. 25单线程的世界. ............................................... 27错误处理..................................................... 29堆栈追踪................................................ 30小结............................................................... 32CHAPTER 4Node中的JavaScript ..................................... 33global对象.......................................................33实用的全局对象. ................................................ 34模块系统............................................................ 34绝对和相对模块. .................................................. 35暴露API. ...............................................................37事件......................................................... 38buffer...............................................................40小结...................................................................41PART ⅡNode重要的APICHAPTER 5 命令行工具(CLI)以及FS API:首个Node应用...................45需求................................................. 45编写首个Node程序......................................46创建模块.............................................. 46同步还是异步. ............................ 47理解什么是流(stream)...................................49输入和输出. .......................................................... 50重构. ........................................ 53用fs进行文件操作. .............................. 55对CLI一探究竟.................................................. 56 argv.................................................... 57工作目录...................................... 57环境变量........................................... 58退出. ............................................... 58信号. .......................................................... 58ANSI转义码............................................59对fs一探究竟.................................................. 59 Stream.........................................................59监视. .......................................... 60小结...................................................... 61CHAPTER 6TCP ...........................................63TCP有哪些特性...................................................... 64面向连接的通信和保证顺序的传递. ........................... 64面向字节........................................ 65可靠性............................................... 65流控制......................................... 65拥堵控制.............................................. 65 Telnet................................................................65基于TCP的聊天程序...............................................68创建模块..................................... 68理解NET.SERVER.API........................ 68接收连接....................................... 70data事件....................................................... 71状态以及记录连接情况. ........................................ 73圆满完成此程序. ............................................ 75一个IRC客户端程序..........................................77创建模块.............................................. 77理解NET#STREAM.API.. ......................................... 78实现部分IRC协议. ..................................................78测试实际的IRC服务器. ..................................78小结................................................................. 79CHAPTER 7HTTP.................................................. 81HTTP结构.........................................................81头信息. ...................................................... 82连接.............................................................. 87一个简单的Web服务器..................................................88创建模块....................................... 88输出表单.................................................... 88method和URL............................................ 90数据. .............................................. 92整合. ................................................ 94让程序更健壮. ..................................... 95一个Twitter.Web客户端.........................................96创建模块....................................... 96发送一个简单的HTTP请求. ...................... 97发送数据......................................... 98获取推文................................................. 99superagent来拯救..............................................102使用up重启HTTP服务器.....................................103小结............................................. 104PART ⅢWeb开发CHAPTER 8Connect.............................. 107使用HTTP构建一个简单的网站. .......................................108通过Connect实现一个简单的网站......................................111中间件. ................................................. 112书写可重用的中间件. .........................114static中间件. .............................................119query中间件........................................120logger中间件...................................................120body.parser中间件..................................122 cookie.........................................................125会话(session).......................................126 Redis.session..................................................131methodOverride中间件............................132basicAuth中间件.......................................132小结.............................................................. 134CHAPTER 9Express..................................................135一个小型Express应用....................................... 135创建模块..............................................136HTML...........................................................136SETUP..........................................................137定义路由............................................137查询. .................................................140运行. .....................................................141设置......................................................... 142模板引擎...................................................... 143错误处理........................................................ 144快捷方法................................................. 144路由................................................ 146中间件. .................................................... 148代码组织策略. ......................................... 149小结................................................. 151CHAPTER 10WebSocket.................. 153 Ajax.............................................. 153 HTML5.WebSocket...............................................156一个ECHO示例. .........................................................157初始化项目. .............................................157建立服务器. ..................................................158建立客户端. ......................................159运行示例程序. ...................................160鼠标光标.......................................... 161初始化示例程序. .........................................161建立服务器. ............................................161建立客户端. .....................................164运行示例程序. .........................................166面临一个挑战. ............................................. 166关闭并不意味着断开连接. .............................166 JSON...........................................167重连. ...................................................167广播. ................................................167WebSocket属于HTML5:早期浏览器不支持. ..........................167解决方案.................................................167小结............................................................. 167CHAPTER 11Socket.IO.............................................169传输................................................. 170断开.VS.关闭.............................................170事件. ..........................................170命名空间..............................................171聊天程序................................................. 172初始化程序. .......................................172构建服务器. ..........................................172构建客户端. .......................................173事件和广播. ........................................175消息接收确认. .................................179一个轮流做DJ的应用................................ 180扩展聊天应用. ...........................................181集成Grooveshark.API. ...............................182播放歌曲...............................................185小结.................................................... 190PART Ⅳ 数据库CHAPTER 12MongoDB.......................193安装.................................................. 195使用MongoDB:一个用户认证的例子................................... 195构建应用程序. .......................................195创建Express.App.. ..............................196连接MongoDB. ...................................200创建文档......................................201查找文档..................................203身份验证中间件. ..................................204校验.. ..............................................205原子性..............................................206安全模式................................206Mongoose介绍.........................................206定义模型........................................207定义嵌套的键. ..........................208定义嵌套文档. .....................................209构建索引..........................................209中间件.................................................209探测模型状态.. ...............................210查询. ..............................................210扩展查询........................................210排序.. ........................................211选择. ......................................................211限制.. .....................................211跳过. .........................................211自动产生键. ...............................211转换. ..............................................212一个使用Mongoose的例子........................................212构建应用.................................212重构. ..............................213建立模型.................................213小结.......................................... 215CHAPTER 13MySQL...........................................217node-mysql........................................ 217初始化项目. .......................................217Express应用....................................218连接MySQL. .....................................219初始化脚本. .......................................220创建数据................................................224获取数据.....................................228 sequelize............................................ 229初始化sequelize. ................................230初始化Express应用.....................................230连接sequelize. .........................233定义模型和同步. ........................... 234创建数据.................................236获取数据......................................238删除数据..............................239完整地完成应用. ...............................240小结.......................................... 241CHAPTER 14Redis.........................................243安装Redis............................................... 244Redis查询语言................................................ 245数据类型............................................. 245字符串. ...................................246哈希. .................................................246列表. ......................................... 248数据集. .....................................249有序数据集. .........................................249Redis和Node........................................... 249使用node-redis实现一个社交图谱. .............250小结......................................... 259PART Ⅴ 测试CHAPTER 15 代码共享................................. 263什么样的代码可以共享........................................... 263书写兼容的JavaScript代码................................264导出模块......................................................264模拟实现ECMA.API. ................................265模拟实现Node.API. ......................................267模拟实现浏览器端API. ...............................267跨浏览器的继承实现. ...........................268集成到一起:browserbuild. ...................... 268基础案例....................................269小结......................................... 271CHAPTER 16 测试...................................273简单测试........................................ 273测试目标............................................. 274测试策略................................... 274测试程序...................................................275 expect.js.................................................276API一览..........................................276 Mocha................................................. 278测试异步代码. ..................................279BDD风格.................................281TDD风格........................................281export风格..................................282在浏览器端使用Mocha. ...................................282小结.................................... 284索引 ...................................... 285作者简介Guillermo Rauch(旧金山,加利福尼亚州)是一家位于旧金山,为当地教育提供相关服务的创业公司LearnBoost的CTO和联合创始人。Rauch还是几个知名Node.js项目的发明者,曾在JSConf和一些Node.js workshop做过演讲。"译者介绍:Goddy Zhao(本名赵静),Successfactors(SAP子公司)软件工程师。毕业于复旦大学,先后在IBM、淘宝工作过,专注于企业级富客户端Web应用的开发,擅长前后端相结合的技术解决方案。曾与人合译过多本前端图书,并曾在沪JS及D2前端技术论坛担任过主持人和演讲嘉宾。个人主页http://goddyzhao.me。媒体评论本书写作精良――Amazon.com读者ShawnRapp本书直指要点,且无无用废话,可谓字字珠玑――Amazon.com读者Pragmateek本书定位精确,用大量简单但鲁棒性强的模式帮助初学者走上用Node.js创建更复杂应用之路。这种简明扼要的写法很招人喜欢,面向教学做得很成功,是一本有效使用Node.js的参考书。――Amazon.com读者Pmjtoca前言绝大部分 Web应用都包含客户端和服务器端两部分。服务器端的实现往往比较复杂、麻烦。创建一个简单的服务器都要求对多线程、伸缩性以及服务器部署有专业的技术知识。除此之外,由于客户端软件是用 HTML和JavaScript来实现的,而服务器端核心代码通常都是用静态编程语言实现的,所以,开发 Web应用经常会有错乱的感觉。由于这种前后端开发语言的差异,不得不让开发者使用多种编程语言,同时还要对特定的程序逻辑事先做好设计选型。几年前,要用 JavaScript来实现服务端软件几乎是想都不敢想的一件事情。糟糕的性能、不成熟的内存管理以及缺乏操作系统层面的集成,不解决这些问题, JavaScript很难成为一门服务器端的语言。作为 Google Chrome浏览器的一部分,新的 V8引擎能够解决前两个问题。 V8是一个开源的项目,通过简单的 API就可以将其集成进去。Ryan Dahl洞察到了这样一个机会,可以通过将 V8内嵌到操作系统的集成层,来让 JavaScript享受到底层操作系统的异步接口,从而实现将其带到服务器端的目的。这就是 Node.js的设计思路。这么做的好处是显而易见的。程序员们可以在客户端和服务器端使用同样的编程语言了。 JavaScript动态语言的特性使得开发和试验服务器端代码变得很自由,使得程序员们摆脱了传统那种又慢又重的编程模式。Node.js迅速蹿红,衍生了一个强大的开源社区、支持企业,甚至还拥有属于自己的技术大会。我把这种成功归结于它的简洁,高效,同时提高了编程生产力。我很高兴 V8成为其一小部分。本书将带着读者学习如何基于 Node.js为Web应用构建服务器端部分,同时还会带着大家学习如何组织服务器端异步代码以及如何与数据库进行交互。好好享受这本书带来的乐趣吧!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: