摘要:這也就是所謂的單向數據流,在這種開發方式下,會讓你更新視圖的邏輯非常清晰簡單,哪怕你的前端交互很復雜,也不至于讓你的代碼那么容易變成一坨。就是在前端開發過程中,要善于觀察和抽象。
這是《玩轉 React》系列的第二篇。在該篇中,我們來了解下,React 的出現到底給我們的開發方式帶來了什么樣的變化。
我的感觸可以用一個字來形容,爽!主要爽在以下兩個方面。
視圖是數據的映射(單向數據流)React 是一個視圖層的框架,所謂視圖層就是我們在網頁上能看到的部分。在傳統的方式中,我們通過編寫HTML代碼來設計網頁的結構,通過 JavaScript 以及 getElementById 等 api 來獲取某個節點,通過節點的 innerHTML,innerText,appendChild 等屬性或者方法(或者你也可能用JQuery)來更新視圖。
在 React 時代,你除了需要自己考慮網頁的結構和CSS樣式外,視圖的更新 React 統統幫你搞定。
那么,用了 React 我們如何來更新視圖呢,先看下面這個張圖:
在 React 中視圖是數據的映射,你想要視圖發生變化,那你只要改變數據就好了,就是這么簡單。
舉個簡單的例子,你打算在你的頁面上展示用戶的名片,名片上有照片、姓名、年齡、地址等基本信息,如下圖所示:
這個名片,作為視圖的一部分,在 React 中是由某個用戶的數據映射而來的,可能長得像這樣:
{ photo: "my-photo.jpeg", name: "sarike", age: 18, address: "北京" }
如果你希望網頁的瀏覽者,可以切換查看不同用戶的名片,你要做的只是用下一個用戶的數據替換一下當前的數據就可以了。至于新的數據是如何替換掉頁面上的舊數據的,就無需關心了,React 會以最高效的方式幫你完成。
這也就是所謂的單向數據流,在這種開發方式下,會讓你更新視圖的邏輯非常清晰、簡單,哪怕你的前端交互很復雜,也不至于讓你的代碼那么容易變成一坨。
是不是很爽?
面向組件編程上一部分說的 React 中更新視圖只需要更新數據就可以了,如果你覺得也就一般般吧,那下面要說的一定爽到爆。
先說一下什么是組件,顧名思義,組件就是用來組合成更高級東西的物件。打個比方,比如一輛汽車,汽車中的各種螺絲、鐵塊等零件就可以看作是一個個組件,這些小的組件我們還可以繼續組合,比如組合成發動機、輪胎、車架等有特定功能的組件,然后這些組件又可以繼續組合成一輛完整的汽車。
對應到我們的前端開發中,HTML中的各種元素(如:div,table,input,select等)就是一個個最基本的組件,你可以把他們繼續組合,組合成第一部分說的名片,或者一個填寫用戶信息的表單,展示所用用戶的一個列表等有特定業務功能的組件,各種各樣的業務組件最終組合成一個完整的前端頁面。
組件最大的特點就是可以重復利用,比如說用戶名片這個組件,你可以放到個人信息頁面,也可以放到文章詳情頁面來展示作者信息,制作完成,到處利用。
言歸正傳,那在使用 React 是,是如何面向組件編程的呢,現在你可以這樣來理解,React 提供了一種可以創造新的 HTML 標簽的能力。
例如第一部分講的用戶名片的例子,通過 React 你可以制作這樣一個組件:
而且更重要的是,你可以以如此簡單的方式在你應用的任何位置重復利用。
你說,酷不酷,爽不爽?!!
至此以后,你在開發一個前端頁面時,你需要做的就是將頁面拆分成各種組件,然后把它們組合起來就好了。
在此想跟大家分享一點小經驗,這也關系到你最終能不能將 React 用得很溜。就是:在前端開發過程中,要善于觀察和抽象。尤其是在項目前期,不要著急寫代碼,一定觀察項目的原型圖或者設計稿,想想哪些部分是可以拆分成可以復用的公共組件的。這樣做能讓你后面的工作,事半功倍。
在后面的文章中你將更深入地體會到這一點,同時你也會體會到 React 的組件化開發,到底是多么多么的爽!!
寫在最后在閱讀上面內容的時候,你可能會有一些疑惑,比如說你可能會質疑“創建一個新的 HTML 標簽這種說法”,這怎么可能呢?是的,深究原理的話,確實不是這樣,但是從開發者使用框架的角度,React 確實給了我們這樣的體驗。所以,希望大家在閱讀的時候跟著我的節奏來就好,所有的疑惑會隨著文章的推進,漸漸消退。
謝謝大家。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/88668.html
摘要:本人計劃編寫一個針對中初級前端開發者學習的系列教程玩轉。使用的原因是新的語言規范開發效率更高代碼更優雅,尤其是基于開發的項目。其次也是目前特別流行的一個前端框架,截止目前,上有將近萬,國內一二線互聯網公司都有深度依賴開發的項目。 本人計劃編寫一個針對中初級前端開發者學習 React 的系列教程 - 《玩轉 React》。 文章更新頻率:每周 1 ~ 2 篇。 目錄 玩轉 React(...
摘要:屬性是一個組件的外部輸入。只會在開發模式下進行屬性類型檢查,當代碼進行生產發布后,為了減少額外的性能開銷,類型檢查將會被略過。某個類的實例枚舉,屬性值必須為其中的某一個值。屬性為一個數組,且數組中的元素必須符合指定類型。 在第二篇文章 《新型前端開發方式》 中有說到 React 有很爽的一點就是給我們一種創造 HTML 標簽的能力,那么今天這篇文章就詳細講解下 React 是如何提供這...
摘要:屬性是一個組件的外部輸入。只會在開發模式下進行屬性類型檢查,當代碼進行生產發布后,為了減少額外的性能開銷,類型檢查將會被略過。某個類的實例枚舉,屬性值必須為其中的某一個值。屬性為一個數組,且數組中的元素必須符合指定類型。 在第二篇文章 《新型前端開發方式》 中有說到 React 有很爽的一點就是給我們一種創造 HTML 標簽的能力,那么今天這篇文章就詳細講解下 React 是如何提供這...
摘要:綁定事件處理函數指向的四中方式以及他們的優缺點。內部自己實現了一套高效的事件機制,為了提高框架的性能,通過事件冒泡,只在節點上注冊原生的事件,內部自己管理所有組件的事件處理函數,以及事件的冒泡捕獲。 前面的文章介紹了 React 的 JSX 語法、組件的創建方式、組件的屬性、組件的內部狀態以及組件的生命周期。另外,還順帶說了各個知識點要重點注意的事情,以及我在項目實踐中的一些經驗。如果...
閱讀 3296·2023-04-25 18:03
閱讀 1154·2021-11-15 11:38
閱讀 5568·2021-10-25 09:45
閱讀 850·2021-09-24 09:48
閱讀 2307·2021-09-22 15:34
閱讀 1744·2019-08-30 15:44
閱讀 2687·2019-08-30 13:12
閱讀 611·2019-08-29 16:05