本文轉載自:衆成翻譯
譯者:iOSDevLog
連接:http://www.zcfy.cc/article/3797
原文:https://www.fullstackreact.com/30-days-of-react/day-2/html
如今咱們知道React是什麼,讓咱們來看看這個系列的其他部分將會出現的幾個術語和概念。react
在咱們前面的文章中,咱們看了一下React,並在高級別上討論了它的工做原理。 在本文中,咱們將介紹React生態系統的一部分:ES6和JSX。git
在互聯網上的任何粗略的搜索尋找React材料,毫無疑問,你已經遇到了術語JSX
,ES5和ES6。這些難懂的首字母縮略詞可能會很快混亂。es6
ES5(ES
表明ECMAScript)基本上是「常規JavaScript」。第5次更新JavaScript,ES5在2009年完成。它已被全部主要瀏覽器支持多年。所以,若是你在最近寫過或看過任何JavaScript,極可能是ES5。github
ES6是一個新版本的JavaScript,添加了一些不錯的語法和功能添加。它在2015年完成。ES6 幾乎徹底支持 全部主要的瀏覽器。但這將是一段時間,直到較舊版本的Web瀏覽器逐步中止使用。例如,Internet Explorer 11不支持ES6,可是具備大約12%的瀏覽器市場份額。瀏覽器
爲了得到ES6的好處今天,咱們必須作一些事情,使它工做在儘量多的瀏覽器,咱們能夠:ide
咱們將在本系列的稍後部分看到咱們如何作到這一點。函數
咱們將在本系列中編寫的大多數代碼均可以輕鬆地轉換爲ES5。在咱們使用ES6的狀況下,咱們將首先介紹功能,而後經過它。prototype
咱們將看到,全部的React組件都有一個render
函數,它指定了React組件的HTML輸出。JavaScript eXtension,或更常見的JSX,是一個React擴展,容許咱們編寫看起來像 HTML的JavaScript 。翻譯
儘管在之前的範例中,將JavaScript和標記包含在同一個地方被認爲是一種很差的習慣,可是結果是將視圖與功能相結合使得對視圖的推理變得很是簡單。
看看這是什麼意思,想象一下,咱們有一個React組件來呈現一個h1
HTML標籤。JSX容許咱們以很是相似於HTML的方式聲明這個元素:
class Header extends React.Component { render() { return ( <h1 className='large'>Hello World</h1> ); } }
這個HelloWorld
組件中的render()
函數看起來像它的返回HTML,但其實這是JSX。JSX 在運行時被翻譯成常規JavaScript。那個組件,翻譯後,看起來像這樣:
class HelloWorld extends React.Component { render() { return ( React.createElement( 'h1', {className: 'large'}, 'Hello World' ) ); } }
雖然JSX看起來像HTML,但它實際上只是一種更靈敏的方式React.createElement()
來編寫聲明。當組件渲染時,它輸出一個React元素樹或該組件輸出的HTML元素的虛擬表示。React而後將基於此React元素表示來肯定對實際DOM所作的更改。在HelloWorld
組件的狀況下,React寫入DOM的HTML將以下所示:
<h1 class='large'>Hello World</h1>
在
class extends
咱們在第一個做出反應組件使用的語法是ES6語法。它容許咱們使用熟悉的面向對象樣式編寫對象。
在ES6中,class
語法可能翻譯爲:var HelloWorld = function() {} Object.extends(HelloWorld, React.Component) HelloWorld.prototype.render = function() {}
由於JSX是JavaScript,咱們不能使用JavaScript保留字。這包括class
和像for
。
React提供了咱們的屬性className
。咱們使用它在HelloWorld
來設置咱們的h1
標籤上的large
類。還有一些其餘屬性,如標籤上的屬性for
爲轉換htmlFor
,由於for
也是保留字。當咱們開始使用它們時,咱們將看看這些。
若是咱們想要編寫純JavaScript而不是依賴於JSX編譯器,咱們能夠只寫該React.createElement()
函數,而沒必要擔憂抽象層。但咱們喜歡JSX。它特別是更復雜的組件可讀性。考慮下面的JSX:
<div> <img src="profile.jpg" alt="Profile photo" /> <h1>Welcome back Ari</h1> </div>
傳送到瀏覽器的JavaScript看起來像這樣:
React.createElement("div", null, React.createElement("img", {src: "profile.jpg", alt: "Profile photo"}), React.createElement("h1", null, "Welcome back Ari") );
再提一下,雖然你能夠跳過JSX並直接編寫後者,但JSX語法很是適合表示嵌套的HTML元素。
如今咱們瞭解JSX,咱們能夠開始編寫咱們的第一個React組件。明天加入咱們,當咱們跳進咱們的第一個React應用程序。