JSX並不是一門新的開發語言,而是Facebook提出的語法方案:一種可以在JavaScript代碼中直接書寫HTML標簽的語法糖,所以,JSX本質上還是JavaScript語言。 ...
JSX並不是一門新的開發語言,而是Facebook提出的語法方案:一種可以在JavaScript代碼中直接書寫HTML標簽的語法糖,所以,JSX本質上還是JavaScript語言。
小知識:語法糖(Syntactic sugar)是由英國計算科學家彼得·蘭丁(https://zh.wikipedia.org/ wiki/%E5%BD%BC%E5%BE%97%C2%B7%E5%85%B0%E4%B8%81)發明的一個術語,指電腦語言中添加的某種語法,這種語法對語言的功能並沒有影響,但是更方便程式員使用。語法糖讓程式更加簡潔,有更高的可讀性。
在React和React Native開發中,不一定非要使用JSX,也可以直接使用JavaScript進行開發。但是,強烈建議讀者使用JSX!因為JSX在定義類似HTML這種樹形結構時,簡單明瞭,極大地提高了開發和維護的效率。
下麵以1.4節第一個React Native應用中的代碼為例:
01 export default class ch02 extends Component { // 每個頁面可以理解成一個組件 02 render() { // 渲染頁面的函數 03 return ( 04 <View style={styles.container}> // 頁面根View 05 <Text style={styles.welcome}> 06 Welcome to React Native! 07 </Text> 08 <Text style={styles.instructions}> 09 To get started, edit index.ios.js 10 </Text> 11 <Text style={styles.instructions}> 12 Press Cmd+R to reload,{'\n'} 13 Cmd+D or shake for dev menu 14 </Text> 15 </View> 16 ); 17 } 16 }
在上述代碼中,組件的render()方法函數是用於渲染頁面的,它的返回值是一個View的對象,但是為什麼沒有發現創建對象和設置屬性的代碼呢?原來,JSXTransformer幫我們把代碼中XML-Like語法編譯轉換成真實可用的JavaScript代碼,它不僅僅創建View對象、設置View樣式和佈局,同時更加貼心的是,還構建了View之間的樹形結構。例如,上述例子中的樹形結構是這樣的:
Root View (style container) ---- Sub Text 1 (style welcome) ---- Sub Text 2 (style instructions) ---- Sub Text 3 (style instructions)
和我一起學吧,《React Native移動開發實戰》