-- 會員 / 註冊 --  
 帳號:
 密碼:
  | 註冊 | 忘記密碼
3/26 新書到! 3/19 新書到! 3/14 新書到! 12/12 新書到!
購書流程Q & A站務留言版客服信箱
3ds MaxMayaRhinoAfter EffectsSketchUpZBrushPainterUnity
PhotoShopAutoCadMasterCamSolidWorksCreoUGRevitNuke
C#CC++Java遊戲程式Linux嵌入式PLCFPGAMatlab
駭客資料庫搜索引擎影像處理FluentVR+ARANSYS深度學習
單晶片AVROpenGLArduinoRaspberry Pi電路設計CadenceProtel
HadoopPythonStm32CortexLabview手機程式AndroidiPhone
可查書名,作者,ISBN,3dwoo書號
詳細書籍分類

了不起的JavaScript工程師:從前端到全端高級進階

( 簡體 字)
作者:朱德龍類別:1. -> 程式設計 -> 網路編程 -> Javascript
   2. -> 程式設計 -> 網路編程 -> Node.js
譯者:
出版社:電子工業出版社了不起的JavaScript工程師:從前端到全端高級進階 3dWoo書號: 51560
詢問書籍請說出此書號!

缺書
NT售價: 395

出版日:8/1/2019
頁數:336
光碟數:0
站長推薦:
印刷:黑白印刷語系: ( 簡體 版 )
加入購物車 加到我的最愛
(請先登入會員)
ISBN:9787121371295
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證)
作者序:

譯者序:

前言:

先給出下面三個問題:
? 如何快速成為職場老手,通過提升工作效率加快自己的成長速度?
? 前端技術框架層出不窮,該保持什么樣的學習心態?
? 掌握JavaScript之后可以做哪些事情,有什么樣的晉級路線?
術與道
對于第一個問題,要提升工作效率,大體上可分為兩種途徑:
? 改變開發習慣,選擇好的軟硬件環境;
? 積累經驗,提升思維能力。
第一種途徑是從“術”的層面,在微觀、客觀上進行提升,非常直接也非常有效,但這種途徑也有缺陷,就是效率提升的空間有限。
本書的第1章便是教讀者一些容易掌握的開發軟硬件的知識及如何培養好的開發習慣,因為這些是能夠在短時間內提升效率的方法。
第二種途徑是從“道”的層面,宏觀、主觀地進行提升,提升速度緩慢,提升效果也很難快速直接地反映在工作中,但是提升空間可以說是無限的。
本書的第3章“高效編寫/組織代碼的心法”及第4章“模塊”都屬于此類,掌握這些基本原則和思路對前端知識甚至其他語言的學習都會有很大幫助。
JavaScript是語言工具,是“術”;但是如果能在熟悉JavaScript之后進行總結歸納、建立自己的學習模型、通過模型來快速掌握其他高級語言,那么這就是“道”。
關于“術”與“道”的理解,大家可能會有以下兩個誤區。
1.“道”太難了,把“術”研究透了也能成為高手
一部分讀者可能認為“量變引起質變”,只要“術”用得多了,自然能提升“道”。
“量變引起質變”其實是個半真命題,因為通常情況下引起質變是有條件的,這些條件既可能是主觀創造的,也可能是客觀存在的。
舉個例子,比如一個電商網站,每天只有1000人使用,但是突然業務暴增到每天一億人。如果不對系統架構進行調整可能就無法正常運行,這就是客觀要求引起的質變。
再舉個反例,比如一個開發者做了很多前端項目,“開發經驗很豐富”,但是面試的時候很多問題卻答不上來。網上的“你是具有3年開發經驗,還是把1年開發經驗重復了3遍”說的就是這種現象。
對于這種情況雖然有量變,但如果缺乏主動的歸納總結提升,很難引起質變。
有的讀者可能會疑惑,如果這位開發者不斷地使用新框架,比如從jQuery切換到Vue算不算是質變呢?這就好比一個人之前騎摩托車出行,現在改開汽車出行了,這算是生活的質變嗎?
2.“術”不重要,只要潛心向“道”便能成為高手
這種理解也相當理想化。“術”與“道”的關系就好像實踐與理論的關系,兩者相輔相成。精通“術”之后可以明白“道”,懂了“道”之后又可以用于“術”。
那些理解了“道”的高手很多時候都是從“術”開始學習的。比如《神雕俠侶》中的獨孤求敗,就是不斷地提升劍術來減少對劍本身的依賴的,最后掌握劍道,以至于“不滯于物,草木竹石均可為劍”。
本書一方面會講解技術重點,比如HTTP協議、瀏覽器,同時也更加注重關于“道”的知識講解,比如從單頁應用開發講到小程序開發、從JavaScript前端講到其在Node.js后端的應用。通過不同知識點重要概念的抽象與對比,最終讓讀者形成可遷移的、適應性強的學習能力。
危與機
其實開始提出的第二個問題暗示了前端工程師的兩個危機。
1.職業天花板較低
前端工程師相對于算法工程師、數據庫管理員等其他開發崗位來說,并不是一個有較高天花板的職位(不一定隨著工作年限增加而不斷提升個人能力和薪酬待遇)。相反,由于前端技術框架層出不窮,一般情況下,先入行的工程師和后入行的工程師相比,難以有較大的優勢。用了幾年jQuery的開發者和入職一年的初級開發者相比,學習使用Vue和React并不具有太多的優勢。技術總監和CTO很少有前端工程師出身的。

