? ? JSX并不是一門新的開(kāi)發(fā)語(yǔ)言又跛,而是Facebook提出的語(yǔ)法方案:一種可以在JavaScript代碼中直接書寫HTML標(biāo)簽的語(yǔ)法糖,所以,JSX本質(zhì)上還是JavaScript語(yǔ)言。
? ? ? 小知識(shí):語(yǔ)法糖(Syntactic sugar)是由英國(guó)計(jì)算科學(xué)家彼得·蘭丁發(fā)明的一個(gè)術(shù)語(yǔ)囊拜,指計(jì)算機(jī)語(yǔ)言中添加的某種語(yǔ)法某筐,這種語(yǔ)法對(duì)語(yǔ)言的功能并沒(méi)有影響比搭,但是更方便程序員使用。語(yǔ)法糖讓程序更加簡(jiǎn)潔南誊,有更高的可讀性身诺。
? ? 在React和React Native開(kāi)發(fā)中,不一定非要使用JSX抄囚,也可以直接使用JavaScript進(jìn)行開(kāi)發(fā)霉赡。但是,強(qiáng)烈建議讀者使用JSX幔托!因?yàn)镴SX在定義類似HTML這種樹(shù)形結(jié)構(gòu)時(shí)穴亏,簡(jiǎn)單明了,極大地提高了開(kāi)發(fā)和維護(hù)的效率重挑。
下面以1.4節(jié)第一個(gè)React Native應(yīng)用中的代碼為例:
? ? ?在上述代碼中嗓化,組件的render()方法函數(shù)是用于渲染頁(yè)面的,它的返回值是一個(gè)View的對(duì)象谬哀,但是為什么沒(méi)有發(fā)現(xiàn)創(chuàng)建對(duì)象和設(shè)置屬性的代碼呢刺覆?原來(lái),JSXTransformer幫我們把代碼中XML-Like語(yǔ)法編譯轉(zhuǎn)換成真實(shí)可用的JavaScript代碼史煎,它不僅僅創(chuàng)建View對(duì)象谦屑、設(shè)置View樣式和布局,同時(shí)更加貼心的是篇梭,還構(gòu)建了View之間的樹(shù)形結(jié)構(gòu)氢橙。例如,上述例子中的樹(shù)形結(jié)構(gòu)是這樣的:
RootView(stylecontainer)
----SubText1(stylewelcome)
----SubText2(styleinstructions)
----SubText3(styleinstructions)
和我一起學(xué)吧恬偷,《React Native移動(dòng)開(kāi)發(fā)實(shí)戰(zhàn)》