作為後端攻城獅,寫前端代碼是一種什麼體驗?囧
非專業前端人員,如有不當之處,請指出,不甚感激!
1、運行前端項目
● 配置
修改 hosts 文件 127.0.0.1 項目中的域名
● 執行命令
前提:確保你安裝了較新版本的 Node.js
終端(cmd)切換到前端項目目錄下,一般開發工具自帶,點擊終端 Terminal,第一次運行:
>> npm install
注意:npm 從遠程安裝包,公司一般會有自己的庫,如果安裝包失敗,發現含有公司的域名,找前端要 npm 源,切換即可,下載比較慢,可以先去喝杯咖啡,聽首音樂。一切順利然後執行
>>> npm start
這個主要用於本地項目啟動,比如線上,使用 npm run prod,這個都是配置文件控制,咱不研究。
2、參考文檔
● React 官方網站
不懂就扒拉一下文檔
https://react.docschina.org/docs/getting-started.html
3、瞭解 React
● JSX 簡介
使用 React 框架,你需要掌握 JSX 語法
① 在 JSX 中嵌入表達式
這個和 Python 中 format 參數化的形式一樣。在 JSX 語法中,你可以在大括號內放置任何有效的 JavaScript 表達式。一般的話,我們把 JSX 拆分成多行,包裹到括號內。
② 注意事項
假如一個標籤裡面沒有內容,你可以使用 /> 來閉合標籤。
使用 React 框架,他會檢測你的語法,如果不正確,會報錯。
● 組件
我們 N 年前開發,主要是 html + js,修改東西,都得重啟項目,往往可以看到某個開發人員瀏覽器打開了 N 個頁面。什麼是組件式開發,舉個栗子,我現在要做一個表格,我只需要在一個html 裡寫一個 div 元素,剩下的表格部分,通過 React 虛擬dom 動態增加。當數據發生改變時,React 會高效地更新並重新渲染我們的組件。
有沒有覺得,這段 js 代碼像 Java 程序,ShoppingList 繼承 React.Component,裡面有一個 render(中文:渲染) 的方法,裡面有我們熟悉的 html 代碼
● props
當 React 元素為用戶自定義組件時,它會將 JSX 所接收的屬性(attributes)轉換為單個對象傳遞給組件,這個對象被稱之為 “props”。
① 我們調用 ReactDOM.render() 函數,並傳入 <welcome> 作為參數。
② React 調用 Welcome 組件,並將 {name: 'Sara'} 作為 props 傳入。
③ Welcome 組件將
Hello, Sara
元素作為返回值。④ React DOM 將 DOM 高效地更新為
Hello, Sara
。注意: 組件名稱必須以大寫字母開頭。
React 會將以小寫字母開頭的組件視為原生 DOM 標籤。例如,
代表 HTML 的 div 標籤,而 <welcome> 則代表一個組件,並且需在作用域內使用 Welcome。所有 React 組件都必須像純函數一樣保護它們的 props 不被更改。● state與生命週期
State 與 props 類似,但是 state 是私有的,並且完全受控於當前組件。
componentDidMount() 方法會在組件已經被渲染到 DOM 中後運行,所以,最好在這裡設置計時器:
① 當 <clock> 被傳給 ReactDOM.render() 的時候,React 會調用 Clock 組件的構造函數。因為 Clock 需要顯示當前的時間,所以它會用一個包含當前時間的對象來初始化 this.state。我們會在之後更新 state。
② 之後 React 會調用組件的 render() 方法。這就是 React 確定該在頁面上展示什麼的方式。然後 React 更新 DOM 來匹配 Clock 渲染的輸出。
③ 當 Clock 的輸出被插入到 DOM 中後,React 就會調用 ComponentDidMount() 生命週期方法。在這個方法中,Clock 組件向瀏覽器請求設置一個計時器來每秒調用一次組件的 tick() 方法。
④ 瀏覽器每秒都會調用一次 tick() 方法。 在這方法之中,Clock 組件會通過調用 setState() 來計劃進行一次 UI 更新。得益於 setState() 的調用,React 能夠知道 state 已經改變了,然後會重新調用 render() 方法來確定頁面上該顯示什麼。這一次,render() 方法中的 this.state.date 就不一樣了,如此以來就會渲染輸出更新過的時間。React 也會相應的更新 DOM。
⑤ 一旦 Clock 組件從 DOM 中被移除,React 就會調用 componentWillUnmount() 生命週期方法,這樣計時器就停止了。
>>>正確地使用 State:
● 事件處理
注意:這裡一般用箭頭函數比較方便,自動綁定 this
● 條件渲染
使用 if
● 列表 & Key
● 表單
● 使用 PropTypes 進行類型檢查
注意:
自 React v15.5 起,React.PropTypes 已移入另一個包中。請使用 prop-types 庫 代替。
① 限制單個元素
你可以通過 PropTypes.element 來確保傳遞給組件的 children 中只包含一個元素。
② 默認 Prop 值
您可以通過配置特定的 defaultProps 屬性來定義 props 的默認值:
● React 發起 ajax 請求(接口請求)
以 Axios 為例。
我們推薦你在 componentDidMount 這個生命週期函數中發起 AJAX 請求。這樣做你可以拿到 AJAX 請求返回的數據並通過 setState 來更新組件。
● React 路由
我們訪問一個 URL,最終定向到哪個資源,這部分工作的處理程序,就是路由。
路由也是有狀態的,不同狀態對應不同功能,路由的參數傳遞,同樣也是綁定在 Props屬性 上面。
>>>
閱讀更多 Python大星 的文章