商家名称 | 信用等级 | 购买信息 | 订购本书 |
Node.js开发指南 [平装] | |||
Node.js开发指南 [平装] |
《Node.js开发指南》中Node.js是一种新兴的开源技术,它将JavaScript从Web浏览器移植到常规的服务器端,使用Chrome的V8虚拟机来解释和执行JavaScript代码,能用于构建高性能、高可扩展的服务器和客户端应用,以实现真正“实时的Web应用”。Node.js在GitHub上吸引了大量开发人员的注意,目前已经有不少可以直接引用的优秀模块。
“简洁的代码示例,轻快的语言,这本书带你进入同样简明的Node.js世界。如果你想立即使用Node.js进行Web开发,这里提供了绝佳的指导。”
——杨懋,微软亚洲研究院主管研究员
“本书是一本浅显易懂的Node.js入门读物,适合有一定JavaScript基础的开发人员阅读。读过这本书,你就完成了从学习Node.js相关知识,到使用Node.js构建实际Web系统的全过程。难能可贵的是,本书在讲解Node.js的同时,还详细介绍了Web开发领域的通用知识与原理,这些对开发完善健壮的Web应用必不可少。”
——贾超,淘宝网数据产品资深经理,CNode社区发起者
“在CNode社区企盼将近两年后,第一本中文Node.js图书终于诞生了。跟着BYVoid同学的这本《Node.js开发指南》,你就会走进Node,初探到Node的好和美。”
——田永强(朴灵),淘宝网数据产品部门前端工程师,CNode社区组织者之一
郭家宝(BYVoid),清华大学计算机系2010级本科生,曾获得信息学奥林匹克竞赛(NOI)金牌。他从中学开始涉足开源开发,参与过“汉典网”等许多Web项目的前后端设计开发,同时是Linux输入法ibus-pinyin的作者。他从2009年Node.js诞生之始,就一直在关注它的发展,有许多使用Node.js建立网站的经验,活跃于CNode社区。
第1章 Node.js简介
1.1 Node.js 是什么
1.2 Node.js 能做什么
1.3 异步式 I/O 与事件驱动
1.4 Node.js 的性能
1.4.1 Node.js 架构简介
1.4.2 Node.js 与 PHP + Nginx
1.5 JavaScript 简史
1.5.1 Netscape 与 LiveScript
1.5.2 Java 与 Javascript
1.5.3 微软的加入——JScript
1.5.4 标准化——ECMAScript
1.5.5 浏览器兼容性问题
1.5.6 引擎效率革命和 JavaScript 的未来
1.6 CommonJS
1.6.1 服务端 JavaScript 的重生
1.6.2 CommonJS 规范与实现
1.7 参考资料
第2章 安装和配置Node.js
2.1 安装前的准备
2.2 快速安装
2.2.1 Microsoft Windows系统上安装Node.js
2.2.2 Linux 发行版上安装Node.js
2.2.3 Mac OS X上安装Node.js
2.3 编译源代码
2.3.1 在 POSIX 系统中编译
2.3.2 在 Windows系统中编译
2.4 安装Node 包管理器
2.5 安装多版本管理器
2.6 参考资料
第3章 Node.js快速入门
3.1 开始用 Node.js 编程4
3.1.1 Hello World
3.1.2 Node.js 命令行工具
3.1.3 建立 HTTP 服务器
3.2 异步式 I/O 与事件式编程
3.2.1 阻塞与线程
3.2.2 回调函数
3.2.3 事件
3.3 模块和包
3.3.1 什么是模块
3.3.2 创建及加载模块
3.3.3 创建包
3.3.4 Node.js 包管理器
3.4 调试
3.4.1 命令行调试
3.4.2 远程调试
3.4.3 使用 Eclipse 调试 Node.js
3.4.4 使用 node-inspector 调试Node.js
3.5 参考资料
第4章 Node.js核心模块
4.1 全局对象
4.1.1 全局对象与全局变量
4.1.2 process
4.1.3 console
4.2 常用工具 util
4.2.1 util.inherits
4.2.2 util.inspect
4.3 事件驱动 events
4.3.1 事件发射器
4.3.2 error 事件
4.3.3 继承 EventEmitter
4.4 文件系统 fs
4.4.1 fs.readFile
4.4.2 fs.readFileSync
4.4.3 fs.open
4.4.4 fs.read
4.5 HTTP 服务器与客户端
4.5.1 HTTP 服务器
4.5.2 HTTP 客户端
4.6 参考资料
第5章 使用Node.js进行Web开发
5.1 准备工作
5.1.1 使用http模块
5.1.2 Express 框架
5.2 快速开始
5.2.1 安装 Express
5.2.2 建立工程
5.2.3 启动服务器
5.2.4 工程的结构
5.3 路由控制
5.3.1 工作原理
5.3.2 创建路由规则
5.3.3 路径匹配
5.3.4 REST 风格的路由规则
5.3.5 控制权转移
5.4 模板引擎
5.4.1 什么是模板引擎
5.4.2 使用模板引擎
5.4.3 页面布局
5.4.4 片段视图
5.4.5 视图助手
5.5 建立微博网站
5.5.1 功能分析
5.5.2 路由规划
5.5.3 界面设计
5.5.4 使用Bootstrap
5.6 用户注册和登录
5.6.1 访问数据库
5.6.2 会话支持
5.6.3 注册和登入
5.6.4 页面权限控制
5.7 发表微博
5.7.1 微博模型
5.7.2 发表微博
5.7.3 用户页面
5.7.4 首页
5.7.5 下一步
5.8 参考资料
第6章 Node.js进阶话题
6.1 模块加载机制
6.1.1 模块的类型
6.1.2 按路径加载模块
6.1.3 通过查找node_modules目录加载模块
6.1.4 加载缓存
6.1.5 加载顺序
6.2 控制流
6.2.1 循环的陷阱
6.2.2 解决控制流难题
6.3 Node.js 应用部署
6.3.1 日志功能
6.3.2 使用cluster模块
6.3.3 启动脚本
6.3.4 共享80端口
6.4 Node.js 不是银弹
6.5 参考资料
附录A JavaScript的高级特性
附录B Node.js编程规范
索引
版权页:
插图:
3.2 异步式I/O与事件式编程
Node.js最大的特点就是异步式I/O(或者非阻塞I/O)与事件紧密结合的编程模式。这种模式与传统的同步式I/O线性的编程思路有很大的不同,因为控制流很大程度上要靠事件和回调函数来组织,一个逻辑要拆分为若干个单元。
3.2.1 阻塞与线程
什么是阻塞(block)呢?线程在执行中如果遇到磁盘读写或网络通信(统称为I/O操作),通常要耗费较长的时间,这时操作系统会剥夺这个线程的CPU控制权,使其暂停执行,同时将资源让给其他的工作线程,这种线程调度方式称为阻塞。当I/O操作完毕时,操作系统将这个线程的阻塞状态解除,恢复其对CPU的控制权,令其继续执行。这种I/O模式就是通常的同步式I/O(Synchronous I/O)或阻塞式I/O(Blocking I/O)。
相应地,异步式I/O(Asynchronous I/O)或非阻塞式I/O(Non-blocking I/O)则针对所有I/O操作不采用阻塞的策略。当线程遇到I/O操作时,不会以阻塞的方式等待I/O操作的完成或数据的返回,而只是将I/O请求发送给操作系统,继续执行下一条语句。当操作系统完成I/O操作时,以事件的形式通知执行I/O操作的线程,线程会在特定时候处理这个事件。为了处理异步I/O,线程必须有事件循环,不断地检查有没有未处理的事件,依次予以处理。
阻塞模式下,一个线程只能处理一项任务,要想提高吞吐量必须通过多线程。而非阻塞模式下,一个线程永远在执行计算操作,这个线程所使用的CPU核心利用率永远是100%,I/O以事件的方式通知。在阻塞模式下,多线程往往能提高系统吞吐量,因为一个线程阻塞时还有其他线程在工作,多线程可以让CPU资源不被阻塞中的线程浪费。而在非阻塞模式下,线程不会被I/O阻塞,永远在利用CPU。多线程带来的好处仅仅是在多核CPU的情况下利用更多的核,而Node.js的单线程也能带来同样的好处。这就是为什么Node.js使用了单线程、非阻塞的事件编程模式。
假设我们有一项工作,可以分为两个计算部分和一个I/O部分,I/O部分占的时间比计算多得多(通常都是这样)。如果我们使用阻塞I/O,那么要想获得高并发就必须开启多个线程。而使用异步式I/O时,单线程即可胜任。
喜欢Node.js开发指南 [平装]请与您的朋友分享,由于版权原因,读书人网不提供图书下载服务