前端程式碼規範

這是我上家教育saas公司前端同事整理出來的(當時我們公司主要用的前端框架是React),當時我在這家公司除了主寫後端之外,還需要寫一些前端程式碼,按照這個規範寫,前端程式碼可讀性、可維護性、可擴展性以及性能都會大大提高。

一、JS篇

1.變數(包括聲明,函數參數)

(1)變數均用英文單詞(不會要去翻譯)

(2)變數較長時用駝峰命名(狀態+變數),例如:currentCourseId

或者下劃線形式區分,例如:current_courseId

註:無論那種方式程式碼里只能出現一種

(3)字元串中包含變數:你是最${isPig ? '胖' : '完美'}的嗎?

(4)對象屬性遵循

const itemName = '優秀';

const newObject = { itemName } 

const newObject = { itemName: itemName };

(5)對象結構賦值,兼容處理 例如:

const { listData = [], ...props } = this.props;

(6)對象取值 盡量採用 … 擴展運算符完成組件間多props的情況

2.方法

(1)方法命名必須遵循駝峰命名,不怕長就怕看不懂,

例如:

handleChangeChecked = () => {}

(2)方法採用es6寫法(可省去react綁定當前組件程式碼)

(3)對於用戶交互方法作用於組件的方法,遵循以下:

<div onClick = { handleClick = () => {} }>點擊事件</div>

(4)介面請求方法語義化明確 例如:

getListData = () => {}

(5)js方法(filter,map,find等等)遍歷時儘可能區分到遍歷的是什麼item

例如:

listData.map(testItem => ( <div></div>))

(6)善於運用箭頭函數來縮短程式碼行數,例如過濾:

listData.filter(item => !!item.showFlag)

二、標籤篇

(1)文本展示的不要去用自帶樣式標籤,用div/span去代替h1….h5/p

(2)減少無用標籤層級,沒有樣式功能的層級去掉

三、樣式篇

(1)sass/less文件必須層級嵌套(防止污染全局樣式),當定義一個js文件時,需要給到當前唯一className,並在less樣式文件里用className包裹樣式

(2)className的值語義化明確,要用『-』符號隔開,並且不要出現漢字

無變數情況:

className = "course-list-item"

有變數情況:不要在className裡面去判斷,已變數方式

const status = isOpen ? 'open' : 'close'; className={`item-content-${status}`}

四、整體優化篇

(1)遍歷之後item取值做好兼容後,再賦值給標籤(方便控制Dom顯隱)

(2)抽離基礎純UI展示無狀態組件,減少一個render方法層級和行數

(3)render方法拆分化,renderTop,renderMiddle,renderFooter,簡稱布局大法

(4)一個less樣式文件對應一個js文件,用className聯通,形成封閉區內的樣式渲染

(5)控制單個文件程式碼<500行

Tags: