成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

React組內(nèi)開發(fā)規(guī)范

Paul_King / 3467人閱讀

摘要:部門組件開發(fā)規(guī)范適用范圍部門所有基于開發(fā)的包含組件,歡迎提意見。必須書寫,規(guī)定每個可接受屬性的類型,并對加以說明。更多的通用組件規(guī)范基本的書寫規(guī)范基礎(chǔ)上,更多的通用的組件開發(fā)規(guī)范??梢蕴峁┡c組件內(nèi)部數(shù)據(jù)結(jié)構(gòu)緊密相關(guān)的操作方法。

下面是我們部門總結(jié)的內(nèi)部開發(fā)規(guī)范(試行版本),歡迎提意見。

部門FE React 組件開發(fā)規(guī)范 適用范圍

部門FE 所有基于React開發(fā)的(包含fcui2)組件,歡迎提意見。

要求

必須:表示絕對要求這樣做。

必須不:表示絕對不要求這樣做。

應(yīng)該/建議:表示一般情況下應(yīng)該這樣做,但是在某些特定情況下可以忽視這個要求。

應(yīng)該不/不建議:表示一般情況下不應(yīng)該這樣做,但是在某些特定情況下可以忽視這個要求。

可以:表示這個要求完全是可選的,你可以這樣做,也可以不這樣做。

基本概念 [basic-concepts]

實例化生命周期

getDefaultProps

getInitialState

componentWillMount

render

componentDidMount

更新期生命周期

getInitialState

componentWillMount

render

componentDidMount

運行期生命周期

componentWillReceiveProps

shouldComponentUpdate

componentWillUpdate

render

componentDidUpdate

銷毀期生命周期

componentWillUnmount

核心依賴 [deps](針對內(nèi)部UI庫)

必須在UI內(nèi)只依賴React,underscore。

必須不在UI內(nèi)部任何地方使用jQuery等直接操作DOM的庫

JSX書寫 [jsx]

參考:Airbnb的style guide。

必須命名JSX文件為.jsx.js。

必須使用PascalCase作為文件名。

必須只包含一個React Component在一個JSX文件中。

必須令文件名與所包含的React Component名字相同。

必須只能使用React.createClass()來創(chuàng)建一個React Component。

> 雖然ES6 Class和pure function都可以創(chuàng)建React Component,
> 但ES6 Class不能使用mixin做擴展,與目前的擴展方法沖突;
> Pure function較難掌握和管理。

必須使用JSX語法來生成組件的DOM片段。

必須不能在JSX中出現(xiàn)React.createElement()

必須遵守下面示例中的DOM片段對齊方式。

    // bad
    

    // good
    

    // if props fit in one line then keep it on the same line
    

    // children get indented normally
    
      
    

必須在DOM片段中使用雙引號"。

