React學習(一)三大突出特點
1. React的基本認識
- Facebook開源的一個js庫
- 一個用於構建使用者介面的js庫
- React的核心思想: 通過構建可複用元件來構建使用者介面
1.1 React的特點
- Declarative(宣告式編碼)
- Component-Based(元件化編碼)
- Learn Once, Write Anywhere(支援客戶端與伺服器渲染)
- 高效——高效的DOM Diff演算法, 最小化頁面重繪
- 單向資料流
1.2 使用React
React相關的三個js庫:
- react.js: React的核心庫
- react-dom.js: 提供操作DOM的擴充套件庫
- babel.min.js: 解析JSX語法程式碼轉為純JS語法程式碼的庫
如何使用React
<script type="text/javascript" src="../js/react.js"></script>
<script type="text/javascript" src="../js/react-dom.js"></script>
<script type="text/javascript" src="../js/babel.min.js"></script>
<div id="example"></div>
<script type="text/babel" > //必須用babel
ReactDOM.render(<h1>Hello, React!</h1>, document.getElementById('example'));
</script>
2. React的三大突出特點
2.1 虛擬DOM
2.1.1虛擬DOM簡介
虛擬DOM是一種對於HTML DOM節點的抽象描述,你可以把它看成看成是一種用Javascript實現的結構,它不需要瀏覽器的DOM API支援,所以它在Node.js中也可以使用。它和DOM的一大區別就是它採用了更高效的渲染方式,元件的DOM結構對映到Virtual dom上,當需要重新渲染元件時,React在Virtual dom上實現了一個Diff演算法,通過這個演算法尋找需要變更的節點,再把裡面的修改更新到實際需要修改的DOM節點上,這樣就避免了整個渲染DOM帶來的巨大成本。
2.2.2 如何建立虛擬DOM(元素)
1). 語法: ReactDOM.render(virtualDOM, containerDOM) :
2). 作用: 將虛擬DOM元素渲染到真實容器DOM中顯示
3). 引數說明
引數一: 純js或jsx建立的虛擬dom物件。
引數二: 用來包含虛擬DOM元素的真實dom元素物件(一般是一個div)
4). 建立虛擬DOM的2種方式:
1️⃣. 純JS(一般不用):
React.createElement('h1', {id:'myTitle'}, title)
2️⃣. JSX建立的虛擬dom物件,記得加<script type="text/babel">
<h1 id='myTitle'>{title}</h1>
2.2 JSX(JS+XML)
1). 全稱: JavaScript XML
2). react定義的一種類似於XML的JS擴充套件語法: XML+JS。 js中直接可以套標籤, 但標籤要套js需要放在{}中
3). 作用: 用來建立react虛擬DOM(元素)物件。可以在解析顯示js陣列時, 會自動遍歷顯示;把資料的陣列轉換為標籤的陣列
注意1: 它不是字串, 也不是HTML/XML標籤
注意2: 它最終產生的就是一個JS物件
4). 標籤名任意: HTML標籤或其它標籤
5). 標籤屬性任意: HTML標籤屬性或其它
6). 基本語法規則
遇到 <開頭的程式碼, 以標籤的語法解析: html同名標籤轉換為html同名元素, 其它標籤需要特別解析(用到元件)
遇到以 { 開頭的程式碼,以JS的語法解析: 標籤中的js程式碼必須用{}包含
7). babel.js的作用
瀏覽器的js引擎是不能直接解析JSX語法程式碼的, 需要babel轉譯為純JS的程式碼才能執行;只要用了JSX,都要加上type=”text/babel”, 宣告需要babel來處理
例題 1
<div id="example1"></div>
<div id="example2"></div>
<script src="../js/react.js"></script>
<script src="../js/react-dom.js"></script>
<script src="../js/babel.min.js"></script>
<script type="text/babel">
//初始化動態資料
var title = 'I Love you!';
var myName = 'xfzhang';
//建立虛擬dom : JSX
var vDOM = <h1 id="myTitle" name={myName}>{title}</h1>;
//將虛擬dom渲染中頁面元素中
ReactDOM.render(vDOM, document.getElementById('example1'));
</script>
</body>
</html>
2.3 Component(元件)
React是面向元件程式設計的(元件化編碼開發),最後得到標籤程式碼
React 的一切都是基於元件的。可以通過定義一個元件,然後在其他的元件中,可以像HTML標籤一樣引用它。說得通俗點,元件其實就是自定義的標籤。
2.3.1 如何建立元件(記得首字母要大寫)
//方式1: 無狀態函式(最簡潔, 推薦使用)
function MyComponent1() {
return <h1>自定義元件標題11111</h1>;
}
//方式2: ES6類語法(複雜元件, 推薦使用)react是宣告式編碼
class MyComponent3 extends React.Component {
render () {
return <h1>自定義元件標題33333</h1>;
}
}
//方式3: ES5老語法(不推薦使用了)
var MyComponent2 = React.createClass({
render () {
return <h1>自定義元件標題22222</h1>;
}
});
建立完了後記得渲染元件
ReactDOM.render(<MyComponent1/>,document.getElementById("example1"));
2.3.2 元件注意事項
1). 返回的元件類必須首字母大寫
2). 虛擬DOM元素必須只有一個根元素
3). 虛擬DOM元素必須有結束標籤
2.3.2 ReactDOM.render()渲染元件標籤的基本流程
1). React內部會建立元件例項物件(方式1除外)
2). 得到包含的虛擬DOM並解析為真實DOM
3). 插入到指定的頁面元素內部
相關推薦
React學習(一)三大突出特點
1. React的基本認識 Facebook開源的一個js庫 一個用於構建使用者介面的js庫 React的核心思想: 通過構建可複用元件來構建使用者介面 1.1 React的特點 Declarative(宣告式編碼) Component-Based(
React學習(一)——基礎專案搭建以及環境配置
大家好,我是凱文,本篇文章將介紹React前端框架的環境配置以及專案搭建方法,其中涉及到了node.js(js執行平臺)、npm(依賴包管理工具)等內容。網上已經有許多類似的教程,這篇文章可以給各位做個參考,同時給我自己當做一個筆記。 React作為時下較為熱門的前
TCP協議的學習 (一)TCP服務特點
TCP協議靠近應用層 TCP的服務特點: 1.面向連線 雙方必須先建立連線才能進行資料的讀寫,雙方都必須為該連結分配必要的核心資源,以管理連線的狀態和連線上的傳輸 TCP連線是全雙工的,雙方資料傳輸可以通過一個連線進行,完
BeetlSQL框架學習(一)——初識BeetlSQL,特點,內置sql的使用,Pojo代碼生成等
spa imp 文件 無需 結束 innodb inter tostring postgre 學習BeetlSQL總結(1)一.BeetlSQL特點:1.開發效率:(1)無需註解,能自動使用大量的內置sql,快速完成增,刪,改,查的功能(2)數據模型支持Pojo,也支持Ma
07 React+Ant Design學習(一)——快速構建一個主頁
通過對React.js一週左右的學習後,就想著自己寫一個主頁,在這一週的學習中雖然對react元件化開發的思想有了較深的理解,但自己還是很迫切的希望能動手結合Ant Design寫出來一個主頁。因為當初學react的目的就是為了學習怎樣使用Ant Des
React再學習(一)
新公司的技術棧是React,雖然之前對react大概過了一遍,但是自己沒有實際落地過專案 再學習一遍react: 一、react全家桶 ·create-react-app ·元件化思維 ·JSX ·開發除錯工具 ·虛擬DOM ·生命週期 ·React-transition-g
react知識點學習(一)——定義CSS樣式
本文轉載自: 方法一:內部樣式 <h1 style={styleObj} className="alert-text">Hello {this.props.name} {this.props.title}</h1>;<style>
計算機視覺(深度學習)校招記錄(一)CNN的特點以及優勢
1. 區域性感知 : 通過在底層的區域性掃描獲得影象的區域性特徵,然後在高層綜合這些特徵獲取影象的全域性資訊。作用:降低引數的數目。 2. 權值共享 : CNN中每個卷積核裡面的引數即權值,原始圖片卷積後會得到一副新的圖片,而新圖中的每個畫素都來自同一個卷積核,這就是權
Node個人學習(一)----模塊
需要 區別 class 當前 個人 一個 min export ava 1、自定義模塊與系統模塊的引入方式區別:----自定義模塊需要加“./”來聲明它不是一個系統模塊 const mod1=require("系統模塊.js"); const mod1=require(
MySQL學習(一)ODBC 安裝
oca local new cmd 密碼 服務 關閉 mysql 系統 寫前說明 初次接觸MySQL,都說MySQL各種好。我也來學習學習。之前只有SQLServer2008的經驗,其實也只是皮毛。因為SQLServer還是比較容易上手的。也不麻煩。但是自己
vue基礎學習(一)
time tle eight pla use logs new dial for 01-01 vue使用雛形 <div id="box"> {{msg}} </div> <sc
java學習(一) 環境搭建、hello world的demo
環境變量 網上 類庫 .com java開發 www cnblogs rgs .class 本程序媛搞前端的,上班偶有空閑,不妨來學習學習,不然怎麽包養小白臉,走上人生巔峰? 說實話,每個語言都相通,有了javascript的基礎,並且有了兩三年跟java打交道的經
【Cloud Foundry】Could Foundry學習(一)——Could Foundry淺談
art lock mod out isp ted 組成 .com pop 在閱讀的過程中有不論什麽問題。歡迎一起交流 郵箱:[email protected]/* */ QQ:1494713801 Cloud Foundry是VMware
Android中關於JNI 的學習(一)對於JNIEnv的一些認識
else size 初步 jint 使用 包括 pri jnienv 就會 一個簡單的樣例讓我們初步地了解JNI的作用,可是關於JNI中的一些概念還是須要了解清楚,才可以更好的去利用它來實現我們想要做的事情。 那麽C++和Java之間的是怎樣通過JNI來進行互相調用的呢
.Net MVC的學習(一)
後綴 fonts mvc 存在 eth 大致 例如 pre gb2 套種間作,也挺有意思的——近來學習感悟。DRP學習的同一時候,折騰了點曾經不曾學習可是卻非常多次耳聞過的東西——Asp.Net中的MVC架構模式。 一、是什麽? MVC,即(Model-
Python學習(一)
ubun 安裝目錄 tle setup extract reat 常用插件 增加 網址 Python學習(一) 一:開發工具安裝 1,pycharm下載:Linux版本 2,破解:在help-register下-service輸入: http://elpo
Web Service學習(一)
內存 res 特性 response 屬性表 高性能 fas str ima 1、WebMethod特性包含哪些屬性,都有什麽用? 1、BufferResponse屬性 該屬性表明是否啟用對Web Service方法響應的緩沖。當設置為true時,Web Service
Python基礎學習(一)
func exe function 學習 typeerror exit invalid min eas #Default Argument Values & in keyworddef ask_ok(prompt, retres=4, reminder=‘pleas
Django學習(一)---基本配置及創建項目、應用
cut 維護 onf response settings 通過 學習 clu render 安裝:在Django官網下載最新版Django然後通過pip安裝即可 一、創建項目 進入文件夾,打開cmd窗口,輸入django-admin startproject myblog(
機器學習(一)
無限 size mage 計算機 博客 對數 png 表示 獲得 對學習的定義 學習經驗E 完成任務T 績效指標P 對於某類任務T和性能度量P,如果一個計算機程序在完成T上以P來衡量完成的好壞,並隨著經驗E而自我完善,那麽我們稱這個計算機程序在從經驗E中學習