1. 程式人生 > >React學習(一)三大突出特點

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中學習