注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)新時(shí)期的Node.js入門(mén)

新時(shí)期的Node.js入門(mén)

新時(shí)期的Node.js入門(mén)

定 價(jià):¥49.00

作 者: 李鍇 著
出版社: 清華大學(xué)出版社
叢編項(xiàng): Web前端技術(shù)叢書(shū)
標(biāo) 簽: 暫缺

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787302487807 出版時(shí)間: 2017-12-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 279 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

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

作者簡(jiǎn)介

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

圖書(shū)目錄

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

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) m.ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)