2.職業門檻較低
學會HTML、CSS這種靜態語言就可以實現一個網頁效果,JavaScript上手難度也不算大,同時容錯率較高,也就是說,如果代碼出現bug通常表現在界面和交互上,一般不會對公司造成較大影響,很多控制臺錯誤不容易被客戶察覺到。所以,很多IT培訓機構必開前端培訓課程,除了市場需求,門檻低也是一個重要的因素。
那么在這種情況下前端工程師該怎么通過學習和積累來建立自己的優勢呢?
至少可以從以下兩個方面入手。
1.提升學習能力
如前面提到的“術”與“道”,就能有效地提升學習能力與學習效率。有了強大的學習能力之后,很多新技術都能快速理解并上手。這樣的開發者的能力可以說是無限的,自然也不存在天花板。
2.多維度學習
本書以前端為起點,緊貼常用的Web技術知識(Vue、Angular、React、Node.js、HTTP等),幫助大家成為能獨立完成開發任務的“全端工程師”。全端提供的是另一種可能性,帶你了解不同的開發技能點,通過多種技能的組合使你成為真正強大的開發者。
樹與葉
我曾經參加過一場線下技術分享沙龍,有一場關于架構師的討論,一位同學說到自己想成為前端架構師,然后羅列了一大堆技術名詞及要學習的點,如看一看Vue的源代碼、熟練掌握Webpack的使用等。這些點看上去都沒錯,也緊貼熱點,但是這位同學以目前的狀態可能很難達到目標。因為他沒有形成自己的知識框架!
前端的知識點其實很多,也很細碎,對于開發者而言,并不需要把它們都記住,而是要形成自己的知識框架,然后不斷地去豐富它。對于新手而言可能比較難,不一定能做到,但是心中一定要有這個意識。
以本書的寫作線索為例。一條明線是圍繞JavaScript這門語言進行編寫的,講述了JavaScript的主要使用場景及核心知識,一條暗線便是根據數據流來進行編寫的,即從用戶端到服務器端;除了這兩條縱向的線索,還有一條橫向的線索就是從前端到多端(小程序)擴展。這些就是知識框架的體現。
只有先形成框架才能有效地把繁雜的知識點內化成為自己的經驗。用羅振宇的話來說就是“把新知識縫合到自己原有的知識體系中”。學無涯而生有涯,知識框架還能幫助我們對知識進行過濾,避免在一些無關的知識點上消耗過多時間。
致謝
個人能力再強,也畢竟是有限的。一個人的成就,往往離不開其他人的幫助與支持。所以本書能夠出版要感謝很多人。
感謝家人對我寫書的支持。
感謝董英編輯的信任和指點,以及其他編輯的細心校對。
感謝一直支持我的讀者,這其中包括本書的讀者及博客文章的讀者。
感謝學習我慕課網課程學生的支持。
感謝對于我寫書提出意見的朋友們。
感謝參考文章和資料的作者。
感謝所有曾經幫助我成長的人。
……
內容簡介:

