內容簡介
React Native是Facebook公司最新推出的,強大的、開源的跨平台移動套用開發框架,它能大幅減少跨平台移動套用開發的工作量,並且代碼結構清晰、簡單易懂。同時React Native框架採用模組化結構,使套用版本的更新疊代非常簡單。隨著它的日趨成熟,React Native必然會成為移動套用開發的主流技術。
《React Native跨平台移動套用開發》由淺入深、系統地介紹了使用React Native框架跨平台開發所需要用到的知識。《React Native跨平台移動套用開發》每一章都專注於闡述某一方面的知識,配合若干個原創的、精小的例程,能讓讀者系統、快速地掌握該方面知識。
《React Native跨平台移動套用開發》是按照有基本的編程基礎知識,剛學習JavaScript基本語法的讀者最佳學習路徑來編寫的。有一定基礎的開發人員也可以將本書作為React Native開發的“字典”來使用,在開發時可以快速查找相關知識點的細節。
希望通過《React Native跨平台移動套用開發》,能將最新的React Native開發技術介紹給國內廣大開發者,讓國內移動套用開發進入一個新的時代,讓開發者用比較少的精力就能高效、美觀地完成移動套用開發。
編輯推薦
迄今為止,真正意義上的React Native跨平台開發原創圖書。
本書架構是作者精心設計的,適合初學者入門。
本書所有例程均是原創的,並且在代碼旁有注釋解說。
本書中的6.5節、第11章、14.5節都是筆者精心整理調研出來的技術,能讓更多的開發者享受到React Native開發的便利性。
目錄
第1章 React Native 1
1.1 React Native開發特點 2
1.1.1 一次學習,隨處編寫 2
1.1.2 混合開發 2
1.1.3 高效的UI開發 3
1.1.4 高效的UI調試 4
1.1.5 學習門檻低、開發難度低 4
1.1.6 開發軟硬體要求低 5
1.1.7 使用React Native開發的代價 5
1.1.8 為什麼React Native尚未流行 7
1.2 React Native開發環境搭建 7
1.2.1 開發環境搭建起點 7
1.2.2 Windows作業系統下React Native開發環境搭建 8
1.2.3 蘋果作業系統下React Native開發環境搭建 9
1.2.4 查看與刪除使用npm命令安裝的軟體 11
1.3 代碼編輯環境搭建 11
1.3.1 Sublime Text 3 11
1.3.2 開發用外掛程式 11
1.3.3 Sublime界面風格選擇 13
1.3.4 鍵盤使用習慣 13
1.4 React Native Dev tool安裝 14
第2章 狀態機思維與狀態機變數 16
2.1 初始化項目 16
2.2 運行項目 17
2.2.1 使用Android手機進行調測 18
2.2.2 使用iPhone手機或模擬器進行調測 21
2.2.3 修改JSX代碼 22
2.2.4 ES 6語法與ES 5語法 24
2.2.5 啟動調試工具 25
2.3 構建註冊頁面 28
2.4 React Native代碼執行邏輯 32
2.5 UI框架工作基本機制 33
2.5.1 狀態機思維 33
2.5.2 “冒充常量”的狀態機變數 35
2.5.3 “無處安放”的狀態機變數 36
2.5.4 “努力瘦身”的狀態機變數 36
2.6 React Native組件間通信 37
2.7 深入理解UI重新渲染的過程 37
2.7.1 合併狀態機變數 37
2.7.2 判斷是否渲染 40
2.7.3 替換狀態機變數 40
2.7.4 強制啟動渲染 41
2.7.5 渲染過程 41
2.7.6 合併狀態機變數的最簡語法 41
2.8 React Native組件的成員變數 42
2.9 React Native組件的靜態變數、靜態函式 43
第3章 頁面導航、彈出框及深入理解屬性 44
3.1 分離註冊組件、組件平台自適配 44
3.1.1 分離註冊組件 44
3.1.2 組件平台自適配 44
3.1.3 平台檢測 45
3.2 導航組件、掛接註冊組件 45
3.3 掛接註冊等待組件 47
3.4 Navigator組件工作機制 49
3.4.1 push與pop 50
3.4.2 replace函式 50
3.5 自定義組件 51
3.5.1 “彈出一切框”的實現 51
3.5.2 React Native中顏色類型的值 53
3.5.3 掛接自定義組件 54
3.6 BackAndroid API的bug與解決辦法 56
3.7 屬性確認 58
3.8 指定屬性默認值 60
3.9 Alert應用程式編程接口 60
3.9.1 彈出確認框 60
3.9.2 彈出選擇框 61
3.10 帶導航欄的頁面導航 62
第4章 混合開發基礎篇 63
4.1 iOS平台混合開發 63
4.1.1 與iOS 側原生代碼訊息互通 64
4.1.2 React Native代碼到iOS原生代碼的訊息 65
4.1.3 iOS 原生代碼到React Native代碼的訊息 68
4.1.4 與iOS OC原生代碼界面的切換 69
4.1.5 套用初始界面設定 69
4.1.6 iOS混合開發中傳遞的參數類型 70
4.1.7 混合開發中的多執行緒使用 70
4.1.8 原生代碼實現Promise機制 71
4.1.9 跨語言常量 72
4.2 Android平台混合開發 73
4.2.1 與Android原生代碼訊息互通 74
4.2.2 React Native代碼到Android原生代碼的訊息 75
4.2.3 與Android原生代碼界面的切換 78
4.2.4 Android原生代碼到React Native代碼的訊息 82
4.2.5 套用初始界面設定 86
4.2.6 傳遞的參數類型 86
4.2.7 回調函式與Promise機制 86
4.2.8 監聽ActivityResult與Android生命周期事件 88
4.2.9 混合開發中的多執行緒機制 89
4.2.10 跨語言常量 89
第5章 flexbox布局、View、Image與可觸摸組件 90
5.1 flexbox布局 90
5.1.1 位置及寬、高相關樣式鍵 91
5.1.2 決定子組件排列規則的鍵 92
5.1.3 決定組件顯示規則的鍵 94
5.1.4 框線、空隙與填充 95
5.1.5 組件多樣式聲明與動態樣式聲明 96
5.2 View組件 97
5.2.1 View組件的顏色與框線 97
5.2.2 View組件的陰影與其他視覺效果 99
5.2.3 View組件的變形 101
5.2.4 View組件的回調函式 104
5.2.5 View組件的其他屬性 106
5.2.6 設備放置狀態、根View與onLayout回調函式 106
5.2.7 pointerEvents屬性 109
5.3 Image組件 111
5.3.1 載入網路圖片 111
5.3.2 載入靜態圖片資源 112
5.3.3 載入資源檔案中的圖片 112
5.3.4 動態載入手機中的圖片資源 112
5.3.5 Image組件的樣式 113
5.3.6 Image組件顯示特性 114
5.3.7 Image組件的其他屬性 117
5.4 可觸摸組件 117
5.4.1 可觸摸組件類型 118
5.4.2 TouchableOpacity組件 118
5.4.3 TouchableHighlight組件 118
5.4.4 其他屬性 120
5.5 加深理解三大組件 120
5.5.1 使用導航欄的導航框架 121
5.5.2 等比放大無丟失顯示圖片 125
5.5.3 寬、高動態變化的組件呈現 128
第6章 Text、TextInput等相關知識 129
6.1 Text組件 129
6.1.1 樣式鍵設定 129
6.1.2 其他屬性 131
6.1.3 Text組件的嵌套 131
6.1.4 文本顯示的陰影效果 132
6.1.5 Text居中顯示 133
6.1.6 在字元串中插入圖像 135
6.2 Text組件在兩個平台上的不同表現 136
6.2.1 只指定fontSize,不指定height 137
6.2.2 只指定height,不指定fontSize 137
6.2.3 fontSize等於height 137
6.2.4 height大於fontSize 138
6.2.5 框線在兩個平台上的不同表現 138
6.3 TextInput組件 140
6.3.1 TextInput組件樣式鍵 140
6.3.2 TextInput組件的屬性 140
6.3.3 TextInput組件iOS平台專有屬性 141
6.3.4 TextInput組件Android平台專有屬性 142
6.3.5 TextInput組件的成員函式 142
6.4 TextInput組件在兩個平台上的不同表現 143
6.4.1 Android平台的輸入下畫線 143
6.4.2 父組件的alignItems鍵失效 144
6.4.3 只指定fontSize、不指定height 145
6.4.4 height等於fontSize 145
6.4.5 height大於fontSize 146
6.4.6 框線在兩個平台上的不同表現 146
6.5 TextInput組件的生命周期 147
6.5.1 獲得焦點 147
6.5.2 用戶輸入 147
6.5.3 用戶按下提交鍵 147
6.5.4 失去焦點 148
6.6 軟鍵盤與鍵盤事件 148
6.7 組件的引用 151
6.7.1 定義組件引用 151
6.7.2 得到系統定義的組件引用 151
6.7.3 調用組件的公開成員函式 152
6.7.4 重新設定組件的屬性 152
6.7.5 獲得組件的位置 154
6.8 跨平台狀態欄組件 155
6.8.1 StatusBar組件屬性 155
6.8.2 StatusBar組件使用示例 156
6.8.3 手機狀態欄在開發中的處理 157
6.8.4 StatusBarIOS API 158
6.9 高度自增長的擴展TextInput組件 159
6.10 訪問作業系統剪貼簿 160
第7章 組件生命周期、數據存儲及React Native套用實現步驟 163
7.1 組件生命周期 163
7.1.1 getInitialState 163
7.1.2 getDefaultProps 163
7.1.3 componentWillMount 164
7.1.4 componentDidMount 164
7.1.5 componentWillReceiveProps 164
7.1.6 shouldComponentUpdate 165
7.1.7 componentWillUpdate 165
7.1.8 componentDidUpdate 165
7.1.9 componentWillUnmount 166
7.2 讀取JSON檔案 166
7.3 數據持久化操作 167
7.3.1 flow語法檢查器 167
7.3.2 寫入數據、錯誤捕捉 168
7.3.3 讀取數據 170
7.3.4 AsyncStorage API存儲數據的無序性 173
7.3.5 刪除數據 173
7.3.6 修改數據 175
7.3.7 JSON對象存儲 175
7.3.8 讀取JSON對象 176
7.4 數據表操作 176
7.5 React Native套用實現步驟、日記例程(上) 176
7.5.1 套用原型 177
7.5.2 基礎組件結構設計 178
7.5.3 使用React Native組件搭建靜態界面 180
7.5.4 React Native組件分層 188
7.5.5 實現各組件業務邏輯 189
7.5.6 日記例程(上)總結 190
第8章 ScrollView和ListView 200
8.1 ScrollView組件 200
8.1.1 ScrollView組件屬性 200
8.1.2 ScrollView組件iOS平台專有屬性 201
8.1.3 ScrollView組件Android平台專有屬性 202
8.1.4 ScrollView組件的公開成員函式 203
8.1.5 RefreshControl組件 203
8.1.6 ScrollView組件基本用法 204
8.2 ListView組件 206
8.2.1 ListView組件的回調函式 207
8.2.2 ListView組件的其他屬性 208
8.2.3 ListView組件的成員函式 208
8.3 簡單的列表 208
8.3.1 準備列表的數據源 209
8.3.2 聲明狀態機變數 209
8.3.3 將數據源中的數據拷貝到DataSource中 210
8.3.4 定義如何渲染列表中的每一行 210
8.3.5 實現簡單的列表 211
8.3.6 列表欄的高級處理 217
8.4 帶分段標誌的列表 217
8.4.1 準備數據源 218
8.4.2 聲明狀態機變數 218
8.4.3 將數據源中的數據拷貝到DataSource中 219
8.4.4 定義如何渲染每個分欄 219
8.4.5 定義如何渲染首、尾欄 220
8.4.6 列表間隔渲染 220
8.4.7 實現帶分段標誌的列表 220
8.4.8 總結 221
8.5 日記例程(下)總結 221
第9章 等待提示條、進度條和Switch 222
9.1 ProgressBarAndroid組件 222
9.1.1 ProgressBarAndroid組件樣式設定 222
9.1.2 ProgressBarAndroid其他屬性 222
9.1.3 Android平台等待提示條 222
9.1.4 React Native框架中定時器的使用 224
9.1.5 Android平台進度條 225
9.2 iOS進度條組件 226
9.2.1 ProgressViewIOS組件樣式設定 226
9.2.2 ProgressViewIOS其他屬性 226
9.2.3 iOS平台進度條 226
9.3 iOS平台等待提示條 227
9.3.1 ActivityIndicatorIOS組件樣式設定 227
9.3.2 ActivityIndicatorIOS其他屬性 227
9.3.3 iOS平台等待提示條例程 227
9.4 Switch組件 229
9.4.1 Switch組件樣式設定 229
9.4.2 Switch其他屬性 229
9.4.3 Switch組件的使用 229
第10章 導航組件 231
10.1 導航組件的屬性 231
10.1.1 回調函式 231
10.1.2 其他屬性 232
10.2 導航器 232
10.3 NavigationBar 233
第11章 手勢識別 240
11.1 PanResponder API 240
11.2 監視器 240
11.2.1 指定監視區域 241
11.2.2 定義監視器相關變數 241
11.2.3 準備監視器的事件處理函式 241
11.2.4 建立監視器 242
11.2.5 將監視器與監視區域掛接 242
11.3 監視事件的生命周期 242
11.3.1 單次點擊事件的生命周期 243
11.3.2 單次點擊事件處理 245
11.3.3 移動手勢事件的生命周期 245
11.3.4 監視器異常事件 247
11.4 手勢識別處理例程 247
11.4.1 單點手勢——點擊、拖動選擇百分比參數 247
11.4.2 單點手勢——帶導槽的滑動來電接聽或拒接界面 249
11.4.3 單點手勢——滑動解鎖螢幕界面 252
11.4.4 單點手勢——單點任意方向拉動選擇界面 254
11.4.5 兩點手勢 257
第12章 網路 258
12.1 獲取網路狀態 258
12.1.1 得到當前網路狀態 258
12.1.2 監聽網路狀態改變事件 259
12.1.3 簡單判斷是否有網路連線 260
12.1.4 判斷當前連線是否收費 260
12.2 通過HTTP、HTTPS與網路側交換數據 260
12.2.1 傳送請求 260
12.2.2 接收回響 263
12.3 在React Native開發中使用AJAX技術 264
第13章 網頁瀏覽器、音視頻媒體播放 266
13.1 WebView組件樣式設定 266
13.2 WebView組件其他屬性 266
13.2.1 非回調函式屬性 266
13.2.2 回調函式屬性 267
13.2.3 平台獨有屬性 267
13.2.4 WebView組件成員函式 268
13.3 網頁瀏覽器使用例程 268
13.3.1 瀏覽網頁例程 268
13.3.2 載入本地網頁例程 271
13.4 音視頻媒體播放 273
第14章 圖片的遍歷、存取與顯示 274
14.1 React Native開發中iOS平台程式庫的使用 274
14.2 獲取手機中所有的圖片信息 276
14.3 圖片信息詳解 278
14.3.1 Android平台圖片信息 278
14.3.2 iOS平台圖片信息 278
14.4 顯示從CameraRoll API得到的圖片 279
14.5 為用戶提供圖片選擇界面 280
14.6 圖片的保存與讀取顯示 282
14.6.1 保存圖片數據 282
14.6.2 讀取並顯示圖片 283
第15章 選擇器、位置相關和套用狀態 284
15.1 日期、時間選擇器 284
15.1.1 DatePickerAndroid API 284
15.1.2 TimePickerAndroid API 286
15.1.3 DatePickerIOS組件 287
15.2 Picker組件 289
15.2.1 Picker組件的樣式設定 289
15.2.2 Picker組件的屬性 289
15.2.3 Picker.Item組件屬性 290
15.2.4 Picker組件例程 290
15.3 PickerIOS 294
15.4 MapView組件 295
15.4.1 MapView組件樣式設定 296
15.4.2 MapView組件特有的跨平台屬性 296
15.4.3 MapView組件例程 297
15.5 AppState API 299
15.5.1 AppState API用途與用法 299
15.5.2 AppState API例程 299
15.6 獲取地理位置 300
15.7 VibrationIOS API 302
第16章 使用ES 6語法開發 303
16.1 React Native組件導入 303
16.2 屬性聲明 304
16.3 成員變數聲明 304
16.4 狀態機變數聲明 305
16.5 回調函式綁定 306
16.6 類的靜態成員變數與靜態成員函式 307
第17章 混合開發高級篇 309
17.1 使用Objective-C語言創建私有的React Native組件 309
17.1.1 增加FLAnimatedImage程式庫 309
17.1.2 創建視圖管理類 311
17.1.3 封裝開原始碼中的視圖類 312
17.1.4 在React Native側調用私有組件 314
17.1.5 例程運行效果 315
17.2 使用Swift語言創建私有的React Native組件 316
17.2.1 整合開源項目 316
17.2.2 建立組件管理者和橋接頭檔案 319
17.2.3 Objective-C與React Native接口部分 321
17.2.4 使用Swift語言實現組件控制 322
17.2.5 在React Native側調用私有組件 324
17.2.6 例程運行效果 325
17.3 使用Android SDK創建私有的React Native組件 325
17.3.1 準備原生代碼UI組件 326
17.3.2 實現原生UI管理類 327
17.3.3 創建原生UI實例 328
17.3.4 實現對屬性的支持 328
17.3.5 建立原生UI包 328
17.3.6 註冊原生UI管理類 329
17.3.7 對應的React Native側實現 329
17.3.8 運行俯視視圖例程 331
第18章 項目配置、生成發布版本安裝包及其他 332
18.1 iOS平台項目配置 332
18.2 iOS平台套用發布 336
18.3 Android平台項目配置 336
18.4 Android平台套用生成發布版本安裝包 338
18.4.1 生成發布密鑰 338
18.4.2 修改gradle配置檔案 338
18.4.3 生成發布版本安裝包 339
18.5 其他組件與API 339
18.5.1 動畫相關 339
18.5.2 其他未討論的組件與API 340
附錄A ECMAScript 2015語法參考 341
作者簡介
闕喜濤,湖南省吉首市人,北京郵電大學研究生,專注智慧型手機套用開發十一年,任職於東信北郵信息技術有限公司,先後參與開發過中國移動POC系統、貴州移動一卡多號系統、浙江移動套用商店系統開發等等。開發移動套用下載量超過25萬。
前言
我對移動套用開發大勢的粗淺理解
我必須向大家坦白:我現在是個沒有良心的人。因為寫這本書不僅把我的良心用完了,還透支了很多。本書所有的示例代碼都是原創,並且在代碼旁有注釋解說,絕沒有扔一大段代碼給讀者自己慢慢看的情況。
仔細想來,所有主流手機平台套用開發我都涉足過,它們是J2ME、Symbian、Series 60開發平台、Windows Mobile、Android、iOS、Windows Phone。許多年前我寫過一本Series 60平台移動套用開發的書。當我寫到一大半時,Symbian手機作業系統、Nokia手機、Series 60開發平台這片森林從地球表面消失了……
如果問這么多年我對移動套用開發最深的感觸是什麼,那就是移動套用開發太特么的難了!難就難在套用需要能運行在不同的手機上。開發者的代碼要適配不同的手機作業系統(這意味著要使用不同的程式語言編寫)、不同的手機硬體能力(比如開發者的套用需要使用GPS定位,然後發現某型號手機沒有GPS定位功能)、不同的手機螢幕解析度(想像一下當開發者發現應用程式在另一種螢幕解析度下顯示得亂七八糟時的驚喜)。
隨著科技的發展,手機開發也在向好的方向不停地轉變。Android與iOS兩大手機作業系統稱霸江湖(這種穩定對開發者是一件好事兒,相互競爭也讓兩大作業系統都在不斷地提升完善)。手機硬體配置越來越強大,能力越來越強大,價格越來越平易近人。手機現在已經成為了普通老百姓無時無刻不隨身攜帶的電腦。伴隨著這種趨勢,市場對移動套用開發的需求也越來越多,並且要求越來越高。
這么多年來,移動套用開發者做夢都希望有一個能跨平台的開發工具,讓他們不要把同一個移動套用使用不同的開發語言寫兩遍(或者三四遍)。但跨平台開發工具的實現很難,很多先驅者倒在了這條路上。直到Facebook給大家帶來了React Native。
讓我以一個預言結束我的嘮叨吧。在西方傳說故事裡那些沒良心的巫師的預言忒準了,所以請讀者對我的預言稍微有些信心。嗯,我的水晶球呢?啊,在這裡。(裝模作樣好長一段時間)預言:我看到了一個新的伏地魔正在崛起,他會統治這個世界,他那高高的巫師帽上React Native這個名字不時地散發著邪惡的光芒!
寫作本書的目的
React Native項目代碼是開源的,項目代碼中的例程也是開源的,項目文檔也是在網上公開的,所有人都可以非常方便地獲取瀏覽。但目前React Native的文檔假設它的讀者有相當深厚的開發方面的知識與經驗,並且有React.js開發基礎。也就是說,React Native的公開文檔對初學者並不是非常友好的。React Native項目中的例程代碼對初學者而言同樣有些高深。在各個React Native論壇上,React Native的文檔不夠好是大家的共識。
筆者非常努力地把這本書寫好,讓它從簡入深,通俗易懂。本書絕對不是粗製濫造、簡單翻譯的書籍。書中講述的知識點結構、例程設計都傾注了筆者大量的心血,與網上公開文檔的差別非常大。本書對讀者最大的價值是:把讀者通過閱讀網上公開文檔、項目例程學習RN開發技術所需要的800小時左右的時間(視個人基礎有所不同)縮短為300小時左右。
本書中的6.5節、第11章、14.5節都是筆者精心整理調研出來的技術,在官方文檔中沒有提及,希望能讓更多的開發者享受到React Native開發的便利性。
希望通過本書,能將React Native開發技術介紹給國內廣大開發者,讓國內移動套用開發進入一個新的時代,讓開發者用比較少的精力就能高效、美觀地完成移動套用開發。
讀者對象
本書的讀者對象如下:
Android平台移動套用研發工程師
iOS平台移動套用研發工程師
JavaScript軟體研發工程師
計算機相關專業的學生
如何閱讀本書
React、React.js、React Native
對於初學者常見的困惑是弄不清React、React.js、React Native三者之間的關係。這是情有可原的。初學者經常發現在很多討論React Native技術的資料中,怎么突然說到React.js上去了?過一會兒怎么又好像說到React基礎框架上去了?因此在討論如何閱讀本書之前,有必要先說明一下這三者的關係。React是基礎框架,是一套基礎設計實現理念,開發者不能直接使用它來開發移動套用或者網頁。在它之上發展出了React.js框架用來開發網頁,發展出來React Native用來開發移動套用。因為React基礎框架與React.js框架是同時出現、同時進化發展的,這就造成了React基礎框架的基本概念、設計思想都是在React.js的相關文檔中描述的。後來,Facebook推出React Native後,也沒有把React的相關概念文檔從React.js文檔中分離出來。這就導致出現了學React Native要去看React.js文檔,說React Native不時會說到React.js的情況。如果開發者只想關注移動套用開發,那么在React.js的如何開發網頁的文檔中整理出來React基礎框架知識是個不輕鬆的活兒。現在,本書推出了,有了這本書,讀者可以不用再去看React.js文檔了。
預備知識
學習React Native開發需要基礎的JavaScript編程知識。我估計有一部分讀者可以在某個手機平台使用該平台原生語言進行移動套用開發,但對JavaScript只是有所耳聞。如果是這種情況,不用擔心。讀者只需要隨便找一本JavaScript入門級的書籍(甚至是網上的教學性網頁),閱讀關於基礎語法的章節,花上一天時間(包括找資料的時間)學習相關知識點,接下來就可以通過本書學習React Native開發了。所需要的知識點有:
(1)JavaScript語法。包括語句、注釋、變數、數據類型、數組(注意關聯數組,Java、C++的數組中沒有這個概念)、對象的基本知識。
(2)操作運算符。這個與Java、C++基本上是一樣的,讀者快速過一下就行了。
(3)條件語句、循環語句、switch語句。這個與Java、C++基本上是一樣的,讀者快速過一下就行了。
(4)函式。JavaScript中函式也是一種變數,知道了這一點,其他與Java、C++基本上是一樣的,讀者快速過一下就行了。
(5)對象。JavaScript的對象定義、實現比Java、C++寬鬆很多,讀者得稍微適應一下。
這些基本的知識點,大多與Java或者Objective-C的相關知識點很類似。如果讀者有基礎,閱讀這些知識點最多只需要一天的時間(半天看完也不是難事兒)。讀者不需要搭建JavaScript的開發環境來練習、鞏固這些知識點。因為在React Native的開發環境中編寫代碼就可以練習這些基本的JavaScript知識點,在React Native學習中就會鞏固這些JavaScript基本知識。
React Native在開發中用到了其他JavaScript的高級知識點與ES 6的一些新特性。但讀者不需要馬上去學習這些內容。在通過本書學習React Native開發過程中需要使用到的JavaScript高級知識點時,會指出在附錄A的什麼位置講解了這些高級知識點,便於讀者快速查看。附錄A不是JavaScript知識點的全面講解,只是讓讀者對React Native開發中需要使用到的JavaScript知識點的理解足夠進行React Native開發。
本書結構
本書討論的React Native開發特性覆蓋了2016年3月2日發布的React Native 0.21.0版本的絕大部分特性。沒有討論的部分在書末有提及。
首先需要說明的是,本書討論的知識以跨平台(Android平台與iOS平台)開發為主,書中各章節的絕大部分知識點都是跨平台實現的。只有極小部分是分平台實現的,這一小部分在討論前都會說明該部分知識適用於哪個平台。
本書的結構是按一個有基本的編程基礎知識,剛學習JavaScript基本語法的讀者最佳學習路徑來編寫的。通過一個個精簡的例程,闡述清楚一個個基本思想。例程儘可能地精簡,並且所有例程都是筆者花了大量時間為初學者構思而成的。
本書體例說明
代碼與代碼說明
本書例程中有大量的代碼說明,通過注釋的方式與代碼同時展示出來。例如:
varIncomingCall = React.createClass({
watcher: null, //用來記錄監視器
startFromLeft:true, //用來判斷用戶最先按下的是最左側還是最右側
moveNeedhandle:false, //用來判斷監測到的移動事件是否需要處理
注釋以黑體字顯示以提醒讀者注意。讀者在自己的開發環境中輸入例程時不需要輸入注釋。
React Native代碼中的JSX部分代碼不能使用這種注釋方式,本書為了統一注釋風格還是使用了這種注釋方式。讀者明白了這一點後,在自己輸入代碼實踐時,將代碼中的注釋自行去掉。
注意和提示
注意和提示,是需要提醒讀者特別注意的內容,在本書中使用帶背景色的字型顯示。
感謝我的父親闕光金老師與我的母親袁雪英老師從小到大給我的無私的愛。很抱歉無論我如何努力,也無法回報二老深恩的萬分之一。
感謝我的姐姐闕喜戎與姐夫王純,沒有你們的鼎力支持,就沒有今天的我。
感謝王汝馨伯父與曾鈺伯母,謝謝你們對我的關懷與照顧。
感謝廖建新教授、饒牧老師在我學習工作期間對我的關懷與指導。感謝在我七年北京郵電大學學習期間為我授業解惑的所有老師,謝謝你們!
感謝React Native開發團隊,感謝所有參與React Native開發的貢獻者。無數移動開發者因為你們無私的奉獻而受益。
感謝電子工業出版社郭立總經理、孫學瑛編輯等審校此書的辛勤工作,以及為此書能快速出版而付出的巨大努力。你們辛苦了!
感謝在工作和生活中幫助過我的所有人,感謝你們,正是因為有了你們,才有了本書的面世。
關於勘誤
雖然花了很多時間和精力去核對書中的文字、代碼和圖片,但因為時間倉促和水平有限,書中仍難免會有一些錯誤和紕漏,如果大家發現什麼問題,請反饋給我,相關信息可在下載本書代碼的GitHub頁面反饋。