> Why?JSX attributes [can"t contain escaped quotes](http://eslint.org/docs/rules/jsx-quotes), so double quotes make conjunctions like `"don"t"` easier to type.

> Regular HTML attributes also typically use double quotes instead of single, so JSX attributes mirror this convention.

    // bad
    

    // good
    

    // bad
    

    // good
    

必須在自關(guān)閉標(biāo)簽前加一個空格。

    // bad
    

    // very bad
    

    // bad
    

    // good
    

必須書寫propTypes,規(guī)定每個可接受屬性的類型,并對propTypes加以jsdoc說明。

必須使用camalCase來命名props。

    // bad
    

    // good
    

必須當(dāng)props的值為字面值true時,省略={true}。

    // bad
    

必須在DOM片段前后加一對括號(),當(dāng)DOM片段在一行以上時。

    // bad
    render() {
      return 
               
             ;
    }

    // good
    render() {
      return (
        
          
        
      );
    }

    // good, when single line
    render() {
      const body = 
hello
; return {body}; }

必須將組件寫成自關(guān)閉標(biāo)簽,當(dāng)組件沒有children時。

    // bad
    

    // good
    

必須將關(guān)閉標(biāo)簽另起一行,當(dāng)組件有多個props時。

    // bad
    

    // good
    

必須將bind handler到this的動作放到構(gòu)造函數(shù)中。

> Why? A bind call in the render path creates a brand new function on every single render.

    // bad
    class extends React.Component {
      onClickDiv() {
        // do stuff
      }

      render() {
        return 
} } // good class extends React.Component { constructor(props) { super(props); this.onClickDiv = this.onClickDiv.bind(this); } onClickDiv() { // do stuff } render() { return
} }

必須以如下的順序排列JSX文件中的方法。

displayName

propTypes

contextTypes

childContextTypes

mixins

statics

defaultProps

getDefaultProps

getInitialState

getChildContext

componentWillMount

componentDidMount

componentWillReceiveProps

shouldComponentUpdate

componentWillUpdate

componentDidUpdate

componentWillUnmount

clickHandlers or eventHandlers like onClickSubmit() or onChangeDescription()

getter methods for render like getSelectReason() or getFooterContent()

Optional render methods like renderNavigation() or renderProfilePicture()

render

更多的通用組件規(guī)范 [general-guide]

[基本的JSX書寫規(guī)范] (#jsx-jsx)基礎(chǔ)上,更多的通用的React組件開發(fā)規(guī)范。

必須將所有UI組件實現(xiàn)為[Pure Renderer] (https://facebook.github.io/react/docs/pure-render-mixin.html)。

必須在props中存放所有外部導(dǎo)入的配置,包括顯示控制參數(shù)、顯示數(shù)據(jù)源、當(dāng)前值(如果是input類型組件)、回調(diào)方法等。state相同時,對于一個特定的props,對應(yīng)的組件展現(xiàn)結(jié)果唯一。

必須在state中存放組件運行期的狀態(tài),如輸入框是否通過了校驗、鼠標(biāo)是否懸浮在按鈕上等。props相同時,對于一組特定的state,對應(yīng)的組件展現(xiàn)效果唯一。

不應(yīng)該在state中存在[通過props運算來的屬性] (https://facebook.github.io/react/tips/props-in-getInitialState-as-anti-pattern.html)。

建議父子關(guān)系的組件間傳遞props時,使用[rest-spread語法] (https://facebook.github.io/react/docs/transferring-props.html)。

必須僅在實例化生命周期中綁定window或body事件。

必須在銷毀期生命周期中解綁window或body事件。

必須不允許在運行期生命周期中聲明表達式函數(shù)。bind函數(shù)也不允許。

    // bad
    render() {
        var cleverFunction = function () {};
        // ...
    }

    // good
    {
        cleverFunction() {},
        render() {
            // just use this.cleverFunction
        }
    }

不建議在運行期生命周期中使用時間復(fù)雜度O(n2)及以上階的算法。

必須不允許出現(xiàn)觀察者模式,如自定義addEventListener方法,或on, fire等。

必須只能通過以下2種方法設(shè)置組件內(nèi)部狀態(tài):

通過父組件的render方法,改變子組件的props。

通過子組件的setState方法。

必須不允許為組件提供setXXX方法來改變其內(nèi)部狀態(tài),除非該setXXX方法中僅包含一個setState調(diào)用,且完成了一個充分復(fù)雜的state轉(zhuǎn)換。

必須為所有回調(diào)在getDefaultProps給出空函數(shù)默認值_.noop。

可以提供與組件內(nèi)部數(shù)據(jù)結(jié)構(gòu)緊密相關(guān)的操作方法。這些方法可以實現(xiàn)為一個純函數(shù),即只依賴其所有的參數(shù)來得到其結(jié)果。這些方法可以放在組件的static域中。

博客地址

http://tangguangyao.github.io/

微信公眾號

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/78934.html

相關(guān)文章

  • 干貨|人人都是翻譯項目的Master

    摘要:開始翻譯函數(shù)式編程專有名詞庫在翻譯的過程中,難免會遇到很多描述不太清楚的專有名詞,一個辦法是小組內(nèi)進行討論,最后商量出來結(jié)果,小組內(nèi)統(tǒng)一翻譯。因為本書的主題是函數(shù)式編程,所以這個名詞庫里大部分都是函數(shù)式編程相關(guān)的專有名詞。 在平時的工作中,我們都會經(jīng)常查閱一些英文文檔來解決平時遇到的問題和拓寬視野。看到好的文章或者書籍有沒有想要和小伙伴分享的沖動,那么我們一起來翻譯吧~ 翻譯主張 信 ...

    kyanag 評論0 收藏0
  • 干貨|人人都是翻譯項目的Master

    摘要:開始翻譯函數(shù)式編程專有名詞庫在翻譯的過程中,難免會遇到很多描述不太清楚的專有名詞,一個辦法是小組內(nèi)進行討論,最后商量出來結(jié)果,小組內(nèi)統(tǒng)一翻譯。因為本書的主題是函數(shù)式編程,所以這個名詞庫里大部分都是函數(shù)式編程相關(guān)的專有名詞。 在平時的工作中,我們都會經(jīng)常查閱一些英文文檔來解決平時遇到的問題和拓寬視野??吹胶玫奈恼禄蛘邥袥]有想要和小伙伴分享的沖動,那么我們一起來翻譯吧~ 翻譯主張 信 ...

    BicycleWarrior 評論0 收藏0
  • 干貨|人人都是翻譯項目的Master

    摘要:開始翻譯函數(shù)式編程專有名詞庫在翻譯的過程中,難免會遇到很多描述不太清楚的專有名詞,一個辦法是小組內(nèi)進行討論,最后商量出來結(jié)果,小組內(nèi)統(tǒng)一翻譯。因為本書的主題是函數(shù)式編程,所以這個名詞庫里大部分都是函數(shù)式編程相關(guān)的專有名詞。 在平時的工作中,我們都會經(jīng)常查閱一些英文文檔來解決平時遇到的問題和拓寬視野??吹胶玫奈恼禄蛘邥袥]有想要和小伙伴分享的沖動,那么我們一起來翻譯吧~ 翻譯主張 信 ...

    騫諱護 評論0 收藏0
  • ?? 前端如何與后端對接?當(dāng)年差點和后端同學(xué)打起來了!

    閱讀須知 本文不談及老技術(shù)(畢竟沒有經(jīng)歷那個年代,emmm),只談一些個人體會,如果會有部分內(nèi)容與你想法不同,以你為準。 大學(xué)期間對于前端的學(xué)習(xí) 對于我雙非本科小菜雞來說,最開始入門的語言是 C 語言,之后大二大三就以 Java 語言為主。后面了解了一下其它學(xué)校同學(xué)學(xué)習(xí)的課程,好像大部分也是以 Java 為主,不過有的學(xué)校會教學(xué)一些 Web 前端的課程,這個是挺好的。 我是僅僅大二學(xué)了一本 《We...

    Martin91 評論0 收藏0
  • 使用 Typescript 檢查你的代碼規(guī)范

    摘要:公司不同,規(guī)范的內(nèi)容形式檢查方式也不同,但最終是要驗收你的規(guī)范。你的代碼不合規(guī)范,提交都提交不上去,這樣就能從入口上保證代碼的規(guī)范性。 背景 越來越多的前端項目開始使用typescript這門靜態(tài)檢查語言了,它包括很多很棒的功能點,在這里就不細述,根據(jù)靜態(tài)語法檢查和.d.ts生成的代碼提示兩大特性,我們就可以來制定并且檢查代碼規(guī)范,現(xiàn)在我們來詳細說一下。 代碼規(guī)范 代碼規(guī)范大家應(yīng)該...

    Loong_T 評論0 收藏0

發(fā)表評論

0條評論

Paul_King

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<