TypeScript入門與區塊鏈項目實戰( 簡體 字) | |
作者:[美] 雅科夫·法因(Yakov Fain)、[俄] 安東·莫伊謝耶夫(Anton Moiseev) | 類別:1. -> 程式設計 -> 網路編程 -> Javascript 2. -> 程式設計 -> 物聯網 |
譯者:王紅濱 王勇 何鳴 | |
出版社:清華大學出版社 | 3dWoo書號: 54641 詢問書籍請說出此書號! 有庫存 NT售價: 640 元 |
出版日:5/1/2021 | |
頁數:415 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302578307 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第Ⅰ部分精通TypeScript語法
第1章熟悉TypeScript3 1.1使用TypeScript編程的理由3 1.2典型的TypeScript工作流7 1.3使用TypeScript編譯器8 1.4了解VisualStudioCode12 1.5本章小結14 第2章基本類型與自定義類型15 2.1聲明變量類型15 2.1.1基本類型標注16 2.1.2函數聲明中的類型20 2.1.3union類型21 2.2定義自定義類型23 2.2.1使用type關鍵字24 2.2.2將類用作自定義類型25 2.2.3將接口用作自定義類型27 2.2.4結構化還是名義類型系統29 2.2.5自定義類型的unions31 2.3any和unknown類型,以及用戶定義的類型保護33 2.4微型項目35 2.5本章小結36 第3章面向對象編程的類和接口37 3.1類37 3.1.1開始了解類繼承38 3.1.2訪問修飾符public、private、protected39 3.1.3靜態變量及singleton(單例)設計模式示例41 3.1.4super()方法與super關鍵字43 3.1.5抽象類45 3.1.6方法重載48 3.2使用interface53 3.2.1執行合同53 3.2.2擴展接口55 3.2.3接口編程57 3.3本章小結60 第4章使用枚舉和泛型61 4.1使用枚舉61 4.1.1數字型枚舉61 4.1.2字符串枚舉64 4.1.3使用常量枚舉66 4.2使用泛型67 4.2.1理解泛型67 4.2.2創建自己的泛型類型72 4.2.3創建泛型函數76 4.2.4強制執行高階函數的返回類型80 4.3本章小結81 第5章裝飾器與高級類型83 5.1裝飾器84 5.1.1創建類裝飾器85 5.1.2創建函數裝飾器90 5.2映射類型92 5.2.1只讀映射類型92 5.2.2聲明自己的映射類型96 5.2.3其他內置的映射類型97 5.3條件類型99 5.4本章小結104 第6章開發工具集105 6.1源映射106 6.2TSLintlinter108 6.3使用Webpack綁定代碼111 6.3.1使用Webpack綁定JavaScript112 6.3.2使用Webpack綁定TypeScript116 6.4使用Babel編譯器119 6.4.1在JavaScript中使用Babel122 6.4.2在TypeScript中使用Babel124 6.4.3在TypeScript與Webpack中使用Babel126 6.5工具介紹128 6.5.1Deno介紹128 6.5.2ncc介紹129 6.6本章小結132 第7章在項目中同時使用TypeScript和JavaScript133 7.1類型定義文件133 7.1.1了解類型定義文件134 7.1.2類型定義文件與IDE135 7.1.3shim與類型定義138 7.1.4創建自己的類型定義文件139 7.2使用JavaScript庫的TypeScript應用程序示例140 7.3在JavaScript項目中使用TypeScript148 7.4本章小結151 第Ⅱ部分基于TypeScript的區塊鏈應用 第8章開發區塊鏈應用155 8.1區塊鏈簡介156 8.1.1加密哈希函數157 8.1.2區塊由什么組成159 8.1.3什么是區塊挖掘160 8.1.4哈希和隨機數的迷你項目162 8.2開發第一個區塊鏈164 8.2.1項目結構164 8.2.2創建一個原始區塊鏈167 8.2.3使用工作證明創建區塊鏈170 8.3本章小結173 第9章開發基于瀏覽器的區塊鏈節點175 9.1運行區塊鏈Web應用176 9.1.1項目結構176 9.1.2使用npm腳本部署應用178 9.1.3使用區塊鏈Web應用179 9.2Web客戶端182 9.3挖掘區塊187 9.4使用cryptoAPI生成哈希191 9.5獨立的區塊鏈客戶端194 9.6在瀏覽器中調試TypeScript196 9.7本章小結198 第10章使用Node.js、TypeScript和WebSocket進行客戶端-服務器通信199 10.1使用最長鏈規則解決沖突200 10.2為區塊鏈添加服務器202 10.3項目結構203 10.4項目的配置文件204 10.4.1配置TypeScript編譯環境204 10.4.2package.json包含什么206 10.4.3配置nodemon207 10.4.4運行區塊鏈App208 10.5WebSocket簡介213 10.5.1HTTP和WebSocket協議的對比214 10.5.2將數據從節點服務器推送到普通客戶端215 10.6回顧通知工作流219 10.6.1回顧服務器代碼221 10.6.2回顧客戶端代碼231 10.7本章小結240 第11章使用TypeScript開發Angular應用程序241 11.1使用AngularCLI生成并運行一個新的應用程序242 11.2查看生成的App244 11.3Angular服務和依賴注入250 11.4使用ProductService注入的應用253 11.5使用TypeScript進行抽象編程255 11.6開始處理HTTP請求257 11.7表單入門261 11.8Router基礎265 11.9本章小結269 第12章使用Angular開發區塊鏈客戶端271 12.1啟動Angular區塊鏈應用程序271 12.2回顧AppComponent273 12.3回顧TransactionFormComponent277 12.4回顧BlockComponent278 12.5回顧服務281 12.6本章小結283 第13章使用TypeScript開發React.js應用程序285 13.1使用React開發最簡單的網頁286 13.2使用CreateReactApp生成并運行一個新應用288 13.3管理組件的狀態293 13.3.1向基于類的組件添加狀態293 13.3.2使用鉤子管理函數組件的狀態294 13.4開發一個天氣應用程序297 13.4.1向App組件添加狀態鉤子298 13.4.2在App組件中使用useEffect鉤子獲取數據300 13.4.3使用props306 13.4.4子組件如何將數據傳遞給其父組件311 13.5VirtualDOM313 13.6本章小結314 第14章使用React.js開發區塊鏈客戶端315 14.1啟動客戶端和消息服務器315 14.2lib目錄中發生的變化318 14.3smartApp組件320 14.3.1添加事務322 14.3.2生成一個新區塊324 14.3.3解釋useEffect()鉤子函數325 14.3.4使用useCallback()鉤子的記憶化緩存(Memoization)327 14.4presentation組件——TransactionForm330 14.5presentation組件——PendingTransactionsPanel333 14.6presentation組件——BlocksPanel和BlockComponent335 14.7本章小結337 第15章使用TypeScript開發Vue.js應用程序339 15.1使用Vue開發最簡單的Web頁面340 15.2使用VueCLI生成和運行新應用程序343 15.3開發有路由支持的單頁應用程序349 15.3.1使用VueRouter生成一個新應用程序350 15.3.2在主視圖中顯示products列表353 15.3.3使用VueRouter傳遞數據358 15.4本章小結362 第16章用Vue.js開發區塊鏈客戶端365 16.1啟動客戶端和消息服務器366 16.2App組件369 16.3presentation組件——TransactionForm372 16.4presentation組件——PendingTransactionsPanel376 16.5presentation組件——BlocksPanel和Block378 16.6本章小結382 后記382 附錄AJavaScript基礎知識383 A.1如何運行代碼示例383 A.2關鍵字let和const383 A.2.1var關鍵字和hoisting(提升)384 A.2.2使用let和const的塊級作用域385 A.3字面量模板386 A.4可選參數和默認值388 A.5箭頭函數表達式389 A.6rest運算符391 A.7spread運算符393 A.8解構394 A.8.1解構對象394 A.8.2解構數組397 A.9類和繼承398 A.9.1構造函數400 A.9.2super關鍵字和super函數401 A.9.3靜態類成員402 A.10異步處理403 A.10.1回調地獄404 A.10.2promise404 A.10.3同時執行多個promise407 A.10.4async-await408 A.11模塊410 A.12轉換器413 主要內容
精通TypeScript語法 在TypeScript中使用JavaScript庫使用Babel和Webpack工具 使用Angular、React和Vue框架構建TypeScript應用程序 《TypeScript入門與區塊鏈項目實戰》是一本有關編程語言TypeScript的書籍。據開發者在Stack Overflow上的調查,TypeScript是最受歡迎的編程語言之一。
若每天使用TypeScript,就會更加喜歡它。對TypeScript的喜愛源于它允許我們將關注點放在要解決的主要問題上,而不必將精力放在諸如對象屬性名的輸入錯誤等問題上。與用JavaScript編寫的代碼相比,在TypeScript程序中,在運行時出錯的可能性更低。同時,許多IDE都能提供很棒的TypeScript支持,并且可以從我們的項目使用的第三方庫中引導我們穿過API的“迷宮”。 雖然TypeScript非常出色,但它是一種最終需要編譯到JavaScript的語言,因此我們也要討論一些關于JavaScript的問題。1995年5月,在經過10天的艱苦工作后,Brendan Eich開發了JavaScript編程語言。該腳本語言不需要編譯器,主要是想將其用在Netscape Navigator Web瀏覽器上。 在瀏覽器上部署JavaScript程序不需要編譯器。在JavaScript源文件中添加<script>標記(或對源文件的引用),就能指引瀏覽器加載并分析代碼,然后在瀏覽器的JavaScript引擎上執行代碼。開發者喜歡這種語言的簡潔性——無須說明變量的類型且無須使用任何工具。開發者僅僅需要使用文本編輯器編寫代碼并將其應用到Web頁面上。 在你第一次開始學習JavaScript時,可在兩分鐘內編寫自己的程序并看到它運行。無須安裝或配置什么,程序不需要編譯,因為JavaScript是一種解釋性語言。 JavaScript還是一種動態類型語言,能帶給軟件開發者額外的自由。不需要預先聲明對象的屬性,如果在運行時對象的某個屬性還未定義,JavaScript引擎將在運行階段創建屬性。 實際上,在JavaScript中是無法聲明變量類型的。JavaScript引擎將基于賦值猜測類型(例如,var x=123意味著x是number類型);如果之后的腳本有一個賦值為x="678",x的類型將自動從number變為string。是你真的想改變x的類型,還是說這是個錯誤?你只能在運行時才能知道,因為沒有編譯器警告你。 JavaScript是一種非常“寬容”的語言,如果代碼庫非常小,那么這沒什么問題,因為此時項目中唯有你參與。大多數情況下,你會記得x是一個number類型的變量,你不需要任何幫助。當然,若你始終為當前的雇主工作,變量x的類型你始終不會忘記。 JavaScript流行開來并成為Web開發中的標準編程語言。但是20年前,開發者使用JavaScript開發的是一些僅包含交互內容的Web頁面,今天我們開發的復雜文本應用程序是由開發小組共同開發的包含成千上萬行代碼的程序。并非每個小組成員都記得x被定義為number。為最小化運行錯誤的數量,JavaScript開發者將編寫單元測試并執行代碼審查。 得益于IDE的自動完成、易于重構等特點,軟件開發者可以進一步提高生產力。但如果編程語言允許將屬性自由地添加到對象中,隨意改變其類型,一個IDE將會如何幫助你進行優化呢? Web開發者需要更好的語言,但試圖用一種語言替換JavaScript,用于支持所有不同類型的瀏覽器是不現實的。因此,新的最終編譯到JavaScript的語言應運而生。它們對工具更友好,當然程序在部署前仍然需要轉換到JavaScript,以便所有瀏覽器都能支持它。TypeScript是這些語言中的一種,讀完《TypeScript入門與區塊鏈項目實戰》后,你會發現該語言能夠脫穎而出的原因。 |