-
Notifications
You must be signed in to change notification settings - Fork 0
web前端開發指南
zzzgit edited this page Jul 3, 2016
·
9 revisions
本文檔的目的在於指導前端工程師使用同一個規範和風格進行開發工作,使工作方式有本可依。
傳統項目組織結構如下圖
project
--index.html
--css
--common.css
--base.css
--js
--common.js
--imgs
--templates
--fonts
單頁面項目組織結構如下圖
公共文件命名
-
index.html
為項目的入口。 -
base.css
為框架級別的公共樣式文件,common.css
為項目級別的公共樣式文件。 -
common.js
為項目級別的公共類庫和函數庫。
- 一般情況下,子節點的位置不應該超出父節點的範圍。
- 圖片盡量用背景的方式,如果圖片需要縮放,則用
image
標籤。 - 非行內元素橫排,盡量用
inline-block
方式實現,文字環繞,則用float
方式實現。 - 圓角效果使用背景圖片實現,無法做到的,則不支持圓角。
- 模板文件中可以包含結構跟樣式,可以包含外聯的script標籤,但是不能包含內聯的script。
- 原則上,所有文件名都以
basename
+extension
的形式構成。 -
basename
中的單詞,用period
(.
)隔開。 - 文件名中不能出現空格。
- 同一個頁面元素的背景圖片,如果有多種狀態,圖片名應該反映出其代表的狀態,如
phone.normal.jpg
、phone.active.jpg
、phone.disabled.jpg
。 - js文件的版本號用dash隔開,如
my.plugin-1.2.js
。
- 基本原則,
BEM命名法
為主,原子類命名法
和狀態標記
為輔。 - DOM節點被分析為
block
和element
兩類,element
包含於block
之內。 - 將節點樹平面化,一般情況下,層次結構簡化成只有
block
和element
兩級。 - 對於極少數節點數比較多,邏輯關係比較複雜的
block
,可以分析成三級,即B-B-E
。 - 各個層級用
dash
(-
)分隔開,即B-E
。 - 各個層級原則上只用一個單詞表示,如
footer-logo
。如果一個單詞難以清楚表達,則用詞組,詞組的各個單詞用underscore
分隔開,如science_fiction-harry_potter
。 - 為了達到重用的目的,少量常用的樣式可以使用原子類,比如移動端項目中的背景圖片
.background{background-size:100% 100%}
。 - 狀態標記是用來表明該元素在元素關係,或者UI邏輯中,所處的狀態。數量有限,且使用約定俗成的單詞,如
active
、firs
、last
、disabled
、hidden
、odd
、even
、checked
。
- 基本原則,變量名+後綴。
- 其中變量名是必須的,採用駝峰式命名。
- 後綴為可選的,用以表明變量的數據類型。
- 當變量名本身可能跟其他變量名相混的時候,就需要加上後綴,如
studentName_s
與studentName_j
。 - 後綴與其代表的數據類型,對應關係如下表。
變量後綴與數據類型對應關係表
後綴 | 數據類型 |
---|---|
i | integer |
n | number |
s | string |
j | jquery |
e | element |
d | date |
o | object |
a | array |
f | function |
cb | 回調函數 |
- 不應使用過時和廢棄的
API
,如jQuery
的click
、load
等函數。 - 頁面加載後的回調函數,寫成
$(function)
的形式,而不應寫成$(document).ready(function)
的形式。 -
class
屬性原則上用於控制樣式,附帶功能是作為javascript
的選擇器。 -
id
屬性不用於控制樣式,只用於javascript
中的元素選擇。 - 需要操作一組或者一個
element
時,如果沒有現成class
選擇器可用,則需要添加class
或者id
,操作一組元素,用class
,操作一個元素,用id
。 -
script
標籤只能放在body
或head
標籤裡面,不能放在二者的外面。
- 使用
prettify
插件進行代碼格式化。 - 使用
tab
進行縮進,而不是空格。 - 單行注釋雙斜杠後面需加空格。
- 單行注釋中間如果沒有逗號,則句末不用加句號。
- 一行代碼末尾不應加空格。
-
if
/else
/for
/while
/try
語句不應省略花括號。
- css類名,為何使用三種方式組合?