玩转 React(二)- 新型前端开发方式
這是《玩轉 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 你可以制作這樣一個組件:
<Card name="sarike" age="18" address="北京" />而且更重要的是,你可以以如此簡單的方式在你應用的任何位置重復利用。
你說,酷不酷,爽不爽?!!
至此以后,你在開發一個前端頁面時,你需要做的就是將頁面拆分成各種組件,然后把它們組合起來就好了。
在此想跟大家分享一點小經驗,這也關系到你最終能不能將 React 用得很溜。就是:在前端開發過程中,要善于觀察和抽象。尤其是在項目前期,不要著急寫代碼,一定觀察項目的原型圖或者設計稿,想想哪些部分是可以拆分成可以復用的公共組件的。這樣做能讓你后面的工作,事半功倍。
在后面的文章中你將更深入地體會到這一點,同時你也會體會到 React 的組件化開發,到底是多么多么的爽!!
寫在最后
在閱讀上面內容的時候,你可能會有一些疑惑,比如說你可能會質疑“創建一個新的 HTML 標簽這種說法”,這怎么可能呢?是的,深究原理的話,確實不是這樣,但是從開發者使用框架的角度,React 確實給了我們這樣的體驗。所以,希望大家在閱讀的時候跟著我的節奏來就好,所有的疑惑會隨著文章的推進,漸漸消退。
謝謝大家。
總結
以上是生活随笔為你收集整理的玩转 React(二)- 新型前端开发方式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【NetApp】NetBoot的使用方法
- 下一篇: go interface 的坑