本書講述了開發者使用JavaScript在各種Web開發場景下所需要掌握的重點知識和概念。從最基礎的開發工具講起,再到開發思維方式和前端頁面開發,然后擴展到小程序開發和開發工具的混合應用,再講解前后端交互最常用的網絡協議及API設計,最后講解了使用Node.js開發服務器端應用程序所需要掌握的核心概念。全書以數據鏈為線索,對重要概念進行精練的分析和對比,從而幫助讀者更好地理解和記憶。本書既包括知識技能,又包括設計思想,“道”與“術”并重,讓讀者“知行合一”,既能“坐而論道”,也能“起而行之”。
目錄:

第1章 開發環境 1
1.1 代碼編寫工具 2
1.1.1 IDE 2
1.1.2 編輯器 3
1.1.3 最佳選擇 3
1.2 Docker容器 5
1.2.1 Docker概述 5
1.2.2 Docker重要概念 6
1.2.3 Docker使用場景 11
1.2.4 Docker擴展 15
1.3 代碼管理 15
1.3.1 什么是代碼倉庫 16
1.3.2 版本管理的意義 16
1.3.3 版本管理的常用操作 16
1.3.4 分支管理的意義 17
1.3.5 分支管理的常用操作 17
1.3.6 分支管理流程 18
1.4 其他軟件 23
1.4.1 文件夾管理軟件 23
1.4.2 快速搜索工具 24
1.4.3 終端管理軟件 25
1.4.4 Chrome中的插件 25
1.5 硬件提升 26
1.5.1 提升程序運行速度 26
1.5.2 減少程序切換時間 27
1.6 小結 28
第2章 Web頁面與多頁應用 29
2.1 Web頁面的運行環境——瀏覽器 29
2.1.1 渲染引擎 30
2.1.2 JavaScript引擎 38
2.1.3 數據持久層 40
2.2 HTML 41
2.3 模板 42
2.3.1 模板的意義 42
2.3.2 常用模板分類 42
2.3.3 模板的重要功能 42
2.4 CSS盒模型 45
2.5 CSS 46
2.6 CSS布局 47
2.6.1 普通文檔流 47
2.6.2 浮動 57
2.6.3 定位 61
2.6.4 彈性盒模型 62
2.7 CSS預處理 68
2.7.1 預處理的意義 68
2.7.2 預處理的重要功能 69
2.7.3 樣式文件規劃 72
2.7.4 樣式類命名 73
2.8 JavaScript 77
2.8.1 實現功能邏輯 77
2.8.2 操作頁面或瀏覽器 78
2.8.3 進行網絡通信 79
2.8.4 第三方JavaScript庫——jQuery 84
2.8.5 JavaScript簡史 84
2.9 自動化構建工具 85
2.9.1 自動化構建工具的作用 85
2.9.2 常用的自動化構建工具 85
2.10 小結 86
第3章 高效編寫/組織代碼的心法 87
3.1 拆分方式 89
3.1.1 按文件類型拆分 89
3.1.2 按功能類型拆分 90
3.1.3 按關注點拆分 90
3.2 抽象原則 91
3.2.1 第一原則:DRY 91
3.2.2 第二原則:YAGNI 92
3.2.3 第三原則:The Rule of Three 93
3.3 不止于代碼 94
3.4 小結 94
第4章 模塊 96
4.1 模塊的意義 96
4.2 ECMAScript 5中的模塊 96
4.2.1 立即執行函數表達式(Immediately-Invoked Function Expression) 97
4.2.2 顯式模塊聲明 97
4.2.3 異步模塊定義 98
4.2.4 共同模塊定義 99
4.2.5 CommonJS 100
4.2.6 通用模塊定義 101
4.3 ECMAScript 6中的模塊 102
4.4 模塊打包工具 103
4.5 小結 107
第5章 單頁應用(SPA) 108
5.1 框架 109
5.2 視圖與數據 110
5.2.1 雙向數據綁定 111
5.2.2 單向數據流 115
5.3 路由 116
5.3.1 hash 116
5.3.2 history 117
5.4 組件 119
5.4.1 原生組件 119
5.4.2 第三方組件 121
5.5 小結 123
第6章 JavaScript的幾個趨勢 124
6.1 接口與數據類型 125
6.2 更好的異步解決方案 127
6.3 面向對象與類 132
6.3.1 封裝 132
6.3.2 繼承 134
6.3.3 多態 135
6.4 模塊化 138
6.5 小結 141
第7章 小程序概述 142
7.1 常見的App 142
7.2 JavaScript開發者的一雙翅膀 143
7.3 小程序的發展 144
7.4 小結 144
第8章 小程序與Web頁面 145
8.1 WXML 145
8.1.1 WXML與HTML的相同之處 145
8.1.2 WXML與HTML的不同之處 146
8.2 WXSS 149
8.2.1 WXSS與CSS的相同點 149
8.2.2 WXSS與CSS的不同點 149
8.3 JavaScript與WXS 155
8.4 JSON 155
8.4.1 app.json 155
8.4.2 project.config.json 156
8.4.3 page.json 157
8.4.4 component.json 158
8.5 小結 158

