注冊 | 登錄讀書好,好讀書,讀好書!
讀書網-DuShu.com
當前位置: 首頁出版圖書科學技術計算機/網絡軟件與程序設計新時期的Node.js入門

新時期的Node.js入門

新時期的Node.js入門

定 價:¥49.00

作 者: 李鍇 著
出版社: 清華大學出版社
叢編項: Web前端技術叢書
標 簽: 暫缺

購買這本書可以去


ISBN: 9787302487807 出版時間: 2017-12-01 包裝: 平裝
開本: 16開 頁數(shù): 279 字數(shù):  

內容簡介

  Node.js是一門開源的、為Web而生的語言,具有高并發(fā)、異步等特點,并且擁有一個十分活躍的開發(fā)者社區(qū)。與Ruby、Python等語言相比,Node.js更年輕、更易于沒有經驗的人上手使用,因此很快在世界各地的開發(fā)者中收獲了一大批擁躉。在國內,Node.js在許多企業(yè)中獲得了廣泛應用,并取得了一系列的應用成果。然而,隨著技術的不斷更新、ECMAScript2015等新標準紛紛確定,現(xiàn)有的中文書籍就變得有些過時。本書立足于新的技術潮流,介紹了一系列全新的語言特性和標準,以便讓讀者在學習基礎知識的同時緊跟新技術的發(fā)展。本書分為8章6個附錄,講解了Node.js的各種基礎特性,使讀者快速入門,同時結合語言*新的發(fā)展趨勢,讓讀者能夠緊跟技術潮流。本書圍繞Node.js在Web站點開發(fā)和爬蟲系統(tǒng)中的應用展開,對Node.js在大型項目中的定位與應用做了詳細的說明。本書可用于Node.js入門,適合未接觸過Node的讀者以及在校的學生閱讀,也適合作為高等院校和培訓學校相關專業(yè)的師生教學參考。

作者簡介

  李鍇,畢業(yè)于廈門大學軟件學院,目前就職于花旗集團,從事Web前端開發(fā)工作。

圖書目錄

目錄
 
 
 
