參考:
摘要:
1.JavaScript 代碼里面出現(xiàn)了 HTML 的語(yǔ)法,React 這種語(yǔ)法被稱為 JSX,它是一種 JavaScript 語(yǔ)法拓展。JSX 允許我們寫 HTML 標(biāo)簽或 React 標(biāo)簽,它們終將被轉(zhuǎn)換成原生的 JavaScript 并創(chuàng)建 DOM。
2.在 React 框架中,除了可以用 JavaScript 寫 HTML 以外,我們甚至可以寫 CSS
(也就是說,三件套要統(tǒng)一了?)
3.前端界總是喜歡創(chuàng)造新的概念,仿佛誰(shuí)說的名詞更晦澀,誰(shuí)的水平就越高。如果你和當(dāng)時(shí)的我一樣,聽到 React 這個(gè)概念一臉懵逼的話,只要記住以下定義即可:
React 是一套可以用簡(jiǎn)潔的語(yǔ)法高效繪制 DOM 的框架
4.React 用 JavaScript 構(gòu)造頁(yè)面
- React 獨(dú)創(chuàng)了 Virtual DOM 機(jī)制。Virtual DOM 是一個(gè)存在于內(nèi)存中的 JavaScript 對(duì)象,它與 DOM 是一一對(duì)應(yīng)的關(guān)系,也就是說只要有 Virtual DOM,我們就能高效渲染出 DOM。當(dāng)界面發(fā)生變化時(shí),得益于高效的 DOM Diff 算法,我們能夠知道 Virtual DOM 的變化,從而高效的改動(dòng) DOM,避免了重新繪制 DOM。
6.當(dāng)然,React 并不是前端開發(fā)的全部。從之前的描述也能看出,它專注于 UI 部分,對(duì)應(yīng)到 MVC 結(jié)構(gòu)中就是 View 層。要想實(shí)現(xiàn)完整的 MVC 架構(gòu),還需要 Model 和 Controller 的結(jié)構(gòu)。在前端開發(fā)時(shí),我們可以采用 Flux 和 Redux 架構(gòu),它們并非框架(Library),而是和 MVC 一樣都是一種架構(gòu)設(shè)計(jì)(Architecture)。
(也就是說React也不是很強(qiáng)大,只是Html的強(qiáng)化版?)
- JSON 文件傳遞信息的不足之處:只能傳遞配置信息,無法表達(dá)邏輯。從本質(zhì)上講,這是因?yàn)?JSON 畢竟只是純文本,它缺乏像編程語(yǔ)言那樣的運(yùn)行能力。
(類似后臺(tái)通過接口,控制iOS前端的顯示和某些執(zhí)行)
8.React Native才是試圖統(tǒng)一三件套,React不是。不過也是React 在前端取得突破性成功以后,促使其統(tǒng)一,這么說來,其功勞還是挺大的
9.React Native一個(gè)基于 JavaScript,具備動(dòng)態(tài)配置能力,面向前端開發(fā)者的移動(dòng)端開發(fā)框架。
10.React Native 希望前端開發(fā)者學(xué)習(xí)完 React 后,能夠用同樣的語(yǔ)法、工具等,分別開發(fā)安卓和 iOS 平臺(tái)的應(yīng)用并且不用一行原生代碼。
(Native code? 也就是說,React Native不僅要一統(tǒng)三件套,還要一統(tǒng)江湖?)
宏偉的目標(biāo)什么的說完,還是看看現(xiàn)實(shí)吧
摘要二
1.首先要明白的一點(diǎn)是,即使使用了 React Native,我們依然需要 UIKit 等框架,調(diào)用的是 Objective-C 代碼??傊琂avaScript 只是輔助,它只是提供了配置信息和邏輯的處理結(jié)果。React Native 與 Hybrid 完全沒有關(guān)系,它只不過是以 JavaScript 的形式告訴 Objective-C 該執(zhí)行什么代碼。
其次,React Native 能夠運(yùn)行起來,全靠 Objective-C 和 JavaScript 的交互。
(有點(diǎn)像oc與c的關(guān)系)
2.JavaScript 是一種單線程的語(yǔ)言,它不具備自運(yùn)行的能力,因此總是被動(dòng)調(diào)用。很多介紹 React Native 的文章都會(huì)提到 “JavaScript 線程” 的概念,實(shí)際上,它表示的是 Objective-C 創(chuàng)建了一個(gè)單獨(dú)的線程,這個(gè)線程只用于執(zhí)行 JavaScript 代碼,而且 JavaScript 代碼只會(huì)在這個(gè)線程中執(zhí)行。