zoukankan      html  css  js  c++  java
  • 了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发)

    了不起的Node.js: 将JavaScript进行到底(Web开发首选,实时,跨多服务器,高并发)

    Guillermo Rauch 编  

    赵静 译

    ISBN 978-7-121-21769-2

    2014年1月出版

    定价:79.00元

    320

    16

    编辑推荐

    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

    执行文件.......................................................... 6

    NPM................................................................. 6

    安装模块...........................................................7

    自定义模块. .......................................................8

    安装二进制工具包. ..................................................9

    浏览NPM仓库. .......................................................9

    小结................................................................. 10

    CHAPTER 2 JavaScript概览.........................................11

    介绍.......................................................... 11

    JavaScript基础..................................................... 12

    类型. ......................................................... 12

    类型的困惑. ............................................... 12

    函数. .......................................................... 13

    THIS、FUNCTION #CALL以及FUNCTION#APPLY.................... 14

    函数的参数数量. ........................... 14

    闭包. ........................................................ 14

    类. .............................................................. 15

    继承. ..................................................... 16

    TRY.{}.CATCH.{}...................................... 17

    v8中的JavaScript............................... 17

    OBJECT#KEYS....................................................... 18

    ARRAY#ISARRAY................................................ 18

    数组方法................................................. 18

    字符串方法.. .................................................... 19

    JSON............................................................. 19

    FUNCTION#BIND....................................................... 19

     FUNCTION#NAME.............................................. 19

    _PROTO_(继承). ............................................ 20

    存取器....................................................... 20

    小结.............................................................. 21

    CHAPTER 3 阻塞与非阻塞IO................................. 23

    能力越强,责任就越大................................................. 23

    阻塞. ............................................................. 25

    单线程的世界. ............................................... 27

    错误处理..................................................... 29

    堆栈追踪................................................ 30

    小结............................................................... 32

    CHAPTER 4 Node中的JavaScript ..................................... 33

    global对象....................................................... 33

    实用的全局对象. ................................................ 34

    模块系统............................................................ 34

    绝对和相对模块. .................................................. 35

    暴露API. ............................................................... 37

    事件......................................................... 38

     buffer............................................................... 40

    小结................................................................... 41

     PART Ⅱ Node重要的API

    CHAPTER 5 命令行工具(CLI)以及FS API:首个Node应用................... 45

    需求................................................. 45

    编写首个Node程序...................................... 46

    创建模块.............................................. 46

    同步还是异步. ............................ 47

    理解什么是流(stream)................................... 49

    输入和输出. .......................................................... 50

    重构. ........................................ 53

    用fs进行文件操作. .............................. 55

    对CLI一探究竟. ................................................. 56

    argv.................................................... 57

    工作目录...................................... 57

    环境变量........................................... 58

    退出. ............................................... 58

    信号. .......................................................... 58

    ANSI转义码............................................ 59

    对fs一探究竟. ................................................. 59

    Stream......................................................... 59

    监视. .......................................... 60

    小结...................................................... 61

    CHAPTER 6 TCP ........................................... 63

    TCP有哪些特性. ..................................................... 64

    面向连接的通信和保证顺序的传递. ........................... 64

    面向字节........................................ 65

    可靠性............................................... 65

    流控制......................................... 65

    拥堵控制.............................................. 65

    Telnet................................................................ 65

    基于TCP的聊天程序............................................... 68

    创建模块..................................... 68

    理解NET.SERVER.API........................ 68

    接收连接....................................... 70

    data事件. ...................................................... 71

    状态以及记录连接情况. ........................................ 73

    圆满完成此程序. ............................................ 75

    一个IRC客户端程序.......................................... 77

    创建模块.............................................. 77

    理解NET#STREAM.API.. ......................................... 78

    实现部分IRC协议. .................................................. 78

    测试实际的IRC服务器. .................................. 78

    小结................................................................. 79

    CHAPTER 7 HTTP .................................................. 81

    HTTP结构......................................................... 81

    头信息. ...................................................... 82

    连接.............................................................. 87

    一个简单的Web服务器.................................................. 88

    创建模块....................................... 88

    输出表单.................................................... 88

    method和URL. ........................................... 90

    数据. .............................................. 92

    整合. ................................................ 94

    让程序更健壮. ..................................... 95

    一个Twitter.Web客户端......................................... 96

    创建模块....................................... 96

    发送一个简单的HTTP请求. ...................... 97

    发送数据......................................... 98

    获取推文................................................. 99

    superagent来拯救.............................................. 102

    使用up重启HTTP服务器..................................... 103

    小结............................................. 104

    PART Ⅲ Web开发

    CHAPTER 8 Connect .............................. 107

    使用HTTP构建一个简单的网站. ....................................... 108

    通过Connect实现一个简单的网站...................................... 111

    中间件. ................................................. 112

    书写可重用的中间件. .........................114

    static中间件. .............................................119

    query中间件. .......................................120

    logger中间件................................................... 120

    body.parser中间件. .................................122

    cookie.........................................................125

    会话(session). ......................................126

    Redis.session..................................................131

    methodOverride中间件. ...........................132

    basicAuth中间件. ......................................132

    小结.............................................................. 134

    CHAPTER 9 Express..................................................135

    一个小型Express应用. ...................................... 135

    创建模块..............................................136

     HTML...........................................................136

     SETUP..........................................................137

    定义路由............................................137

    查询. .................................................140

    运行. .....................................................141

    设置......................................................... 142

    模板引擎...................................................... 143

    错误处理........................................................ 144

    快捷方法................................................. 144

    路由................................................ 146

    中间件. .................................................... 148

    代码组织策略. ......................................... 149

    小结................................................. 151

    CHAPTER 10 WebSocket .................. 153

    Ajax.............................................. 153

    HTML5.WebSocket............................................... 156

    一个ECHO示例. ......................................................... 157

    初始化项目. .............................................157

    建立服务器. ..................................................158

    建立客户端. ......................................159

    运行示例程序. ...................................160

    鼠标光标.......................................... 161

    初始化示例程序. .........................................161

    建立服务器. ............................................161

    建立客户端. .....................................164

    运行示例程序. .........................................166

    面临一个挑战. ............................................. 166

    关闭并不意味着断开连接. .............................166

    JSON...........................................167

    重连. ...................................................167

    广播. ................................................167

    WebSocket属于HTML5:早期浏览器不支持. ..........................167

    解决方案.................................................167

    小结............................................................. 167

    CHAPTER 11 Socket.IO.............................................169

    传输................................................. 170

    断开.VS.关闭. ............................................170

    事件. ..........................................170

    命名空间..............................................171

    聊天程序................................................. 172

    初始化程序. .......................................172

    构建服务器. ..........................................172

    构建客户端. .......................................173

    事件和广播. ........................................175

    消息接收确认. .................................179

    一个轮流做DJ的应用................................ 180

    扩展聊天应用. ...........................................181

    集成Grooveshark.API. ...............................182

    播放歌曲...............................................185

    小结.................................................... 190

    PART Ⅳ 数据库

    CHAPTER 12 MongoDB.......................193

    安装.................................................. 195

    使用MongoDB:一个用户认证的例子. .................................. 195

    构建应用程序. .......................................195

    创建Express.App.. ..............................196

    连接MongoDB. ...................................200

    创建文档......................................201

    查找文档..................................203

    身份验证中间件. ..................................204

    校验.. ..............................................205

    原子性..............................................206

    安全模式................................206

    Mongoose介绍......................................... 206

    定义模型........................................207

    定义嵌套的键. ..........................208

    定义嵌套文档. .....................................209

    构建索引..........................................209

    中间件.................................................209

    探测模型状态.. ...............................210

    查询. ..............................................210

    扩展查询........................................210

    排序.. ........................................211

    选择. ......................................................211

    限制.. .....................................211

    跳过. .........................................211

    自动产生键. ...............................211

    转换. ..............................................212

    一个使用Mongoose的例子........................................ 212

    构建应用.................................212

    重构. ..............................213

    建立模型.................................213

    小结.......................................... 215

    CHAPTER 13 MySQL...........................................217

    node-mysql........................................ 217

    初始化项目. .......................................217

    Express应用. ...................................218

    连接MySQL. .....................................219

    初始化脚本. .......................................220

    创建数据................................................224

    获取数据.....................................228

    sequelize............................................ 229

    初始化sequelize. ................................230

    初始化Express应用. ....................................230

    连接sequelize. .........................233

    定义模型和同步. ........................... 234

    创建数据.................................236

    获取数据......................................238

    删除数据..............................239

    完整地完成应用. ...............................240

    小结.......................................... 241

    CHAPTER 14 Redis......................................... 243

    安装Redis............................................... 244

    Redis查询语言. ............................................... 245

    数据类型............................................. 245

    字符串. ...................................246

    哈希. .................................................246

    列表. ......................................... 248

    数据集. .....................................249

    有序数据集. .........................................249

    Redis和Node. .......................................... 249

    使用node-redis实现一个社交图谱. .............250

    小结......................................... 259

    PART Ⅴ 测试

    CHAPTER 15 代码共享 ................................. 263

    什么样的代码可以共享........................................... 263

    书写兼容的JavaScript代码................................ 264

    导出模块......................................................264

    模拟实现ECMA.API. ................................265

    模拟实现Node.API. ......................................267

    模拟实现浏览器端API. ...............................267

    跨浏览器的继承实现. ...........................268

    集成到一起:browserbuild. ...................... 268

    基础案例....................................269

    小结......................................... 271

    CHAPTER 16 测试................................... 273

    简单测试........................................ 273

    测试目标............................................. 274

    测试策略................................... 274

    测试程序...................................................275

    expect.js................................................. 276

    API一览. .........................................276

    Mocha................................................. 278

    测试异步代码. ..................................279

    BDD风格. ................................281

    TDD风格. .......................................281

    export风格. .................................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读者Shawn Rapp

    本书直指要点,且无无用废话,可谓字字珠玑——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应用构建服务器端部分,同时还会带着大家学习如何组织服务器端异步代码以及如何与数据库进行交互。

    好好享受这本书带来的乐趣吧!

  • 相关阅读:
    第三周java学习总结
    第一周Java学习总结
    关闭窗体
    乱七八糟
    网页游戏资料
    timer控件的使用
    spread 签套循环改变颜色编号为颜色
    限制输入‘号的代码
    SQlcharindex命令
    限制输入类型
  • 原文地址:https://www.cnblogs.com/broadview/p/3449390.html
Copyright © 2011-2022 走看看