前端規(guī)范

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

<font face="微軟雅黑">前端代碼風(fēng)格</font>

一、文件命名

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

二、HTML 編碼規(guī)范

2.1 標(biāo)簽與屬性

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

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

eg: 如項(xiàng)目名過長可酌情縮寫

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

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

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

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

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

4、標(biāo)簽屬性順序

屬性應(yīng)該按照特定的順序出現(xiàn)以保證易讀性;

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

class 是為高可復(fù)用組件設(shè)計(jì)的,所以應(yīng)處在第一位;

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

2.2 風(fēng)格

1、格式縮進(jìn)

html 編碼統(tǒng)一格式化顯示,使用一個(gè) Tab 鍵進(jìn)行分層縮進(jìn) (2 個(gè)空格寬度),使整個(gè)頁面結(jié)構(gòu)層次清晰,方便閱讀和修改。

2、模塊注釋

html 較大獨(dú)立模塊之間注釋格式統(tǒng)一使用:

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

或者:

<!-- XXX模塊 -->

<!-- /XXX模塊 -->

三、CSS 編碼規(guī)范

3.1 CSS 引用規(guī)范

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

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

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

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

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

3、引號

最外層統(tǒng)一使用雙引號;

url 的內(nèi)容要用引號;

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

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

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

3.2 雜項(xiàng)

  1. 不允許有空的規(guī)則;

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

  3. 去掉小數(shù)點(diǎn)前面的 0;

  4. 去掉數(shù)字中不必要的小數(shù)點(diǎn)和末尾的 0;

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

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

  7. 無前綴的標(biāo)準(zhǔn)屬性應(yīng)該寫在有前綴的屬性后面;

  8. 不要在同個(gè)規(guī)則里出現(xiàn)重復(fù)的屬性,如果重復(fù)的屬性是連續(xù)的則沒關(guān)系;

  9. 不要在一個(gè)文件里出現(xiàn)兩個(gè)相同的規(guī)則;

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

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

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

四、 JavaScript 規(guī)范(jslint/eslint)

4.1 JS 注釋規(guī)則

1、文件頭部注釋

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

2、方法注釋

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

3、單行注釋

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

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

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

4.2 JS 命名規(guī)則

1、方法命名

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

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

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

2、 雜項(xiàng)

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

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

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

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

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

6、不要在一句代碼中單單使用構(gòu)造函數(shù),記得將其賦值給某個(gè)變量;

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

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

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

10、不要在應(yīng)該做比較的地方做賦值;

11、debugger,console 不要出現(xiàn)在線上的代碼里;

12、數(shù)組中不要存在空元素;

13、不要在循環(huán)內(nèi)部聲明函數(shù);

4.3 vue 風(fēng)格

1、prop 定義盡量詳細(xì)

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

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

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

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

5.其他

其他未被提及的 具體依照 eslint 規(guī)范

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 最佳原則 堅(jiān)持制定好的代碼規(guī)范。無論團(tuán)隊(duì)人數(shù)多少,代碼應(yīng)該同出一門。如果你想要為這個(gè)規(guī)范做貢獻(xiàn)或覺得有不合理的地方...
    Tiny_ae3d閱讀 1,714評論 0 1
  • 1 前言 HTML 作為描述網(wǎng)頁結(jié)構(gòu)的超文本標(biāo)記語言,一直有著廣泛的應(yīng)用。本文檔的目標(biāo)是使 HTML 代碼風(fēng)格保持...
    山豆山豆閱讀 1,273評論 2 6
  • 通用規(guī)范 tab鍵用兩個(gè)空格代替 因?yàn)樵诓煌到y(tǒng)的編輯工具對tab解析不一樣,windows下的tab鍵是占四個(gè)空...
    戈薇薇閱讀 552評論 0 1
  • 1:通用規(guī)范 tab鍵用兩個(gè)空格代替 因?yàn)樵诓煌到y(tǒng)的編輯工具對tab解析不一樣,windows下的tab鍵是占四...
    糖心m閱讀 527評論 0 1
  • 通用規(guī)范 tab鍵用兩個(gè)空格代替 因?yàn)樵诓煌到y(tǒng)的編輯工具對tab解析不一樣,windows下的tab鍵是占四個(gè)空...
    米塔塔閱讀 492評論 0 7

友情鏈接更多精彩內(nèi)容