快速上手React編程( 簡體 字) | |
作者:[美] Azat Mardan 著 郭美青、郭松、唐金州 譯 | 類別:1. -> 程式設計 -> 網路編程 -> React |
出版社:清華大學出版社 | 3dWoo書號: 49318 詢問書籍請說出此書號! 有庫存 NT售價: 440 元 |
出版日:6/1/2018 | |
頁數:420 | |
光碟數:0 | |
站長推薦: | |
印刷:黑白印刷 | 語系: ( 簡體 字 ) |
ISBN:9787302502470 | 加入購物車 │加到我的最愛 (請先登入會員) |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證, 繁體書的下載亦請直接連絡出版社) | |
第Ⅰ部分 React基礎
第1章初積React3 1.1什么是React4 1.2React解決的問題5 1.3使用React的好處6 1.3.1簡單性6 1.3.2速度和可測試性11 1.3.3生態和社區12 1.4React的缺點13 1.5React如何與Web應用集成13 1.5.1React類庫和渲染目標14 1.5.2單頁面應用和React15 1.5.3React技術棧17 1.6第一個React項目:HelloWorld18 1.7測驗21 1.8小結21 1.9測驗答案22 第2章 React起步23 2.1內嵌元素23 2.2創建組件類26 2.3屬性29 2.4測驗34 2.5小結34 2.6測驗答案34 第3章 JSX35 3.1JSX是什么?它有什么優點36 3.2理解JSX38 3.2.1使用JSX創建元素39 3.2.2在組件中使用JSX40 3.2.3在JSX中輸出變量41 3.2.4在JSX中使用屬性42 3.2.5創建React組件的方法46 3.2.6JSX中的if/else47 3.2.7JSX中的注釋51 3.3使用Babel設置JSX轉譯器51 3.4React和JSX陷阱55 3.4.1特殊字符56 3.4.2data-屬性56 3.4.3style屬性57 3.4.4class和for58 3.4.5布爾類型的屬性值58 3.5測驗59 3.6小結59 3.7測驗答案59 第4章 與狀態交互61 4.1什么是React組件的狀態62 4.2使用狀態63 4.2.1訪問狀態63 4.2.2設置初始狀態65 4.2.3更新狀態67 4.3狀態和屬性70 4.4無狀態組件71 4.5有狀態組件和無狀態組件73 4.6測驗77 4.7小結77 4.8測驗答案78 第5章 React組件生命周期79 5.1React組件生命周期事件的全景視圖80 5.2事件的分類80 5.3實現生命周期事件82 5.4執行所有事件84 5.5掛載事件86 5.5.1componentWillMount()87 5.5.2componentDidMount()87 5.6更新事件90 5.6.1componentWillReceiveProps(newProps)90 5.6.2shouldComponentUpdate()91 5.6.3componentWillUpdate()91 5.6.4componentDidUpdate()92 5.7卸載事件92 5.8一個簡單示例92 5.9測驗95 5.10小結95 5.11測驗答案96 第6章 React事件處理97 6.1在React中處理DOM事件97 6.1.1捕獲和冒泡階段100 6.1.2React事件的內幕102 6.1.3使用ReactSyntheticEvent事件對象105 6.1.4使用事件和狀態108 6.1.5傳遞事件處理程序和屬性109 6.1.6組件通信112 6.2響應React不支持的DOM事件113 6.3React和其他庫的集成:jQueryUI事件116 6.3.1集成按鈕116 6.3.2集成標簽118 6.4測驗119 6.5小結119 6.6測驗答案120 第7章 在React中使用表單121 7.1在React中使用表單的最佳實踐121 7.1.1在React中定義表單及響應事件123 7.1.2定義表單元素125 7.1.3捕獲表單變更130 7.1.4賬戶字段示例132 7.2使用表單的其他方式134 7.2.1可捕獲變更的非受控元素135 7.2.2不捕獲變更的非受控元素136 7.2.3使用引用獲取值137 7.2.4默認值139 7.3測驗140 7.4小結141 7.5測驗答案141 第8章 擴展React組件143 8.1組件中的默認屬性144 8.2React屬性類型和驗證145 8.3渲染子組件152 8.4創建React高階組件以實現代碼復用154 8.4.1使用displayName:用以區分父組件與子組件156 8.4.2使用擴展運算符:傳遞所有屬性157 8.4.3使用高階組件158 8.5最佳實踐:展示組件與容器組件160 8.6測驗161 8.7小結161 8.8測驗答案162 第9章 項目:菜單組件163 9.1項目結構和腳手架164 9.2 不使用JSX構建菜單165 9.2.1Menu組件165 9.2.2Link組件168 9.2.3運行菜單組件170 9.3在JSX中構建菜單171 9.3.1重構Menu組件172 9.3.2重構Link組件174 9.3.3運行JSX項目175 9.4測驗175 9.5小結176 第10章 項目:Tooltip組件177 10.1項目結構和腳手架178 10.2Tooltip組件179 10.2.1toggle()函數180 10.2.2render()函數181 10.3運行Tooltip組件183 10.4測驗184 10.5小結184 第11章 項目:Timer組件185 11.1項目結構和腳手架186 11.2應用架構187 11.3TimerWrapper組件189 11.4Timer組件193 11.5Button組件194 11.6運行Timer組件196 11.7測驗196 11.8小結197 第Ⅱ部分 React架構 第12章 Webpack構建工具201 12.1Webpack的作用201 12.2添加Webpack到項目中203 12.2.1安裝Webpack及其依賴204 12.2.2配置Webpack205 12.3模塊化代碼207 12.4運行Webpack并測試構建208 12.5熱模塊替換210 12.5.1配置HMR211 12.5.2熱模塊替換實踐214 12.6測驗216 12.7小結216 12.8測驗答案216 第13章 React路由217 13.1從零開始實現路由218 13.1.1建立項目219 13.1.2在app.jsx中創建路由映射220 13.1.3在router.jsx中創建Router組件221 13.2ReactRouter222 13.2.1ReactRouter的JSX樣式225 13.2.2哈希記錄227 13.2.3瀏覽器記錄227 13.2.4使用Webpack安裝ReactRouter開發環境228 13.2.5創建布局組件230 13.3ReactRouter特性233 13.3.1使用withRouter高階組件訪問路由器234 13.3.2以編程方式導航235 13.3.3URL參數和其他路由數據235 13.3.4在ReactRouter中傳遞屬性236 13.4使用Backbone路由237 13.5測驗240 13.6小結241 13.7測驗答案241 第14章 使用Redux處理數據243 14.1React支持單向數據流244 14.2了解Flux數據體系結構246 14.3使用Redux數據類庫247 14.3.1用Redux創建依照Netflix的應用249 14.3.2依賴和配置250 14.3.3啟用Redux253 14.3.4路由253 14.3.5合并reducer254 14.3.6電影的reducer255 14.3.7操作258 14.3.8操作創建器259 14.3.9將組件連接到數據存儲260 14.3.10分發操作262 14.3.11將操作創建器傳遞到組件屬性中263 14.3.12運行Netflix的克隆版267 14.3.13Redux總結268 14.4測驗268 14.5小結269 14.6測驗答案269 第15章 使用GraphQL處理數據271 15.1GraphQL272 15.2給Netflix克隆版應用添加服務器273 15.2.1在服務器端安裝GraphQL275 15.2.2數據結構278 15.2.3GraphQL模式279 15.2.4查詢API并將響應保存到數據存儲281 15.2.5顯示電影列表285 15.2.6GraphQL總結287 15.3測驗287 15.4小結288 15.5測驗答案288 第16章 使用Jest進行單元測試289 16.1測試的類型290 16.2為什么使用Jest(對比Mocha)290 16.3使用Jest進行單元測試291 16.3.1在Jest中編寫單元測試293 16.3.2Jest斷言294 16.4使用Jest和TestUtils進行ReactUI測試296 16.4.1使用TestUtils查找元素298 16.4.2UI測試密碼部件299 16.4.3淺渲染303 16.5TestUtils總結305 16.6測驗305 16.7小結305 16.8測驗答案306 第17章 在Node中使用React和同構JavaScript307 17.1為什么在服務器端使用React? 什么是同構JavaScript?308 17.1.1正確的頁面索引308 17.1.2更快的加載速度、更好的性能309 17.1.3更好的代碼可維護性310 17.1.4在React和Node中使用同構JavaScript310 17.2在Node上使用React312 17.3React和Express:在服務器端渲染組件314 17.3.1在服務器端渲染簡單的文本315 17.3.2渲染HTML頁面316 17.4使用Express和React的同構JavaScript322 17.4.1項目目錄結構和配置324 17.4.2啟動服務器325 17.4.3使用Handlebars的服務器端布局模板329 17.4.4在服務器上編寫React組件332 17.4.5客戶端React代碼333 17.4.6配置Webpack334 17.4.7運行應用336 17.5測驗340 17.6小結340 17.7測驗答案340 第18章 使用ReactRouter創建一個網上書店341 18.1項目結構和Webpack配置343 18.2HTML主頁346 18.3創建組件347 18.3.1主文件:app.jsx347 18.3.2Cart組件353 18.3.3Checkout組件355 18.3.4Modal組件356 18.3.5Product組件357 18.4啟動項目359 18.5測驗359 18.6小結359 第19章 使用Jest測試密碼361 19.1項目結構和Webpack配置362 19.2HTML主頁365 19.3實現強密碼模塊366 19.3.1測試366 19.3.2代碼367 19.4實現Password組件369 19.4.1測試369 19.4.2代碼370 19.5實踐375 19.6測驗376 19.7小結377 第20章 使用Jest、Express和MongoDB實現自動完成379 20.1項目結構和Webpack配置381 20.2實現Web服務器385 20.2.1定義RESTfulAPI386 20.2.2在服務器端渲染React387 20.3添加瀏覽器腳本387 20.4創建服務器端模板388 20.5實現Autocomplete組件389 20.5.1Autocomplete組件的測試389 20.5.2Autocomplete組件的代碼390 20.6整合393 20.7測驗395 20.8小結396 附錄A 安裝本書相關應用397 附錄B React速查表405 附錄C Express速查表413 附錄D MongoDB和Mongoose 速查表419 附錄E ES6簡介423 《快速上手React編程》面向希望快速上手React.js進行Web開發的讀者,借助精心挑選和詳細解釋的實例,幫助讀者使用現有的JavaScript和Web開發技能學習React開發。在學習Web組件、表單和數據的過程中,還將探索許多不同的項目。
主要特點: 掌握React基礎 使用數據和路由構建完整的Web應用 測試組件 優化React應用 前 言
那是2008年,銀行紛紛倒閉。我在聯邦存款保險公司(Federal Deposit Insurance Corporation,FDIC)工作,主要任務是償還倒閉、失敗和破產的銀行儲戶。我承認,就職業安全感而言,我的工作等同于在雷曼兄弟上班或在泰坦尼克號上賣票。但是,當我所在的部門還沒有開始最終的預算削減時,我還有機會開發一款名為EDIE的應用。這款應用由于一個簡單的原因而變得非常流行:人們急于想知道他們的存款中有多少由美國聯邦政府提供保險,而EDIE能夠估算這一數額。 但是存在一個問題:人們不喜歡把他們的私人賬戶告訴政府。為了保護他們的隱私,這款應用完全在前端完成:JavaScript、HTML和CSS,沒有任何后端技術。如此,FDIC就不會收集任何個人財產信息。 這款應用經歷了數十次迭代,留下了一團混亂的意大利面條式代碼。開發人員來去匆匆,沒有留下任何文檔,也沒有任何符合邏輯的簡單算法。這就像沒有地圖就要去乘坐紐約市地鐵一樣。有很多函數可以調用其他函數、奇怪的數據結構以及更多的函數。在現代術語中,這款應用采用純用戶界面(User Interface,UI),因為沒有后端。 我多么希望那時能有React。React帶來了愉悅。它是一種全新的思考方式,也是一種全新的開發方式。將核心功能放在一處,而不是將其分解為HTML和JS,這種簡單是一種解放。它重新點燃了我對前端開發的熱情。 React是開發UI組件的一種新方法。它是新一代的表現層庫。與模型和路由庫一起配合,React可以在Web和移動技術棧中取代Angular、Backbone或Ember。這就是我寫這《快速上手React編程》的原因。我從來不喜歡Angular:它太復雜和大一統了。模板引擎是特定領域的,甚至不再是JavaScript;它是另一種語言。我使用過Backbone,喜歡它的簡單和DIY方式。Backbone是成熟的,它更像是你自己框架的基石,而不是一個全面的、大一統的框架。Backbone的問題是模型與視圖之間不斷增加的交互復雜性:多個視圖更新多種模型,有的會更新其他視圖,有的會觸發模型上的事件。 舉辦React在線課程(http://mng.bz/XgkO),以及參加各種會議和活動的個人經驗已經顯示,開發者渴望一種更好的開發UI的方法。大多數商業價值存在于UI,而后端負責提供商品。在海灣地區,也是我居住和工作的地方,大多數軟件工程師的職位空缺是前端或(一個時髦的頭銜)通才/全棧開發者。只有少數像谷歌、亞馬遜和Capital One這樣的大公司,對數據科學家和后端工程師的需求依然強勁。 想要確保職業安全感,或找到一份好工作,最好的方法就是成為一名多面手。要做到這一點,最快的方法是使用同構的、可擴展的、對開發者友好的庫,就像前端的React搭配后端的Node.js,以防止需要處理服務器端代碼。 對于移動開發者來說,HTML5是兩三年以前的一個骯臟詞匯。Facebook放棄了HTML5應用,轉而支持更高效的原生(native)實現。但是這種不利觀點正在迅速改變。通過React Native,可以渲染移動應用:可以保留UI組件,但在不同的環境下調整它們,這是另一種支持學習React的觀點。 編程可以是創造性的。不要陷入乏味的任務、復雜的事情以及偽關注點分離。砍掉所有不必要的垃圾,通過React提供的簡化的模塊之美、基于組件的UI釋放你的創造力。為同構的JavaScript引入一些Node,你將達到禪定的境界。 祝你閱讀愉快,并讓我知道你對這《快速上手React編程》的評價,請在Amazon.com(http://amzn.to/2gPxv9Q)上留言。 |