第1章  基礎知識          1
1.1  Node是什么  1
1.1.1  Node與JavaScript      1
1.1.2  runtime和VM    2
1.2  Node的內部機制  3
1.2.1  何為回調    3
1.2.2  同步/異步和阻塞/非阻塞 4
1.2.3  單線程和多線程         6
1.2.4  并行和并發(fā)         7
1.3  事件循環(huán)(Event loop)       8
1.3.1  事件與循環(huán)         8
1.3.2  Node中的事件循環(huán)   9
1.3.3  process.nextTick 13
1.4  總結        16
1.5  參考資源        16
第2章  常用模塊          17
2.1  Module   17
2.1.1  JavaScript的模塊規(guī)范        17
2.1.2  require及其運行機制        18
2.1.3  require的隱患    20
2.1.4  模塊化與作用域         20
2.2  Buffer      22
2.2.1  Buffer的構建與轉換 23
2.2.2  Buffer的拼接      24
2.3  File System      26
2.4  HTTP服務      30
2.4.1  創(chuàng)建HTTP 服務器     30
2.4.2  處理HTTP請求  32
2.4.3  Response對象    34
2.4.4  上傳數(shù)據    35
2.4.5  HTTP客戶端服務       38
2.4.6  創(chuàng)建代理服務器         39
2.5  TCP服務         40
2.5.1  TCP和Socket      41
2.5.2  創(chuàng)建TCP服務器         41
2.6  更安全的傳輸方式——SSL  42
2.6.1  什么是SSL  43
2.6.2  SSL原理       43
2.6.3  對稱加密與非對稱加密    44
2.6.4  關于CA       45
2.6.5  創(chuàng)建HTTPS服務         45
2.7  WebSocket      48
2.7.1  保持通話    48
2.7.2  為什么要有WebSocket      49
2.7.3  WebSocket與Node    50
2.8  Stream    50
2.8.1  Stream 的種類  50
2.8.2  ReadLine      53
2.8.3  自定義Stream    54
2.9  Events     55
2.9.1  事件和監(jiān)聽器    55
2.9.2  處理error事件  56
2.9.3  繼承Events模塊        57
2.10  多進程服務 58
2.10.1  child_process模塊   58
2.10.2  spawn        58
2.10.3  fork    59
2.10.4  exec和execFile         60
2.10.5  各方法之間的比較  62
2.10.6  進程間通信       64
2.10.7  Cluster       65
2.11  Process對象         66
2.11.1  環(huán)境變量  67
2.11.2  方法和事件       67
2.11.3  一個例子:修改所在的時區(qū)  68
2.12  Timer    70
2.12.1  常用API    70
2.12.2  定時器中的this        71
2.13  小結      72
2.14  引用資源      72
第3章  用ES6來書寫Node         73
3.1  新時代的EMCAScript   73
3.1.1  JavaScript的缺陷        73
3.1.2  Node對新標準的支持       74
3.1.3  使用nvm管理Node版本 75
3.2  塊級作用域   75
3.2.1  ES5中的作用域 75
3.2.2  let關鍵字   77
3.2.3  const關鍵字       78
3.3  數(shù)組        78
3.3.1  find()和findIndex()      79
3.3.2  from()方法  79
3.3.3  fill()方法       81
3.3.4  數(shù)組的遍歷         81
3.3.5  TypedArray  82
3.4  函數(shù)        82
3.4.1  參數(shù)的默認值    82
3.4.2  Spread運算符    83
3.4.3  箭頭函數(shù)    83
3.4.4  箭頭函數(shù)的陷阱         86
3.5  Set和Map     87
3.5.1  Set和WeakSet   87
3.5.2  Map和WeakMap       88
3.6  Iterator  89
3.6.1  Java中的Iterator       89
3.6.2  ES6中的Iterator         89
3.6.3  Iterator的遍歷  90
3.7  對象        91
3.7.1  新的方法    91
3.7.2  對象的遍歷         92
3.8  類   93
3.8.1  屬性和構造函數(shù)         94
3.8.2  類方法         94
3.8.3  __proto__   95
3.8.4  靜態(tài)方法    96
3.9  類的繼承        96
3.9.1  ES5中的繼承      96
3.9.2  ES6中的繼承      98
3.9.3  Node中的類繼承       100
3.10  ES6的模塊化標準       101
3.11  使用babel來轉換代碼       102
3.12  小結      106
3.13  引用資源      106
第4章  書寫異步代碼          107
4.1  異步操作的返回值        108
4.2  組織回調方法        108
4.2.1  回調與CPS 108
4.2.2  使用async模塊簡化回調 110
4.3  使用Promise 112
4.3.1  Promise的歷史  112
4.3.2  Promise是什么  113
4.3.3  ES2015中的Promise 114
4.3.4  Promise的常用API    116
4.3.5  使用Promise組織異步代碼      119
4.3.6  第三方模塊的Promise       120
4.4  Generator,一種過渡方案  122
4.4.1  Generator的使用       122
4.4.2  Generator函數(shù)的執(zhí)行       123
4.4.3  Generator中的錯誤處理  126
4.4.4  用Generator組織異步方法      127
4.4.5  Generator的自動執(zhí)行       128
4.5  回調的終點——async/await        131
4.5.1  async函數(shù)的概念       131
4.5.2  await關鍵字       133
4.5.3  在循環(huán)中使用async方法 135
4.5.4  async和await小結   136
4.5.5  async 函數(shù)的缺點     137
4.6  總結        138
4.7  引用資源        139
第5章  使用Koa2構建Web站點       140
5.1  Node Web框架的發(fā)展歷程  140
5.1.1  Connect       140
5.1.2  Express        141
5.1.3  Koa       141
5.2  內容規(guī)劃        142
5.2.1  需求分析    142
5.2.2  技術選型    142
5.3  Koa入門         143
5.3.1  Koa1.x 與Koa2  143
5.3.2  context對象        144
5.4  middleware    148
5.4.1  中間件的概念    148
5.4.2  next方法    150
5.4.3  中間件的串行調用    151
5.4.4  一個例子——如何實現(xiàn)超時響應    152
5.5  常用服務的實現(xiàn)   154
5.5.1  靜態(tài)文件服務    154
5.5.2  路由服務    155
5.5.3  數(shù)據存儲    156
5.5.4  文件上傳    160
5.5.5  頁面渲染    163
5.6  構建健壯的Web應用  165
5.6.1  上傳文件驗證    166
5.6.2  使用Cookie進行身份驗證        167
5.6.3  使用Session記錄會話狀態(tài)       170
5.7  使用Redis進行持久化          173
5.7.1  Node和Redis的交互         173
5.7.2  CURD操作 174
5.7.3  使用Redis持久化session          176
5.7.4  Redis在Node中的應用    179
5.8  Koa源碼剖析         180
5.8.1  Koa的啟動過程 180
5.8.2  中間件的加載    181
5.8.3  listen()方法 184
5.8.4  next()與return next() 185
5.8.5  關于Can't set headers after they are sent.       186
5.8.6  Context對象的實現(xiàn)  187
5.8.7  Koa的優(yōu)缺點      189
5.9  網站部署        190
5.9.1  本地部署    190
5.9.2  部署在云服務主機上         191
5.9.3  通過GitHub pages來部署         193
5.10  總結      194
5.11  引用資源      194
第6章  爬蟲系統(tǒng)的開發(fā)     195
6.1  爬蟲技術概述        196
6.2  技術棧簡介   196
6.2.1  request.js    196
6.2.2  cheerio         197
6.2.3  消息隊列    199
6.3  構建腳手架   199
6.3.1  選擇目標網站    199
6.3.2  分析URL結構    200
6.3.3  構建HTTP 請求          200
6.3.4  解析頁面元素    201
6.4  進行批量爬取        203
6.4.1  使用遞歸和定時器    203
6.4.2  多進程并行         205
6.5  爬蟲架構的改進   206
6.5.1  異步流程控制    206
6.5.2  回到初的目標         206
6.5.3  多進程模型的缺陷    208
6.6  進程架構的改進   208
6.6.1  生產/消費模型   208
6.6.2  生產者的實現(xiàn)    209
6.6.3  消費者的實現(xiàn)    211
6.7  反爬蟲處理   213
6.7.1  爬蟲的危害         213
6.7.2  識別一個爬蟲    213
6.7.3  針對爬蟲的處理         214
6.8  總結        216
6.9  引用資源        216
第7章  測試與調試     217
7.1  單元測試        218
7.1.1  使用Assert模塊         218
7.1.2  Jasmine        219
7.1.3  Ava.js——面向未來  224
7.2  測試現(xiàn)有代碼        227
7.3  更高維度的測試   228
7.3.1  基準測試    228
7.3.2  集成測試    229
7.3.3  持續(xù)集成    229
7.4  調試Node應用     231
7.4.1  語言和IDE 232
7.4.2  使用node-inspector   233
7.4.3  使用v8-inspector        234
7.4.4  使用IDE進行調試     236
7.4.5  cpu profiling         237
7.5  總結        239
7.6  引用資源        239
第8章  Node中的錯誤處理        240
8.1  Error模塊       241
8.2  錯誤處理的幾種方式   241
8.3  被拋棄的Domain  243
8.3.1  Domain模塊簡介       243
8.3.2  Domain原理       247
8.3.3  Domain中間件   249
8.3.4  Domain的缺陷   249
8.4  ES6中的錯誤處理          250
8.4.1  Promise        250
8.4.2  Generator   250
8.4.3  async函數(shù)  251
8.5  Web服務中的錯誤處理        251
8.5.1  針對每個請求的錯誤處理         251
8.5.2  Express中的錯誤處理       252
8.5.3  Koa中的錯誤處理      252
8.6  防御式編程與Let it crash     253
8.7  總結        256
8.8  引用資源        256
附錄A  進程、線程、協(xié)程 257
A.1  從操作系統(tǒng)說起   257
A.2  Node中的協(xié)程      258
附錄B  Lua語言簡介   259
B.1  Lua中的數(shù)據類型         259
B.2  定義一個函數(shù)        260
B.3  Lua中的協(xié)程         261
附錄C  從零開發(fā)一個Node Web框架        263
C.1  框架的雛形   263
C.2  框架的完善   264
C.3  總結        268
附錄D  MongoDB和Redis簡介 269
D.1  NoSQL    269
D.2  MongoDB簡介      269
D.3  Redis簡介     271
附錄E  使用Docker來實現(xiàn)虛擬化     274
E.1  Docker的一些常用命令        274
E.2  Redis服務      275
附錄F  npm與包管理  277
F.1  package.json常用字段  277
F.2  依賴版本的管理    278
 

本目錄推薦

掃描二維碼
Copyright ? 讀書網 www.talentonion.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號 鄂公網安備 42010302001612號