前端規范

<font face="微軟雅黑">前端編碼規范</font>

<font face="微軟雅黑">前端代碼風格</font>

一、文件命名

  • 組件命名首字母大寫 駝峰式命名
DatePicker.vue
  • 其他文件首字母小寫 駝峰式命名
datePicker.css

二、HTML 編碼規范

2.1 標簽與屬性

1、class 小寫 使用 模塊名_功能名 例:

<a class="home_conatiner"></a>

eg: 如項目名過長可酌情縮寫

2、id 首字母小寫 駝峰式命名

<a id="balckLine"></a>

3、所有 html 屬性必須添加雙引號(非單引號)。

// 禁止
<div id=mainframe> 或 <div id='mainframe'>

// 推薦
<div id="mainframe">

4、標簽屬性順序

屬性應該按照特定的順序出現以保證易讀性;

  • class
  • id
  • name
  • data-*
  • src, for, type, href, value , max-length, max, min, pattern
  • placeholder, title, alt
  • aria-*, role
  • required, readonly, disabled

class 是為高可復用組件設計的,所以應處在第一位;

id 更加具體且應該盡量少使用,所以將它放在第二位

2.2 風格

1、格式縮進

html 編碼統一格式化顯示,使用一個 Tab 鍵進行分層縮進 (2 個空格寬度),使整個頁面結構層次清晰,方便閱讀和修改。

2、模塊注釋

html 較大獨立模塊之間注釋格式統一使用:

<!--模塊 start-->
<!--模塊 end-->

或者:

<!-- XXX模塊 -->

<!-- /XXX模塊 -->

三、CSS 編碼規范

3.1 CSS 引用規范

1、<font color=red>所有 CSS 均為外部調用,不得在頁面書寫任何內部樣式或行內樣式;</font>

2、內部模塊之間注釋(建議 @模塊英文名,好查找):

/* @header 頭部 -----------------------------------------------------------*/
.infoArea {
}

/* 單行注釋 */
.specArea {
}

/* @footer 頁尾 ----------------------------------------------------------*/
.price {
}

3、引號

最外層統一使用雙引號;

url 的內容要用引號;

屬性選擇器中的屬性值需要引號。

.element:after {
  content: '';
  background-image: url('logo.png');
}

li[data-type='single'] {
  ...;
}

3.2 雜項

  1. 不允許有空的規則;

  2. 元素選擇器用小寫字母;

  3. 去掉小數點前面的 0;

  4. 去掉數字中不必要的小數點和末尾的 0;

  5. 屬性值'0'后面不要加單位;

  6. 同個屬性不同前綴的寫法需要在垂直方向保持對齊,具體參照右邊的寫法;

  7. 無前綴的標準屬性應該寫在有前綴的屬性后面;

  8. 不要在同個規則里出現重復的屬性,如果重復的屬性是連續的則沒關系;

  9. 不要在一個文件里出現兩個相同的規則;

  10. 用 border: 0; 代替 border: none;;

  11. 選擇器不要超過 4 層(在 scss 中如果超過 4 層應該考慮用嵌套的方式來寫);

  12. 盡量少用'*'選擇器。

四、 JavaScript 規范(jslint/eslint)

4.1 JS 注釋規則

1、文件頭部注釋

/**
 * @created : 2017/09/15
 * @author : Mr.Wang
 * @desc : 當前js模塊功能描述
 **/

2、方法注釋

/**
 * @description 加法運算
 * @param {Number} num1 加數
 * @param {Number} num2 被加數
 * @return {Number} result 結果
 */
function add(num1, num2) {
  return num1 + num2
}

3、單行注釋

雙斜線后,必須跟一個空格;
縮進與下一行代碼保持一致;
可位于一個代碼行的末尾,與代碼間隔一個空格。

var funName = function(arg1, arg2) {
  this.arg1 = arg1

  // 單行注釋說明(上面添加一空行, //與說明之間空一格)
  this.arg2 = arg2
}

4.2 JS 命名規則

1、方法命名

  • 變量名應由 26 個大小寫字母(A..Z,a..z),10 個數字(0..9),和“_”(下劃線)組成。
  • 首字母小寫 駝峰式命名
  • 私有方法以 <font color='red'>_</font> 開始
  • 全局方法以 <font color='red'>$</font> 開始
  • 構造函數 首字母大寫 駝峰式命名
    動詞 含義 返回
    can 判斷是否可執行某個動作(權限) 函數返回一個布爾值。true:可執行;false:不可執行
    has 判斷是否含有某個值 函數返回一個布爾值。true:含有此值;false:不含有此值
    is 判斷是否為某個值 函數返回一個布爾值。true:為某個值;false:不為某個值
    get 獲取某個值 函數返回一個非布爾值
    set 設置某個值 無返回值、返回是否設置成功或者返回鏈式對象
    load 加載某些數據 無返回值或者返回是否加載完成的結果
  • 特殊情況
// 'URL'在變量名中全大寫
var reportURL

// 'Android'在變量名中大寫第一個字母
var AndroidVersion

// 'iOS'在變量名中小寫第一個,大寫后兩個字母
var iOSVersion

2、 雜項

1、用'===', '!=='代替'==', '!=';

2、不要像這樣使用構造函數,例:new function () { ... }, new Object;

3、不要在內置對象的原型上添加方法,如 Array, Date;

4、不要在內層作用域的代碼里聲明了變量,之后卻訪問到了外層作用域的同名變量;

5、變量不要先使用后聲明;

6、不要在一句代碼中單單使用構造函數,記得將其賦值給某個變量;

7、不要在同個作用域下聲明同名變量;

8、不要在一些不需要的地方加括號,例:delete(a.b);

9、不要聲明了變量卻不使用;

10、不要在應該做比較的地方做賦值;

11、debugger,console 不要出現在線上的代碼里;

12、數組中不要存在空元素;

13、不要在循環內部聲明函數;

4.3 vue 風格

1、prop 定義盡量詳細

props: {
  status: {
    type: String,
    required: true
  }
}

2、 避免 v-if 和 v-for 用在一起

3、 生命周期函數按照加載順序 置于下方

export default {
  name:'MyComponents';
  data() {
    mes: 'hello world'
  },
  prop: {
    status: {
      type: String,
      required: true
    }
  },
  computed: {},
  watch: {},
  methods: {},
  beforeCreate() {},
  created() {},
  beforeMount() {},
  mounted() {}
}

5.其他

其他未被提及的 具體依照 eslint 規范

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 最佳原則 堅持制定好的代碼規范。無論團隊人數多少,代碼應該同出一門。如果你想要為這個規范做貢獻或覺得有不合理的地方...
    Tiny_ae3d閱讀 1,658評論 0 1
  • 1 前言 HTML 作為描述網頁結構的超文本標記語言,一直有著廣泛的應用。本文檔的目標是使 HTML 代碼風格保持...
    山豆山豆閱讀 1,197評論 2 6
  • 通用規范 tab鍵用兩個空格代替 因為在不同系統的編輯工具對tab解析不一樣,windows下的tab鍵是占四個空...
    戈薇薇閱讀 493評論 0 1
  • 1:通用規范 tab鍵用兩個空格代替 因為在不同系統的編輯工具對tab解析不一樣,windows下的tab鍵是占四...
    糖心m閱讀 488評論 0 1
  • 通用規范 tab鍵用兩個空格代替 因為在不同系統的編輯工具對tab解析不一樣,windows下的tab鍵是占四個空...
    米塔塔閱讀 430評論 0 7