1. 程式人生 > >react-native技術調研:react-native是什麼?

react-native技術調研:react-native是什麼?

如有疏漏錯誤,還望指正。轉載不忘加上>>原連結<<哦~

react-native是什麼? react-native原理
這裡寫圖片描述
從字面意思上來看,react-native由單詞react和單詞native組合而成,中間一個連字元連線。

我們對其中的native的概念是很清晰的,它指的就是原生app,也就是用原生開發方式開發出來的應用。

那麼react又是什麼呢?他們之間的連字元又有什麼特殊的意義呢?下面我們來一一解答。

首先我們來說說react。react是什麼?

官網上定義React是一個用於構建使用者介面的js庫。 React是宣告式的,高效率的,併兼具靈活性

(React is a declarative, efficient, and flexible JavaScript library for building user interfaces.)。

我們來理解一下,用於構建使用者介面的js庫有很多啊,比如說angular,vue,jquery,ext等等,都可以被稱為使用者構建使用者介面的js庫。

那麼react和它們比又有什麼不同呢?定義裡說react是宣告式的,高效率的,併兼具靈活性,這就是react的不同之處了,也可以稱為react的幾個特性吧。

接下來我們就來分別介紹一下react的這幾個特性。

1.宣告式宣告式是由JSX語法來表現的

。那麼jsx語法又是啥?JSX是使XML可以嵌入JavaScript的語法。用以更加直觀的描述UI。 JSX是JavaScript物件,可理解為createElement的語法糖。

我們來對比一下,首先是原生的js語法:

React.createElement(MyButton,{
    color:'blue',
    shadowSize:2
},'Click Me');

再來看一下jsx語法:

<MyButton color="blue" shadowSize={2}>Click Me</MyButton>

大家一看,這不就是一個語義化的標籤麼,這樣寫的確比上面寫起來簡單,看起來也更清晰,但這就是JSX了麼?當然不是,JSX語法的重點在於它是與js程式碼混寫的,配合es6就像下面這樣:

class ShoppingList extends React.Component {
  render() {
    return (
      <div className="shopping-list">
        <h1>Shopping List for {this.props.name}</h1>
        <ul>
          <li>Instagram</li>
          <li>WhatsApp</li>
          <li>Oculus</li>
        </ul>
      </div>
    );
  }
}

現在是不是感覺有點cool了?JSX語法使用語義化的標籤來簡化程式碼的編寫,提升了程式碼可維護性的同時也降低了學習成本

現在主流的IDE和文字編輯器都可以通過安裝外掛來支援JSX語法。

所以這個宣告式指的是什麼呢?指的就是上面程式碼中用大括號括起來的部分{this.props.name}這裡類似於angular中的資料繫結。聲明瞭UI中的表現與js中資料的關係。

2.高效率高效率是由虛擬DOM來實現的

虛擬DOM技術指的是使用javascript Object模擬DOM樹,計算變更,減少重繪,提升效率的一種技術實現。

這裡有一篇文章,寫的非常不錯,我就直接給大家引用過來,大家自己看吧。
>>虛擬DOM技術分析<<

3.靈活性:這個靈活性範圍就廣了,有安裝的靈活性,編寫程式碼的靈活性等。我側重來說一個,就是components,元件化。

react-native通過Components進行元件化。它把UI分割成獨立的、可重用的部件 。元件化這個概念大家也都不是第一次聽說了吧,如果比較陌生的同學,可以自己搜搜哈。

react有它自己的元件化方式,就是所有模組都繼承自React.Components,這比angular的modules更輕量級,結構也更簡單,條條框框也減少了很多,是所謂真正的感受到了靈活性呢。

程式碼示例就像上面講JSX語法的時候引用的那段,大家體會一下。

好的,我們瞭解完了react的三個特性,也對react有了初步的理解。那麼回到我們最開始的問題:react-native是什麼啊?

字面上來說,我們已經瞭解了react,瞭解了native的含義,那麼react和native又是如何聯絡起來的呢

首先,React通過虛擬DOM實現了對UI層的解耦(無論是android還是ios)。

然後,將瀏覽器的DOM樹替換為Native的UI模組,使React在移動端進行渲染。

最後,採用Native的核心API完成react與native的通訊。
這裡寫圖片描述

由於採用native原生UI作為展現層,所以react-native具有可以媲美原生應用的優秀使用者體驗與效能優勢。

我們對react-native的一些字面上的概念都有了一定的瞭解。我把以上內容簡單的概括為:react-native是基於react技術編寫native應用的一門技術,它繼承了react簡明、高效、靈活的特點,又兼具native優秀的使用者體驗。

react-native技術採用js編碼,編寫的應用具有跨平臺、可熱更新的優勢。這就是我眼中的react-native。