關(guān)于我們
書單推薦
新書推薦
|
JavaScript全棧開發(fā)實戰(zhàn)
本書分為25章,內(nèi)容包括:開發(fā)環(huán)境、API簡介、使用Node和Express開發(fā)Web應(yīng)用、數(shù)據(jù)庫、CRUD操作、用戶賬戶和身份驗證、用戶操作、細(xì)節(jié)優(yōu)化、用戶界面和React、裝飾應(yīng)用、Web應(yīng)用驗證和狀態(tài)管理、部署Web應(yīng)用、部署Electron應(yīng)用、移動應(yīng)用shell、移動應(yīng)用身份驗證等。
JavaScript是一門小型編程語言,但它能做到的事可不少。JavaScript曾經(jīng)主要用于增加Web瀏覽器窗口的交互性,現(xiàn)在已經(jīng)發(fā)展成構(gòu)建強大而健壯的應(yīng)用的重要工具。這是一本從實際出發(fā)的書,適合新手和有經(jīng)驗的JavaScript開發(fā)人員閱讀,學(xué)習(xí)如何使用JavaScript語言創(chuàng)建API,以及Web、移動和桌面應(yīng)用。
本書作者Adam D. Scott是一名工程主管,他將帶領(lǐng)你學(xué)習(xí)Node.js、GraphQL、React、React Native和Electron等技術(shù)。本書非常適合想要構(gòu)建全棧應(yīng)用的開發(fā)人員,以及志向高遠(yuǎn)、想自創(chuàng)公司的Web開發(fā)初學(xué)者閱讀。本書詳細(xì)說明了如何創(chuàng)建一個能適應(yīng)各種平臺的CRUD風(fēng)格的應(yīng)用。本書主要內(nèi)容有:了解GraphQL查詢數(shù)據(jù)的簡單流程。學(xué)習(xí)API、Web應(yīng)用和原生應(yīng)用驗證身份的共同方式。使用React和Styled Components構(gòu)建高性能的Web應(yīng)用。使用React Native編寫可編譯為原生代碼的iOS和Android跨平臺應(yīng)用。學(xué)習(xí)使用Electron編寫桌面應(yīng)用。
前言
筆者開發(fā)完第一個 Electron 桌面應(yīng)用后萌生了撰寫這本書的想法。使用 Web技術(shù)構(gòu)建跨平臺應(yīng)用成為可能,這讓從事 Web 開發(fā)工作的筆者深感震撼。同一時期,React、React Native 和 GraphQL 開始迅速發(fā)展。筆者四處尋找資源,想系統(tǒng)學(xué)習(xí)這些技術(shù),可是總找不到合適的。而這本書就是筆者當(dāng)時希望能讀到的指南。 本書的最終目標(biāo)是介紹如何使用一門編程語言(即 JavaScript)去構(gòu)建各種各樣的應(yīng)用。 目標(biāo)讀者 本書面向具有一定 HTML、CSS 和 JavaScript 經(jīng)驗的中級開發(fā)人員,或者是希望學(xué)習(xí)開展業(yè)務(wù)或業(yè)余項目所需工具的初學(xué)者。 內(nèi)容編排 本書指導(dǎo)你開發(fā)一個可在不同平臺上運行的示例應(yīng)用。整書內(nèi)容分為以下幾部分: • 第 1 章指導(dǎo)你搭建 JavaScript 開發(fā)環(huán)境。 • 第 2~10 章介紹使用 Node、Express、MongoDB 和 Apollo Server 構(gòu)建一個 API。 • 第 11~25 章說明使用 React、Apollo 和其他工具構(gòu)建跨平臺的用戶界面。具體而言: — 第 11 章介紹用戶界面開發(fā)和 React。 — 第12~17 章說明如何使用 React、Apollo Client 和 CSS-in-JS 構(gòu)建 Web應(yīng)用。 — 第18~20 章指導(dǎo)你構(gòu)建簡單的 Electron 應(yīng)用。 — 第21~25 章介紹使用 React Native 和 Expo 為 iOS 和 Android 構(gòu)建移動應(yīng)用。 排版約定 本書采用下述排版約定。 斜體 表示新術(shù)語、URL、電子郵件地址、文件名和擴展名。 等寬字體(Constant Width) 表示程序清單,在段落中出現(xiàn)則表示程序元素,例如變量、函數(shù)名、數(shù)據(jù)庫、數(shù)據(jù)類型、環(huán)境變量、語句和關(guān)鍵字。 粗體等寬字體(Constant width bold) 表示命令或者應(yīng)由用戶原樣輸入的文本。 斜體等寬字體(Constant Width Italic) 表示應(yīng)該替換成用戶提供的值,或者由上下文決定的值。 使用代碼示例 本書的補充材料( 代碼示例、練習(xí)題等) 可到 https://github.com/javascripteverywhere 下載。 如果你有技術(shù)問題, 或者在使用代碼示例上有疑問, 請發(fā)電子郵件到bookquestions@oreilly.com。 本書是要幫你完成工作的。一般來說,如果本書提供了示例代碼,你可以把它用在你的程序或文檔中。除非你使用了很大一部分代碼,否則無需聯(lián)系我們獲得許可。比如,用本書的幾個代碼片段寫一個程序就無需獲得許可,銷售或分發(fā) O’Reilly 圖書的示例光盤則需要獲得許可;引用本書中的示例代碼回答問題無需獲得許可,將書中大量的代碼放到你的產(chǎn)品文檔中則需要獲得許可。 我們很希望但并不強制要求你在引用本書內(nèi)容時加上引用說明。引用說明一般包括書名、作者、出版社和 ISBN。比如:“JavaScript Everywhere by Adam D. Scott (O’Reilly). Copyright 2020 Adam D. Scott, 978-1-492-04698-1”。如果你覺得自己對示例代碼的用法超出了上述許可的范圍, 請通過permissions@oreilly.com 與我們聯(lián)系。 O’Reilly 在線學(xué)習(xí)平臺(O’Reilly Online Learning) 近40 年來,O’Reilly Media 致力于提供技術(shù)和商業(yè) 培訓(xùn)、知識和卓越見解,來幫助眾多公司取得成功。 我們擁有獨一無二的專家和革新者組成的龐大網(wǎng)絡(luò),他們通過圖書、文章、會議和我們的在線學(xué)習(xí)平臺分享他們的知識和經(jīng)驗。O’Reilly 的在線學(xué)習(xí)平臺允許你按需訪問現(xiàn)場培訓(xùn)課程、深入的學(xué)習(xí)路徑、交互式編程環(huán)境,以及O’Reilly 和200 多家其他出版商提供的大量文本和視頻資源。有關(guān)的更多信息,請訪問http://oreilly.com。 聯(lián)系我們 請把對本書的評價和問題發(fā)給出版社。 美國: O’Reilly Media, Inc. 1005 Gravenstein Highway North Sebastopol, CA 95472 中國: 北京市西城區(qū)西直門南大街2號成銘大廈C座807室(100035) 奧萊利技術(shù)咨詢(北京)有限公司 本書的勘誤、示例和其他信息可到 https://oreil.ly/javascript-everywhere 上獲取。 對本書的評論或技術(shù)疑問,可以發(fā)電子郵件到 bookquestions@oreilly.com。 欲了解本社圖書、課程、會議和新聞等更多信息,請訪問我們的網(wǎng)站 http://www.oreilly.com。 我們的 Facebook:http://facebook.com/oreilly。 我們的 Twitter:http://twitter.com/oreillymedia。 我們的 YouTube:http://www.youtube.com/oreillymedia。 致謝 感謝 O’Reilly 公司過去和現(xiàn)在所有優(yōu)秀的人,他們多年來一直歡迎我說出自己的想法,對不同的觀點包容開放。我要特別感謝編輯 Angela Rufino,她給我反饋、鼓勵和許多善意的提醒。我還要感謝 Mike Loukides,他為我提供了咖啡因,與我促膝長談。最后,感謝 Jennifer Pollock 的支持和鼓勵。 由衷感謝開源社區(qū),我學(xué)到了很多東西并從中受益。如果沒有創(chuàng)建和維護眾多庫的個人和組織,這本書是不可能問世的。 得益于幾位技術(shù)審校的幫助,這本書才能以更好的面貌呈現(xiàn)在你面前,才能保證內(nèi)容準(zhǔn)確無誤。感謝 Andy Ngom、Brian Sletten、Maximiliano Firtman和 Zeeshan Chawdhary。這次代碼審查任務(wù)非常繁重,衷心感謝他們所做的努力。特別感謝我的老同事兼朋友 Jimmy Wilson,我在本書付梓之前最后一刻打電話給他,讓他再審查一遍,給我提供反饋。這是很高的要求,但就像他所做的每一件事一樣,他滿懷熱情地應(yīng)允了。沒有他的幫助,這本書不可能像現(xiàn)在這么好。 成年后,我非常幸運,與一群聰明、熱情、支持我的同事相處。我和他們在一起的時間里學(xué)到了很多大大小小的經(jīng)驗,有技術(shù)方面的,也有非技術(shù)方面的。人員太多,無法一一列出,這里特別向 Elizabeth Bond、John Paul Doguin、Marc Esher、Jenn Lassiter 和 Jessica Schafer 表示敬意。 寫作時,音樂一直陪伴著我,沒有 Chuck Johnson、Mary Lattimore、Makaya McCraven、G.S.Schray、Sam Wilkes、Hiroshi Yoshimura 等人的美妙聲線,我不可能寫出這本書。 最后,感謝我的妻子 Abbey,感謝我的孩子 Riley、Harrison 和 Harlow,為了寫這本書,我犧牲了很多陪伴他們的時間。 謝謝你們在我深居辦公室奮筆疾書時體諒我,有時我身不在但心在。你們四個是我做每件事的動力。
Adam D. Scott生活在美國康涅狄格州,是一名工程經(jīng)理、Web開發(fā)者和教育工作者。他目前在美國消費者金融保護局擔(dān)任Web開發(fā)主管,與才華橫溢的團隊一起專注于構(gòu)建開源Web應(yīng)用。他從事教育工作已經(jīng)十多年,經(jīng)歷了很多技術(shù)變革。他教授和編寫了一系列技術(shù)課程。
目錄
序 .1 前言 .3 第 1 章 開發(fā)環(huán)境 9 1.1 文本編輯器 . 10 1.2 終端 10 1.2.1 使用專門的終端應(yīng)用 10 1.2.2 使用 VSCode 11 1.2.3 在文件系統(tǒng)中變換位置 11 1.3 命令行工具和Homebrew(僅適用Mac 用戶) 12 1.4 Node.js 和 NPM 12 1.4.1 在 macOS 中安裝 Node.js 和 NPM 13 1.4.2 在 Windows 中安裝 Node.js 和 NPM 13 1.5 MongoDB 14 1.5.1 在 macOS 中安裝和運行 MongoDB . 14 1.5.2 在 Windows 中安裝和運行 MongoDB . 15 1.6 Git 16 1.7 Expo 16 1.8 Prettier 17 1.9 ESLint 17 1.10 美化 . 18 1.11 小結(jié) . 18 第 2 章 API 簡介 19 2.1 構(gòu)建什么 19 2.2 如何構(gòu)建 20 2.3 開始動手 21 2.4 小結(jié) 22 第 3 章 使用Node 和Express 開發(fā)Web 應(yīng)用 23 3.1 Hello World . 23 3.2 Nodemon 24 3.3 擴展端口選項 26 3.4 小結(jié) 27 第 4 章 首個 GraphQL API 28 4.1 把服務(wù)器(初步)改造成 API 28 4.2 GraphQL 基礎(chǔ)知識 . 33 4.2.1 模式 33 4.2.2 解析器 . 34 4.3 改造 API 35 4.4 小結(jié) 43 第 5 章 數(shù)據(jù)庫 44 5.1 MongoDB 入門 . 45 5.2 在應(yīng)用中連接 MongoDB . 47 5.3 在應(yīng)用中讀寫數(shù)據(jù) 51 5.4 小結(jié) 59 第 6 章 CRUD 操作 60 6.1 分離 GraphQL 模式和解析器 60 6.2 編寫 GraphQL CRUD 模式 . 64 6.3 CRUD 解析器 65 6.4 日期和時間 . 67 6.5 小結(jié) 70 第 7 章 用戶賬戶和身份驗證 71 7.1 應(yīng)用身份驗證流程 71 7.2 加密和令牌 . 73 7.2.1 加密密碼. 73 7.2.2 JSON Web Tokens 74 7.3 在 API 中集成身份驗證功能 . 75 7.3.1 User 模式 76 7.3.2 身份驗證解析器 . 78 7.4 把用戶添加到解析器上下文中 . 82 7.5 小結(jié) 85 第 8 章 用戶操作 .86 8.1 準(zhǔn)備工作 86 8.2 新建筆記時指定用戶 . 87 8.3 用戶的更新和刪除權(quán)限 89 8.4 用戶查詢 91 8.5 收藏筆記 94 8.6 嵌套查詢 99 8.7 小結(jié) . 102 第 9 章 細(xì)節(jié)優(yōu)化 103 9.1 Web 應(yīng)用和 Express.js 最佳實踐 103 9.1.1 Express Helmet . 103 9.1.2 跨域資源共享 104 9.2 分頁 . 105 9.3 數(shù)據(jù)限制 107 9.4 其他事項 109 9.4.1 測試 109 9.4.2 訂閱 109 9.4.3 Apollo GraphQL Platform 109 9.5 小結(jié) . 110 第 10 章 部署 API . 111 10.1 托管數(shù)據(jù)庫 112 10.2 部署應(yīng)用 . 118 10.2.1 項目設(shè)置 118 10.2.2 部署 . 120 10.2.3 測試 . 120 10.3 小結(jié) 121 第 11 章 用戶界面和 React 122 11.1 JavaScript 和 UI 123 11.2 JavaScript 聲明式界面 . 124 11.3 React 入門 124 11.4 小結(jié) 130 第 12 章 使用React 構(gòu)建Web 客戶端 . 131 12.1 構(gòu)建什么 . 131 12.2 如何構(gòu)建 . 132 12.3 開始動手 . 133 12.4 構(gòu)建 Web 應(yīng)用 . 134 12.5 路由 136 12.6 UI 組件 141 12.7 小結(jié) 144 第 13 章 裝飾應(yīng)用 145 13.1 創(chuàng)建布局組件 145 13.2 CSS 148 13.2.1 CSS-in-JS 149 13.2.2 創(chuàng)建一個按鈕組件 150 13.2.3 添加全局樣式 . 152 13.2.4 組件樣式 154 13.3 小結(jié) 158 第 14 章 使用 Apollo Client 159 14.1 設(shè)置 Apollo Client . 160 14.2 查詢 API . 162 14.3 動態(tài)查詢 . 173 14.4 分頁 177 14.5 小結(jié) 179 第 15 章 Web 身份驗證和狀態(tài)管理 180 15.1 創(chuàng)建注冊表單 180 15.1.1 React 表單和狀態(tài) . 184 15.1.2 signUp 變更操作 186 15.1.3 JSON Web Token 和本地存儲器 189 15.2 重定向 . 190 15.3 為請求附加首部 190 15.4 本地狀態(tài)管理 191 15.5 退出 195 15.6 創(chuàng)建登錄表單 198 15.7 受保護的路由 203 15.8 小結(jié) 205 第 16 章 創(chuàng)建、讀取、更新和刪除操作 207 16.1 新建筆記 . 207 16.2 讀取用戶的筆記 214 16.3 更新筆記 . 218 16.4 刪除筆記 . 226 16.5 收藏筆記 . 228 16.6 小結(jié) 232 第 17 章 部署Web 應(yīng)用 . 233 17.1 靜態(tài)網(wǎng)站 . 233 17.2 我們的部署流水線 . 235 17.2.1 使用 Git 托管源碼 235 17.2.2 使用 Netlify 部署 237 17.3 小結(jié) 239 第 18 章 使用Electron 開發(fā)桌面應(yīng)用 240 18.1 構(gòu)建什么 . 240 18.2 如何構(gòu)建 . 241 18.3 開始動手 . 241 18.4 首個 Electron 應(yīng)用 . 242 18.5 特別處理 macOS 應(yīng)用窗口 244 18.6 開發(fā)者工具 245 18.7 Electron API 246 18.8 小結(jié) 247 第 19 章 使用Electron 集成現(xiàn)有的Web 應(yīng)用 248 19.1 集成 Web 應(yīng)用 . 248 19.2 配置 251 19.3 內(nèi)容安全策略 252 19.4 小結(jié) 255 第 20 章 部署Electron 應(yīng)用 . 256 20.1 Electron Builder 256 20.2 針對當(dāng)前平臺構(gòu)建 . 258 20.3 應(yīng)用圖標(biāo) . 259 20.4 針對多個平臺構(gòu)建 . 260 20.5 代碼簽名 . 260 20.6 小結(jié) 261 第 21 章 使用React Native 開發(fā)移動應(yīng)用 . 262 21.1 構(gòu)建什么 . 263 21.2 如何構(gòu)建 . 263 21.3 開始動手 . 264 21.4 小結(jié) 268 第 22 章 移動應(yīng)用shell . 269 22.1 React Native 構(gòu)件 269 22.2 樣式和 Styled Components 271 22.3 路由 275 22.3.1 使用 React Navigation 實現(xiàn)標(biāo)簽頁路由 276 22.3.2 堆疊導(dǎo)航 279 22.3.3 添加界面標(biāo)題 . 284 22.4 圖標(biāo) 285 22.5 小結(jié) 287 第 23 章 GraphQL 和React Native 288 23.1 創(chuàng)建列表和滾動內(nèi)容視圖 289 23.2 使用 Apollo Client 操作 GraphQL . 297 23.3 添加加載中指示符 . 304 23.4 小結(jié) 306 第 24 章 移動應(yīng)用身份驗證 307 24.1 身份驗證路由流程 . 307 24.2 創(chuàng)建登錄表單 317 24.3 通過 GraphQL 變更操作驗證身份 . 322 24.4 帶身份驗證信息的 GraphQL 查詢 . 324 24.5 添加注冊表單 329 24.6 小結(jié) 335 第 25 章 分發(fā)移動應(yīng)用 337 25.1 配置 app.json 337 25.2 圖標(biāo)和應(yīng)用加載界面 340 25.2.1 應(yīng)用圖標(biāo) 340 25.2.2 啟動畫面 341 25.3 發(fā)布到 Expo 中 342 25.4 創(chuàng)建原生構(gòu)建包 343 25.4.1 iOS 344 25.4.2 Android 345 25.5 分發(fā)到應(yīng)用商店中 . 346 25.6 小結(jié) 346 后記 347 附錄A 在本地運行 API 349 附錄B 在本地運行Web 應(yīng)用 . 351 作者介紹 353 封面介紹 353
你還可能感興趣
我要評論
|