nodejs学习手册,是关于nodejs技术的一本入门手册。本书致力于教会你如何用Node.js 来开发应用,过程中会传授你所有所需的“高级”JavaScript 知识。本书绝不是一本“Hello World” 的教程。你阅读的已经是本书的最终版。因此,只有当进行错误更正以及针对新版本Node.js 的改动进行对应的修正时,才会进行更新。书中的代码案例都在Node.js 0.4.9 版本中测试过,可以正确工作。
Node.js简介Node.js 是一个基于Chrome JavaScript 运行时建立的一个平台, 用来方便地搭建快速的 易于扩展的网络应用· Node.js 借助事件驱动, 非阻塞I/O 模型变得轻量和高效, 非常适合 运行在分布式设备 的 数据密集型 的实时应用。
V8引擎执行Javascript的速度非常快,性能非常好。Node对一些特殊用例进行了优化,提供了替代的API,使得V8在非浏览器环境下运行得更好。
V8引擎本身使用了一些最新的编译技术。这使得用Javascript这类脚本语言编写出来的代码运行速度获得了极大提升,却节省了开发成本。对性能的苛求是Node的一个关键因素。 Javascript是一个事件驱动语言,Node利用了这个优点,编写出可扩展性高的服务器。Node采用了一个称为“事件循环(event loop)”的架构,使得编写可扩展性高的服务器变得既容易又安全。提高服务器性能的技巧有多种多样。Node选择了一种既能提高性能,又能减低开发复杂度的架构。这是一个非常重要的特性。并发编程通常很复杂且布满地雷。Node绕过了这些,但仍提供很好的性能。
读者对象本书最适合与我有相似技术背景的读者:至少对一门诸如Ruby、Python、PHP 或者Java 这样面向对象的语言有一定的经验;对JavaScript 处于初学阶段,并且完全是一个Node.js 的新手。这里指的适合对其他编程语言有一定经验的开发者,意思是说,本书不会对诸如数据类型、变量、控制结构等等之类非常基础的概念作介绍。
本书目录授權 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
作者 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
下載電子書 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
原始碼 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
0.1 精選文章收錄流程 . . . . . . . . . . . . . . . . . . . . . . . . 3
前言 5
1 Node.js 簡介 7
2 JavaScript 與 NodeJS 11
2.1 Event Loop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2 Scope 與 Closure . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 Callback . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.4 CPS(Continuation-Passing Style) . . . . . . . . . . . . . . . . 16
2.5 函數返回函數與 Currying . . . . . . . . . . . . . . . . . . . . . 17
2.6 流程控制 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
i
3 Node.js 安裝與設定 25
3.1 Ubuntu Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.2 Other Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.3 Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
4 Node.js 基礎 29
4.1 node.js http 伺服器建立 . . . . . . . . . . . . . . . . . . . . . . 29
4.2 node.js http 路徑建立 . . . . . . . . . . . . . . . . . . . . . . . 31
4.3 node.js 檔案讀取 . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.4 node.js http 靜態檔案輸出 . . . . . . . . . . . . . . . . . . . . . 36
4.5 node.js http GET 資料擷取 . . . . . . . . . . . . . . . . . . . . 38
4.6 本章結語 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5 NPM 套件管理工具 41
5.1 安裝 NPM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 使用 NPM 安裝套件 . . . . . . . . . . . . . . . . . . . . . . . 45
5.3 套件的更新及維護 . . . . . . . . . . . . . . . . . . . . . . . . 48
5.4 使用 package.json . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6 Express 介紹 51
6.1 Express 安裝 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.2 Express 基本操作 . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.3 Express 路由處理 . . . . . . . . . . . . . . . . . . . . . . . . . . 52
6.4 Express middleware . . . . . . . . . . . . . . . . . . . . . . . . . 55
6.5 Express 路由應用 . . . . . . . . . . . . . . . . . . . . . . . . . . 56
6.6 Express GET 應用範例 . . . . . . . . . . . . . . . . . . . . . . . 57
6.7 Express POST 應用範例 . . . . . . . . . . . . . . . . . . . . . . 60
6.8 Express AJAX 應用範例 . . . . . . . . . . . . . . . . . . . . . . 63
6.9 原始資料提供 . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7 CoffeeScript 69
8 製作一個 Hubot 的 Plurk Adapter 71
8.1 應用事項提醒 . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
8.2 建立 Adapter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
ii
8.3 建立 Robot 跟 API . . . . . . . . . . . . . . . . . . . . . . . . . 72
8.4 原始資料提供 . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
9 Node.js 好用工具介紹 79
9.1 log.io . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
10 精選文章 81
10.1 Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
11 參考資源 83
11.1 Node.js 書籍 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
11.2 Node.js 影音教學 . . . . . . . . . . . . . . . . . . . . . . . . . 84
11.3 Node.js 教學網站 . . . . . . . . . . . . . . . . . . . . . . . . . 84
11.4 Node.js 課程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84