第9章 小程序與單頁應用 159
9.1 路由 159
9.1.1 路由配置 159
9.1.2 路由跳轉 160
9.1.3 路由監聽 161
9.2 組件 162
9.2.1 組件與頁面 162
9.2.2 小程序組件與單頁應用組件 164
9.3 web-view 165
9.3.1 作用 165
9.3.2 交互 165
9.4 小結 165
第10章 小程序的框架與插件 166
10.1 RxWX 166
10.2 WePY 168
10.3 mpvue 171
10.4 Taro 171
10.5 小結 171
第11章 小程序的開發工具與發布 173
11.1 開發者工具組成 173
11.1.1 模擬器 174
11.1.2 調試器 174
11.1.3 編輯器 176
11.1.4 其他功能 176
11.2 發布流程 177
11.2.1 小程序的版本 177
11.2.2 用戶身份與權限 178
11.3 小結 178
第12章 其他混合應用簡介 180
12.1 流應用 180
12.2 桌面應用 181
12.3 小結 182
第13章 HTTP協議與Web網站 183
13.1 HTTP的歷史 183
13.2 HTTP的通信方式 183
13.3 HTTP的狀態 184
13.4 小結 184
第14章 HTTP協議內容 185
14.1 請求行/狀態行 186
14.1.1 URL 186
14.1.2 請求方法 188
14.1.3 狀態碼/狀態信息 188
14.2 頭部 192
14.2.1 通用頭部字段 192
14.2.2 請求頭部字段 194
14.2.3 響應頭部字段 196
14.2.4 主體頭部字段 196
14.2.5 其他頭部字段 197
14.3 主體 198
14.4 Cookie 199
14.4.1 Cookie的分類 199
14.4.2 Cookie的使用 199
14.4.3 Cookie的缺陷 200
14.4.4 Cookie與存儲 201
14.5 Cookie與狀態 204
14.5.1 狀態存儲 205
14.5.2 狀態獲取 207
14.5.3 基于token的認證方式更好 207
14.6 小結 208
第15章 HTTP請求優化 209
15.1 減少連接/請求數 209
15.1.1 減少請求 209
15.1.2 減少連接 210
15.2 緩存數據 210
15.3 減少傳輸數據量 210
15.4 優化網絡鏈路 210
15.4.1 減少域名 211
15.4.2 使用CDN 211
15.5 小結 211
第16章 HTTP/2協議 212
16.1 多路復用 212
16.2 壓縮 214
16.3 支持TLS 215
16.4 應用層協議協商 215
16.5 服務器端推送 215
16.6 流控制 216
16.7 小結 216
第17章 HTTPS協議 217
17.1 HTTP的缺點 217
17.1.1 通信使用明文 217
17.1.2 不驗證通信方身份 218
17.1.3 無法證明報文的完整性 218
17.2 理解HTTPS 219
17.2.1 HTTPS通信流程 219
17.2.2 密碼學基礎 221
17.2.3 摘要與簽名 221
17.2.4 X.509與證書 222
17.3 小結 223
第18章 WebSocket協議 224
18.1 WebSocket與HTTP 224
18.2 WebSocket的使用 224
18.2.1 客戶端 225
18.2.2 服務器端 226
18.3 小結 227
第19章 API 228
19.1 REST 228
19.1.1 REST API設計 228
19.1.2 REST API工具 230
19.2 GraphQL 231
19.2.1 GraphQL設計 232
19.2.2 GraphQL工具 234
19.3 小結 235
第20章 Node.js概述 237
20.1 為什么要學習Node.js 237
20.2 什么是Node.js 238
20.3 Node.js的歷史 239
20.4 Node.js的結構 240
20.5 Node.js的運行機制 241
20.5.1 單線程 241
20.5.2 事件循環 242
20.6 學習Node.js的三個挑戰 244
20.6.1 I/O回調 244
20.6.2 代碼性能 244
20.6.3 多進程協作 245
20.7 小結 245
第21章 用Node.js編寫Web服務器端 246
21.1 處理請求 246
21.1.1 創建服務器端 246
21.1.2 解析請求 247
21.2 響應結果 250
21.2.1 狀態信息 250
21.2.2 響應頭部 251
21.2.3 響應主體 251
21.3 路由解析 253
21.4 I/O操作 260
21.4.1 文件 260
21.4.2 數據庫 264
21.4.3 網絡請求 267
21.5 Web框架 270
21.5.1 Express 271
21.5.2 Koa 271
21.6 小結 271
第22章 Node.js內存控制 273
22.1 內存限制 273
22.2 內存管理 276
22.2.1 內存分配 276
22.2.2 內存回收 276
22.3 內存泄漏 277
22.3.1 緩存 277
22.3.2 不斷增長的數組 279
22.3.3 重復的事件監聽 279
22.4 大內存處理 281
22.5 小結 283
第23章 Node.js多進程 284
23.1 PM2模塊 284
23.1.1 安裝與使用 285
23.1.2 進程通信 286
23.1.3 進程管理 287
23.2 cluster模塊 290
23.2.1 基本使用 291
23.2.2 進程通信 294
23.2.3 進程管理 294
23.3 child_process模塊 298
23.3.1 基本使用 298
23.3.2 進程通信 298
23.3.3 進程管理 302
23.4 worker_threads模塊 303
23.4.1 基本使用 303
23.4.2 線程通信 304
23.4.3 線程管理 305
23.5 小結 306
第24章 Node.js調試與測試 307
24.1 開發工具 307
24.2 調試工具 307
24.2.1 debug模塊 308
24.2.2 Node Inspector 309
24.3 單元測試 312
24.3.1 單元測試的意義 312
24.3.2 單元測試代碼編寫原則 312
24.3.3 測試框架 314
24.3.4 測試風格 316
24.3.5 測試指標 317
24.4 小結 319
序: