具體描述
編輯推薦
自2015年春天Facebook開源React Native以來,React Native就憑藉其強大的可擴展性、良好的用戶體驗以及可擁有原生外觀等優勢得到開發者的關注和青睞。
本書是一本實踐指南,從基礎知識入手,逐步深入,帶領讀者部署可100%代碼復用的、成熟的跨平颱移動應用。作者通過示例代碼嚮Web開發者和前端工程師展示瞭如何使用移動組件構建界麵並編寫樣式,以及如何調試和部署應用。除瞭框架本身的講解,作者還探討瞭如何使用第三方庫,以及如何編寫自己的Java或者Objective-C的React Native擴展。
- 瞭解React Native如何開放原生UI組件接口
- 類比HTML元素,瞭解該框架如何使用原生組件
- 創建自己的React Native組件和應用,並為它們編寫樣式
- 為該框架不支持的API和功能安裝第三方模塊
- 使用工具來調試代碼,並解決JavaScript之外的問題
- 整閤所學知識,開發一款高效記憶閃卡應用——Zebreto
- 部署應用至iOS應用商店和Google Play商店 內容簡介
本書通過豐富的示例和詳細的講解,介紹瞭React Native這款JavaScript框架。在React Native中利用現有的JavaScript和React知識,就可以開發和部署功能完備的、真正原生的移動應用,並同時支持iOS與Android平颱。除瞭框架本身的概念講解之外,本書還討論瞭如何使用第三方庫,以及如何編寫自己的Java或Objective-C的React Native擴展。 作者簡介
Bonnie Eisenman是Twitter公司的軟件工程師,曾就職於Codecademy、Google和Fog Creek Software公司。她曾在多個會議上作過演講,話題涉及React、音樂編程和Arduino。工作之餘,她樂於開發電子樂器,喜愛使用激光切割巧剋力,並且熱愛學習各種語言。 目錄
目錄
前言 xi
第1章 初識React Native 1
1.1 React Native的優點 2
1.1.1 開發者體驗 2
1.1.2 代碼復用與知識共享 3
1.2 風險和缺點 4
1.3 小結 4
第2章 React Native工作原理 5
2.1 React Native是如何工作的 5
2.2 渲染周期 7
2.3 在React Native中創建組件 7
2.3.1 編寫視圖 7
2.3.2 使用JSX 9
2.3.3 原生組件的樣式 10
2.4 宿主平颱接口 11
2.5 小結 12
第3章 構建你的第一個應用 13
3.1 搭建環境 13
3.1.1 安裝React Native 14
3.1.2 iOS依賴 14
3.1.3 Android依賴 14
3.2 創建一個新的應用 17
3.2.1 在iOS平颱運行React Native應用 18
3.2.2 部署到iOS設備 20
3.2.3 在Android平颱運行React Native應用 23
3.2.4 小結:創建並運行項目 24
3.3 探索示例代碼 24
3.3.1 添加組件到視圖中 24
3.3.2 React Native中的模塊導入 25
3.3.3 FirstProject組件 26
3.4 開發天氣應用 27
3.4.1 處理用戶輸入 28
3.4.2 展現數據 30
3.4.3 添加背景圖片 34
3.4.4 從Web獲取數據 36
3.4.5 整閤 37
3.5小結 40
第4章 移動應用組件 42
4.1 類比HTML元素與原生組件 42
4.1.1 文本組件 43
4.1.2 圖片組件 45
4.2 處理觸摸和手勢 46
4.2.1 使用TouchableHighlight 47
4.2.2 GestureResponder係統 49
4.2.3 PanResponder 52
4.3 使用結構化組件 58
4.3.1 使用ListView 58
4.3.2 使用Navigator 66
4.3.3 其他結構化組件 68
4.4 平颱特定組件 69
4.4.1 iOS或Android特定組件 69
4.4.2 平颱特定版本的組件 70
4.4.3 何時使用平颱特定組件 74
4.5 小結 74
第5章 樣式 75
5.1 聲明和操作樣式 75
5.1.1 內聯樣式 76
5.1.2 對象樣式 76
5.1.3 使用Stylesheet.Create 77
5.1.4 樣式拼接 77
5.2 組織和繼承 79
5.2.1 導齣樣式對象 79
5.2.2 樣式作為屬性傳遞 80
5.2.3 復用和共享樣式 81
5.3 定位和設計布局 81
5.3.1 使用flexbox布局 82
5.3.2 使用絕對定位 86
5.3.3 學以緻用 86
5.4 小結 91
第6章 平颱接口 92
6.1 使用定位接口 93
6.1.1 獲取用戶地理位置 93
6.1.2 處理權限問題 94
6.1.3 在iOS模擬器上測試定位 95
6.1.4 監聽用戶位置 96
6.1.5 限製 96
6.1.6 改進天氣應用 96
6.2 使用用戶圖片與攝像頭 99
6.2.1 相機模塊 99
6.2.2 通過getPhotoParams獲取圖片 101
6.2.3 從相機渲染一張圖片 101
6.2.4 展示照片列錶 103
6.2.5 上傳圖片至服務器 107
6.3 AsyncStore持久化數據存儲 108
6.4 智能天氣應用 109
6.4.1 WeatherProject組件 111
6.4.2 Forecast組件 114
6.4.3 Button組件 115
6.4.4 LocationButton組件 116
6.4.5 PhotoBackdrop組件 117
6.5 小結 119
第7章 模塊 120
7.1 使用npm安裝JavaScript類庫 120
7.2 iOS原生模塊 121
7.2.1 導入第三方組件 122
7.2.2 使用視頻組件 125
7.2.3 剖析Objective-C原生模塊 125
7.2.4 RCTVideo的實現 128
7.3 Android原生模塊 130
7.3.1 安裝第三方組件 130
7.3.2 剖析Java原生模塊 134
7.3.3 LinearGradient的Android實現 137
7.4 跨平颱原生模塊 139
7.5 小結 141
第8章 調試與開發者工具 142
8.1 JavaScript調試實踐和解釋 142
8.1.1 激活開發者選項 142
8.1.2 使用console.log調試 143
8.1.3 使用JavaScript調試器 145
8.1.4 使用React開發者工具 146
8.2 React Native調試工具 147
8.2.1 使用審查元素功能 147
8.2.2 宕機紅屏 148
8.3 JavaScript之外的調試方法 152
8.3.1 常見的開發環境問題 153
8.3.2 常見的Xcode問題 153
8.3.3 常見的Android問題 154
8.3.4 React Native包管理器 155
8.3.5 部署至iOS設備的問題 156
8.3.6 模擬器行為 157
8.4 測試代碼 158
8.4.1 使用Flow進行類型檢查 158
8.4.2 使用Jest進行測試 158
8.5 當你陷入睏境 160
8.6 小結 160
第9章 學以緻用 161
9.1 閃卡應用 161
9.1.1 項目結構 163
9.1.2 組件層次結構 164
9.2 模型與數據存儲 168
9.2.1 數據流架構:Reflux與Flux 170
9.2.2 在Zebreto中使用Reflux 173
9.2.3 AsyncStorage與Reflux Store的持久化 175
9.3 使用Navigator 177
9.4 探索第三方依賴 180
9.5 響應式設計與字體尺寸 180
9.6 小結及任務 183
第10章 部署至iOS應用商店 184
10.1 準備Xcode工程 184
10.1.1 選擇支持的設備和目標iOS版本 185
10.1.2 啓動界麵圖像 186
10.1.3 添加應用圖標 188
10.1.4 設置Bundle名稱 190
10.1.5 更新AppDelegate.m 190
10.1.6 為發布設置Schema 191
10.2 上傳應用 192
10.2.1 完成協議文書 192
10.2.2 創建歸檔 193
10.2.3 在iTunes Connect上創建應用 196
10.3 使用TestFlight進行Beta測試 199
10.4 提交應用審核 200
10.5 小結 201
第11章 部署Android應用 203
11.1 設置應用圖標 203
11.2 生成release版本的APK 205
11.3 通過郵件或鏈接發布 207
11.4 提交應用至Play商店 207
11.4.1 通過Play Store進行Beta測試 209
11.4.2 Play商店列錶 210
11.4.3 商店列錶所需的資源 211
11.4.4 發布應用 212
11.5 小結 214
總結 215
附錄A ES6語法 216
附錄B 命令與快速入門指南 219
作者簡介 221
關於封麵 221 前言/序言
深入理解現代JavaScript:從ES6到TypeScript的演進與實踐 本書旨在為開發者提供一個全麵、深入的現代JavaScript學習路徑,幫助您掌握從ES6(ECMAScript 2015)至今最新的語言特性,並將其融會貫通,最終蛻變為一名能夠駕馭復雜前端工程的TypeScript專傢。我們不局限於零散的知識點羅列,而是著力於構建清晰的知識體係,強調概念的內在聯係與實際應用。 核心內容概述: 本書的架構清晰,由淺入深,主要涵蓋以下幾個核心模塊: 第一部分:ES6及後續版本的核心特性精講 在本部分,我們將對JavaScript語言自ES6以來引入的革命性特性進行逐一剖析。這不僅僅是語法層麵的介紹,更重要的是理解這些特性背後的設計理念、解決的問題以及它們如何賦能更高效、更優雅的編程方式。 變量聲明與作用域的演變: 深入理解`let`和`const`的塊級作用域、暫時性死區(TDZ)以及它們與老舊的`var`在內存管理和潛在 bug 上的區彆。我們將通過豐富的代碼示例,展示如何利用塊級作用域構建更清晰、可控的代碼結構,避免常見的變量提升和覆蓋問題。 箭頭函數與`this`指嚮的重塑: 詳細闡述箭頭函數的簡潔語法,特彆是其詞法作用域的特性,以及它如何徹底解決瞭傳統函數在迴調、方法綁定等場景下的`this`指嚮混亂問題。我們將通過對比分析,讓您深刻理解箭頭函數在特定場景下的優越性。 模闆字符串與多行字符串: 學習如何利用模闆字符串進行字符串插值和拼接,以及它們如何簡化HTML、SQL語句等嵌入式字符串的編寫。 解構賦值的強大威力: 從數組解構到對象解構,再到函數參數解構,我們將展示如何通過解構賦值大幅提高代碼的可讀性和簡潔性,實現數據的高效提取與賦值。 展開運算符(Spread)與剩餘參數(Rest): 深入理解展開運算符在復製數組、閤並對象、函數傳參等場景下的妙用。同時,掌握剩餘參數如何收集不定數量的函數參數,為編寫更靈活的函數奠定基礎。 類(Class)的引入: 盡管JavaScript本質上是基於原型的,但ES6的類語法糖極大地提升瞭麵嚮對象編程的便捷性。我們將詳細講解類的繼承、構造函數、靜態方法、getter/setter等,並揭示其底層原型鏈的運作機製。 模塊化(Modules): 掌握`import`和`export`的語法,理解ESM(ECMAScript Modules)如何實現代碼的組織、復用和依賴管理。我們將討論靜態導入與動態導入的差異,以及它們在不同環境下的應用。 Promise與異步編程的革新: 深入理解Promise的工作原理,包括狀態(pending, fulfilled, rejected)、鏈式調用、`then`、`catch`、`finally`的使用。我們將通過實際案例,展示Promise如何取代迴調地獄,實現清晰、可控的異步流程。 異步/等待(Async/Await): 基於Promise,async/await提供瞭比Promise更像同步代碼的異步編程方式。我們將詳細講解`async`函數、`await`關鍵字,以及如何結閤try...catch進行錯誤處理,實現優雅的異步邏輯。 迭代器(Iterators)與生成器(Generators): 瞭解迭代器協議,並學習如何使用生成器函數創建自定義迭代器,實現惰性計算、分步生成數據等高級功能。 Set與Map數據結構: 掌握Set(去重集閤)和Map(鍵值對集閤)的特性與常用方法,理解它們在特定場景下比Array和Object更高效、更靈活的應用。 Proxy與Reflect: 深入理解Proxy對象如何攔截和自定義對象的底層操作(如屬性查找、賦值、函數調用等),並結閤Reflect API,構建更強大的元編程能力,例如數據驗證、數據綁定、訪問控製等。 Symbol: 學習Symbol的特性,理解它如何作為唯一的、不可變的標識符,避免命名衝突,並應用於對象屬性、`for...of`循環、`Symbol.iterator`等場景。 第二部分:TypeScript的深度探索與實戰應用 TypeScript作為JavaScript的超集,通過靜態類型極大地提升瞭代碼的可維護性、可讀性和開發效率。本部分將引領您從入門到精通TypeScript。 TypeScript的基礎類型與高級類型: 全麵掌握`string`, `number`, `boolean`, `array`, `tuple`, `enum`, `any`, `unknown`, `void`, `null`, `undefined`等基礎類型。深入學習聯閤類型、交叉類型、字麵量類型、函數類型、索引簽名等高級類型,以及它們如何精確描述數據結構。 接口(Interfaces)與類型彆名(Type Aliases): 詳細講解接口和類型彆名在定義對象形狀、函數契約方麵的作用。我們將對比兩者的異同,並指導您何時使用何種方式。 類與繼承在TypeScript中的強化: 學習如何在TypeScript中定義類,利用訪問修飾符(`public`, `private`, `protected`)實現封裝,以及如何進行類繼承、抽象類和接口的實現。 泛型(Generics)的威力: 深入理解泛型的概念,學習如何使用泛型來創建可重用的組件,使其能夠處理多種類型的數據,同時保持類型安全。我們將通過豐富的示例,展示泛型在函數、類、接口中的應用。 枚舉(Enums)的應用場景: 掌握枚舉的定義和使用,理解它如何為一組命名的常量提供清晰的語義。 命名空間(Namespaces)與模塊化: 學習TypeScript如何組織代碼,包括內部和外部模塊的聲明,以及如何與ESM的模塊化機製協同工作。 類型體操(Advanced Type Manipulation): 探索更高級的類型操作,如條件類型、映射類型、模闆文字類型、鍵重映射等,學習如何構建復雜的、動態的類型係統,實現高度靈活的代碼。 類型兼容性與類型推斷: 理解TypeScript的類型兼容性規則,以及編譯器如何進行智能的類型推斷,從而減少顯式類型標注的需求。 配置TypeScript:`tsconfig.json`詳解: 詳細解讀`tsconfig.json`中的各項配置選項,包括目標ECMAScript版本、模塊係統、代碼檢查嚴格度、輸齣目錄等,指導您如何根據項目需求進行最優配置。 與JavaScript生態的集成: 學習如何引入JavaScript庫並為其編寫或使用聲明文件(`.d.ts`),確保TypeScript項目能夠無縫集成現有的JavaScript代碼。 第三部分:現代JavaScript與TypeScript的實戰模式 在掌握瞭核心語法和類型係統之後,本部分將聚焦於如何在實際項目中應用這些技術,形成高效、可維護的開發模式。 函數式編程思維的實踐: 學習函數式編程的核心概念,如純函數、不可變性、高階函數、柯裏化等,並如何在JavaScript/TypeScript中應用這些思想來編寫更健壯、更易於測試的代碼。 麵嚮對象編程的優雅實現: 結閤TypeScript的類與接口,學習如何構建清晰、可擴展的麵嚮對象設計。 錯誤處理的策略與最佳實踐: 探討不同類型的錯誤(運行時錯誤、邏輯錯誤),以及如何利用try...catch、Promise的reject/catch、TypeScript的類型係統等機製進行有效的錯誤捕獲與處理。 代碼風格與規範: 強調一緻的代碼風格對於團隊協作的重要性,並介紹ESLint、Prettier等工具在現代JavaScript/TypeScript項目中的應用,實現代碼格式化和規範化。 測試驅動開發(TDD)入門: 簡要介紹TDD的理念,並示範如何使用Jest等測試框架,結閤TypeScript的類型信息,編寫高質量的單元測試。 構建工具與打包: 簡要介紹Webpack、Vite等現代前端構建工具的基本概念,以及它們如何處理TypeScript代碼的編譯與打包。 本書特色: 深度而非廣度: 我們選擇性地深入講解核心概念,力求讓讀者真正理解其原理,而不是蜻蜓點水。 實踐導嚮: 每章都配有大量精選的代碼示例,直觀展示技術點的應用,並鼓勵讀者動手實踐。 循序漸進: 知識體係的構建遵循由淺入深、由易到難的原則,確保不同基礎的讀者都能從中受益。 思維啓迪: 我們不僅教授“怎麼做”,更注重引導讀者理解“為什麼”,培養解決問題的能力和工程思維。 麵嚮未來: 涵蓋最新的JavaScript標準特性和TypeScript的進階應用,幫助您站在技術前沿。 通過本書的學習,您將能夠自信地運用現代JavaScript和TypeScript來構建高性能、可維護、可擴展的應用程序,為您的職業發展打下堅實的基礎。
我對React Native的興趣,更多地源於其跨平颱開發的巨大潛力,這對於小型團隊或者希望快速迭代産品的開發者來說,無疑是巨大的福音。然而,很多入門級的教程,往往隻停留在“Hello World”階段,或者隻是簡單介紹一些常用的UI組件。我更關注的是,如何構建一個具有企業級應用所需穩定性和可擴展性的React Native項目。這本書的《React Native開發指南》給我帶來的第一印象是,它似乎能夠滿足我這種對項目“深度”和“廣度”的需求。從它提到的“架構模式”、“狀態管理進階”、“網絡請求優化”、“安全性考量”以及“打包與發布流程”等主題來看,它觸及瞭實際開發中更為復雜和關鍵的環節。我希望書中能夠提供清晰的指導,告訴我如何選擇適閤項目的架構,如何有效地管理日益增長的應用狀態,以及如何確保數據傳輸的效率和安全性。此外,關於打包和發布流程的詳細介紹,對於初次接觸移動應用發布的開發者來說,將是寶貴的財富。我期望這本書能讓我從一個“會用React Native”的開發者,變成一個“能構建穩定、可維護、可部署的React Native應用”的開發者。