React 第一章: React 入門。
1.1.React的基本認識
這邊只是測試語法來使用,並不是真實在開發中使用
在真實的專案或項目當中,應該是先進行編譯,再進行運行
1.2.React的基本使用
1.2.1 相關js庫
- react.js:React: 的核心庫
- react-dom.js: 提供操作DOM的react擴展庫
- babel.min.js:解析JSX 語法代碼轉為純JS語法代碼的庫
1.2.2 引入
在頁面中引入js
1.2.3 編碼
可以透過debugger 來看看,虛擬DOM跟原本的DOM元素屬性差別。可以看出誰輕誰重
1.3. React JSX
1.3.1 虛擬DOM
- React提供了一些API來創建一種
特別
的一般js對象
a. var element = React.createElement('h1', {id:'myTitle'},'hello')
b. 上面創建的就是一個簡單的虛擬DOM對象
- 虛擬DOM對象最終都會被React轉換為真實的DOM
- 我們編碼時基本只需要操作react的虛擬DOM相關數據, react會轉換為真實DOM變化而更新界面
1.3.2 JSX
- 全稱: JavaScript XML (html是有限的標籤名,xml可以自己定義標籤名-組件標籤)
- react定義的一種類似於XML的JS擴展語法: XML+JS (本質還是JS、但瀏覽器要想識別,得透過babel轉換成JS)
- 作用: 用來創建react虛擬DOM(元素)對象
a. var ele = <'h1>Hello JSX!</h1'> 這邊的h1因為hackMD會吃到HTML效果所以在前後標籤內多了單引號,實作時請拿掉
b. 注意1: 它不是字符串, 也不是HTML/XML標籤
c. 注意2: 它最終產生的就是一個JS對象
- 標籤名任意: HTML標籤或其它標籤
- 標籤屬性任意: HTML標籤屬性或其它
- 基本語法規則
a. 遇到 <開頭的代碼, 以標籤的語法解析: html同名標籤轉換為html同名元素, 其它標籤需要特別解析
b. 遇到以 { 開頭的代碼,以JS語法解析: 標籤中的js代碼必須用{ }包含
- babel.js的作用
a. 瀏覽器不能直接解析JSX代碼, 需要babel轉譯為純JS的代碼才能運行
b. 只要用了JSX,都要加上type="text/babel", 聲明需要babel來處理
1.3.3 編碼
1.3.4渲染虛擬DOM(元素)
- 語法: ReactDOM.render(virtualDOM, containerDOM)
- 作用: 將虛擬DOM元素渲染到頁面中的真實容器DOM中顯示
- 參數說明
a. 參數一: 純js或jsx創建的虛擬dom對象
b. 參數二: 用來包含虛擬DOM元素的真實dom元素對象(一般是一個div)
1.3.5 建立虛擬DOM的兩種方式
- 純JS(一般不用)
React.createElement('h1', {id:'myTitle'}, title)
- JSX:
<'h1 id='myTitle'>{title}</h1'> 請省略h1標籤內單引號
1.3.6 JSX練習
需求: 動態展示列表數據
- 前端JS框架列表
- JQuery
- zeptoo
- angular
- react
- vue
1.4.模塊與組件和模塊化與組件化的理解
- 模塊: 形容js文件 具有特地功能的js文件,內部有數據(變量)以及數據的操作(函數)。將私有函數向外暴露,如果只有一個函數,就暴露函數,如果是兩個就是暴露對象(obj)。
- 模塊化: 用來形容項目或者項目編碼方式,看編碼是否是模塊化的方式。在寫項目的時候是一個模塊一個模塊編寫的,那就是了。
- 組件: 假設介面功能複雜,拆分成多個組件編寫,譬如拆成三個組件header,body,footer。一個介面的局部功能模塊。一個介面有好多功能介面組成(組成局部介面的所有資源的集合,都是屬於組件的組合部分ex:html,css,js,img…)。
- 組件化: 在做項目的時候是用組件編寫的,組合起來實現,及組件化的項目。
1.4.1.模塊
- 理解: 向外提供特定功能的js程序, 一般就是一個js文件
- 為什麼: js代碼更多更複雜
- 作用: 復用js, 簡化js的編寫, 提高js運行效率
1.4.2. 組件
- 理解: 用來實現特定(局部)功能效果的代碼集合(html/css/js)
- 為什麼: 一個界面的功能更複雜
- 作用: 復用編碼, 簡化項目編碼, 提高運行效率
1.4.3. 模塊化
- 當應用的js都以模塊來編寫的, 這個應用就是一個模塊化的應用
1.4.4. 組件化
- 當應用是以多組件的方式實現, 這個應用就是一個組件化的應用
練習:
