前端入門必知開發規範

本文主要從以下幾個方面來概述前端的開發規範

1. 目錄構建規範

2. 前端命名規範

3. 前端工作規範

4. 開發文檔的書寫規範

1. 前端目錄構建規範

我們從命名原則、根目錄、業務邏輯等方面進行目錄構建

1.1 命名原則:

  • 簡潔明瞭(如下:)
  • src 源代碼

  • img 圖片資源

  • js JavaScript腳本

  • dep 第三方依賴包

  • 不使用複數(如下:)
  • 不使用 imgs docs

1.2 根目錄(root)結構按職能劃分(如下:)

  • src 源代碼(邏輯)

  • doc 文檔

  • dep 第三方依賴包

  • test 測試

1.3 根據業務邏輯進行文件夾的劃分(如下:)

  • src目錄名詞解釋:

  • common 公共資源

  • public/static 靜態資源

  • component 組件

  • view/tpl 模板文件


src

common 公共資源

img

logo.png

sprites.png

css

reset.css

js

conf.js 項目的配置文件

public/static 靜態資源

js

css

tpl

index.html

shopcar.html

img

component 組件

home

shopcar

login

register

user

list

detail

view/tpl 項目模板 tpl 是 template的縮寫

1.4 總結:

以上目錄開發規範有兩種使用途徑

1. 使用前端工程化工具如webpack、gulp等進行手動打造

2. 利用框架提供的腳手架工具進行修改

2. 前端命名規範

這部分內容我從以下兩個方面來進行講解

· CSS命名規範

o BEM規範

o OOCSS規範

· javaScript編寫規範

o jslint

o eslint

2.1 css命名規範

2.1.1 BEM規範

  • 概念:

Block Element Modifier,它是一種前端命名方法,旨在幫助開發者實現模塊化、可複用、高可維護性和結構化的CSS代碼。

  • BEM是定義了一種css class的命名規範,每個名稱及其組成部分都是存在一定的含義。

  • 由拉丁字母, 數字, -組成css的單個名稱.

  • Block Element Modifier

  • 獨立且有意義的實體, e.g. header, container, menu, checkbox, etc.

  • Block的一部分且沒有獨立的意義, e.g. header title, menu item, list item, etc.

  • Blocks或Elements的一種標誌,可以用它改變其表現形式、行爲、狀態. e.g. disabled, checked, fixed, etc.

  • Naming

由拉丁字母, 數字, -組成css的單個名稱.

  • Block

使用簡潔的前綴名字來命名一個獨立且有意義的抽象塊或組件。


<!-- e.g. -->

.block

.header

.site-search

  • Element

使用__連接符來連接Block 和 Element。


<!-- e.g. -->

.block__element

.header__title

.site-search__field

  • Modifier

使用--連接符來連接Block 或 Element 和 Modifier。


<!-- e.g. -->

.block--modifier

.block__element--modifier

.header--hide

.header__title--color-red

.site-search__field--disabled

  • 實例

<!-- HTML文件 -->

<form class="form form--theme-xmas form--simple">

<input class="form__input" type="text" />

<input class="form__submit form__submit--disabled" type="submit" />

</form>


<!-- CSS -->

.form {}

.form--theme-xmas {}

.form--simple {}

.form__input { }

.form__submit {}

.form__submit--disabled {}

  • Buttons實例

<!-- HTML文件 -->

<button class="button">

Normal button

</button>

<button class="button button--state-success">

Success button

</button>

<button class="button button--state-danger">

Danger button

</button>


<!-- CSS文件中 -->

.button {

display: inline-block;

border-radius: 3px;

padding: 7px 12px;

border: 1px solid #D5D5D5;

background-image: linear-gradient(#EEE, #DDD);

font: 700 13px/18px Helvetica, arial;

}

.button--state-success {

color: #FFF;

background: #569E3D linear-gradient(#79D858, #569E3D) repeat-x;

border-color: #4A993E;

}

.button--state-danger {

color: #900;

}

2.1.2 OOCSS規範

  • 概念

Object Oriented CSS,面向對象的CSS,旨在編寫高可複用、低耦合和高擴展的CSS代碼。

OOCSS是以面向對象的思想去定義樣式,將抽象和實現分離,抽離公共代碼。

  • 總結:

將重用的東西當做一個對象來看, 然後將不同的屬性 放到另一個類名去


<!-- 舉例: -->

.list{

background: #fff;

}

.list--width{

width: 300px;

}

2.2 js編寫代碼規範

· <u>jslint</u>

· <u>eslint</u>

3. 前端工作規範

我們從 日報 、 週報以及郵件格式三個方面來了解

3.1 日報內容如下

  • 上午你做什麼

  • 下午你做了什麼

  • 遇到什麼問題?是否有解決?

  • 明天的計劃?(明天準備做什麼)

  • 最後在內容最後面跟上日期

3.2 週報內容如下:

· 2019.05.25-2019.06.2週報:

i. 本週工作主要內容:

§ 完成了宏視雲h5播放器升級及大數據上報;

§ 修復xk-h5播放器bug:在三星手機自帶瀏覽器無法進行滑動seek;

§ admin-console後臺管理系統初步完成終端訪問頁面和數據統計概覽頁面的製作;

ii. 工作中存在的主要問題:

iii. - webserver大數據展示頁面移植到admin-console後臺管理系統存在bootstrap與jquery.easyui衝突等幾個兼容性問題;

iv. - 解決這個問題的思路可能不是最有效的方法,可能使用iframe會快些;使用iframe存在如何在easyui頁面控制iframe頁面及如何在瀏覽器窗口改變時,iframe也跟着改變等問題;

v. 下週工作計劃:

§ 完成上週未完成的admin-console大數據展示頁面的製作;

§ 完成工作以後,如果有時間的話嘗試下用iframe解決;

§ 詢問師兄有沒有可以幫忙做的工作;

3.3 常用郵件格式如下:

1\. 明確郵件發送誰?

o 參與者: 一定要想清楚, 如果不清楚, 記得問一下你直接上司(同事)

2\. 郵件的主題:

o 主題必須有且僅有一個

o 必要時, 可以添加: 【請批閱】 、 等字眼

3\. 郵件正文

o 稱呼要明確:

o 條理分明 舉例:

o 各位領導好:

o 以下內容是xxx 請熟知/請批閱

4\. 署名:

o 什麼部分 什麼職位 什麼姓名 什麼時間

5\. 附件

o 需要說明附件是做什麼的?

6\. 轉發;

o 需要對原郵件進行說明。,然後寫清楚自己的意圖

4. 開發文檔的書寫規範

這部分內容從以下幾個部分進行說明

· html規範

· css規範

· js規範

4.1 html規範

1\. 標籤上屬性的順序建議如下: class ( class 是爲高可複用組件設計的,所以應處在第一位) id name (id 更加具體且應該儘量少使用,所以將它放在第二位) data-**src for type href value placeholder title alt aria-** role required readonly disabled

2\. id/class 命名規則: BEM OOCSS SMACSS(擴展)

3\. 註釋規範(最好用英文)

4\. <div class="container">

5\. <!-- header--start -->

6\. <header></header>

7\. <!-- header--end -->

8.

9\. <!-- content--start -->

10\. <div class="content">

11.

12\. </div>

13\. <!-- content--end -->

14.

15\. <!-- footer--start -->

16\. <footer>

17.

18\. </footer>

19\. <!-- footer--end -->

20\. </div>

4.2 css規範

21. 屬性順序

o 位置屬性 ( position top right z-index display float etc.)

o 大小 ( width height padding margin etc.)

o 文字系列 ( font line-height letter-spacing color text-align ect.)

o 背景 ( background border etc.)

o 其他 ( animation transition etc.)

o 以及註釋的寫法

o <!-- 舉例: -->

o .go--top{

o position: fixed;

o right:20px;

o bottom: 50px;

o z-index: 1000;

o display:block;

o

o width: 50px;

o height: 200px;

o

o font-size: 16px;

o

o background: #ccc;

o

o opactiy: 0.5;

o transition: all 0.5s;

o

o <!-- 註釋 -->

o }

22. 儘量不使用選擇器 (css3選擇器)

.content.first-child

<!-- 舉例: -->

<div class="content">

<ul>

<li>

<a href=""></a>

<a href=""></a>

<a href=""></a>

</li>

</ul>

<ul>

<li>

<a href=""></a>

<a href=""></a>

<a href=""></a>

</li>

</ul>

</div>

23. 屬性使用縮寫:

24\. <!-- 舉例: -->

25\. body{

26\. margin: 10px 0;

27\. background: url('./img.png') center;

28\. }

29\. 去掉小數點前面的 0

30\. body{

31\. margin: 10px .8px;

32\. background: url('./img.png') center;

33\. }

4.3 Js規範

34. 語言規範

o 聲明變量必須加上 let 關鍵字.不要再使用 var

o 優先使用箭頭函數

o 使用模板字符串取代連接字符串

35. 使用分號

o 如果僅依靠語句間的隱式分隔,有時會很麻煩,使用分號更能清楚哪裏是語句的起止,而且有些情況下,漏掉分號會出 BUG

36. 塊內函數聲明

o 不要在塊內聲明一個函數,e.g.

o if (x) {

o function zxm() {}

o }

o 如果確實需要,使用函數表達式來初始化變量

o if (x) {

o let foo = function() {}

o }

37. 循環注意

o forEach

o map

o filter

o every

o some

o for..in

o for...of

o for循環 while

o do...while

38. 命名規範:

o camel 表示駝峯命名法 pascal表示 首字母大寫

o 變量名: 必須使用 camel 命名法

o 參數名: 必須使用 camel 命名法

o 函數名: 必須使用 camel 命名法

o 方法/屬性: 必須使用 camel 命名法

o 私有 ( 保護 ) 成員: 必須以下劃線開頭

o 常量名: 必須使用全部大寫的下劃線命名法,e.g. XTEP_HOST_API

o 類名: 必須使用 pascal 命名法

o 枚舉名: 必須使用 pascal 命名法

o 枚舉的屬性: 必須使用全部大寫的下劃線命名法,e.g. XTEP_HOST_API

o 命名空間: 必須使用 camel 命名法

o 語義: 命名同時還需要關注語義

39. 聲明:

o var let const 應該放在function 已進入函數的時候

o 註釋變量的功能及代表的含義,且應以字母順序排序.每個變量單獨佔一行以便添加註釋

o 舉例:  <!--  -->

o var totalPrice = 1; //totalPrice表示商品購物車的總價 √

o var num = 10,totalNum = 100 ; 不建議

40. 回調函數規範:

回調函數統一使用 Promise 函數,回調成功的參數統一爲 res,錯誤參數爲 err

let callback = new Promise((resolve, reject) => {

if (/* 異步操作成功 */){

resolve(value);

} else {

reject(err);

}

});

callback.then((res) => {

console.log('成功回調!', res);

}).catch((err) => {

console.log('失敗回調!', err);

});

41. 標點規範

js中統一使用反引號()或是單引號(''), 不使用雙引號("")

42. 函數默認值

函數默認值寫在其他參數後面

function zxm(a,b,name = 'zxm'){

console.log(name)

}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章