前端程式碼規範

redhack發表於2018-01-17

一:html規範: 檔案以<!doctype>首行頂格開始,宣告charset

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>NEC:更好的CSS方案</title>
<meta name="keywords" content=""/>
<meta name="description" content=""/>
<meta name="viewport" content="width=device-width"/>
<link rel="stylesheet" href="css/style.css"/>
<link rel="shortcut icon" href="img/favicon.ico"/>
<link rel="apple-touch-icon" href="img/touchicon.png"/>
</head>
<body>
</body>
</html>
複製程式碼

結構順序與視覺設計保持一致,如果便於搜尋引擎抓取可將重要內容在html結構順序上提前,除了表現具有明顯表格形式的資料,不選table佈局 結構,表現,行為三者分離,避免內聯,使用link引入css,放在head中 使用script引入js檔案,放在底部。 保持良好的樹形結構

<body>
<!-- 側欄內容區 -->
<div class="m-side">
    <div class="side">
        <div class="sidein">
            <!-- 熱門標籤 -->
            <div class="sideblk">
                <div class="m-hd3"><h3 class="tit">熱門標籤</h3> </div>
                ...
            </div>
            <!-- 最熱TOP5 -->
            <div class="sideblk">
                <div class="m-hd3"><h3 class="tit">最熱TOP5</h3> <a href="#" class="s-fc02 f-fr">更多»</a></div>
                ...
            </div>
        </div>
    </div>
</div>
<!-- /側欄內容區 -->
</body>
複製程式碼

在大的模組之間用空行隔開,使模組更清晰。每一個塊級元素都另起一行,每一行都使用Tab縮排對齊(head和body的子元素不需要縮排)。刪除冗餘的行尾的空格。 減少標籤的巢狀,類名越少越好, 結構多時要有 開始註釋:(文案兩頭空格)。 和結束註釋:(文案前加“/”符號,類似標籤的閉合)。 嚴格的巢狀 儘可能以最嚴格的xhtml strict標準來巢狀,比如內聯元素不能包含塊級元素等等。 正確閉合標籤且必須閉合。 嚴格的屬性 屬性和值全部小寫,每個屬性都必須有一個值,每個值必須加雙引號。 沒有值的屬性必須使用自己的名稱做為值(checked、disabled、readonly、selected)。 可以省略style標籤和script標籤的type屬性。 標籤 語義 巢狀常見錯誤 常用屬性(加粗的為不可缺少的或建議的) 常用的標籤:

<a></a>	超連結/錨	a不可巢狀a	href,name,title,rel,target
<br />	換行	 	 
<button></button>	按鈕	不可巢狀表單元素	type,disabled
<dd></dd>	定義列表中的定義(描述內容)	只能以dl為父容器,對應一個dt	 
<del></del>	文字刪除	 	 
<div></div>	塊級容器	 	 
<dl></dl>	定義列表	只能巢狀dt和dd	 
<dt></dt>	定義列表中的定義術語	只能以dl為父容器,對應多個dd	 
<em></em>	強調文字	 	 
<form></form>	表單	 	action,target,method,name
<h1></h1>	標題	從h1到h6,不可巢狀塊級元素	 
<iframe></iframe>	內嵌一個網頁	 	frameborder,width,height,src,scrolling,name
<img />	影象	 	alt,src,width,height
<input />	各種表單控制元件	 	type,name,value,checked,disabled,maxlength,readonly,accesskey
<label></label>	標籤為input元素定義標註	 	for
<li></li>	列表項	只能以ul或ol為父容器	 
<link />	引用樣式或icon	不可巢狀任何元素	type,rel,href
<meta />	文件資訊	只用於head	content,http-equiv,name
<ol></ol>	有序列表	只能巢狀li	 
<option></option>	select中的一個選項	僅用於select	value,selected,disabled
<p></p>	段落	不能巢狀塊級元素	 
<script></script>	引用指令碼	不可巢狀任何元素	type,src
<select></select>	列表框或下拉框	只能巢狀option或optgroup	name,disabled,multiple
<span></span>	內聯容器	 	 
<strong></strong>	強調文字	 	 
<style></style>	引用樣式	不可巢狀任何元素	type,media
<sub></sub>	下標	 	 
<sup></sup>	上標	 	 
<table></table>	表格	只可巢狀表格元素	width,align,background,cellpadding,cellspacing,summary,border
<tbody></tbody>	表格主體	只用於table	 
<td></td>	表格中的單元格	只用於tr	colspan,rowspan
<textarea></textarea>	多行文字輸入控制元件	 	name,accesskey,disabled,readonly,rows,cols
<tfoot></tfoot>	表格表尾	只用於table	 
<th></th>	表格中的標題單元格	只用於tr	colspan,rowspan
<thead></thead>	表格表頭	只用於table	 
<title></title>	文件標題	只用於head	 
<tr></tr>	表格行	巢狀於table或thead、tbody、tfoot	 
<ul></ul>	無序列表	只能巢狀li	 
複製程式碼

html應該使內容語義化: 內容型別決定使用的語義標籤, 加強“資源型”內容的可訪問性和可用性 在資源型的內容上加入描述文案,比如給img新增alt屬性,在audio內加入文案和連結。 加強“不可見”內容的可訪問性 背景圖上的文字應該同時寫在html中,並使用css使其不可見,有利於搜尋引擎抓取你的內容,也可以在css失效的情況下看到內容。 使用實體: 常用HTML字元實體(建議使用實體): 字元 名稱 實體名 實體數

"	雙引號	&quot;	&#34;
&	&符	&amp;	&#38;
<	左尖括號(小於號)	&lt;	&#60;
>	右尖括號(大於號)	&gt;	&#62;
 	空格	&nbsp;	&#160;
&emsp;	中文全形空格	 	&#12288;
常用特殊字元實體(不建議使用實體):
字元	名稱	實體名	實體數
¥	元	&yen;	&#165;
¦	斷豎線	&brvbar;	&#166;
©	版權	&copy;	&#169;
®	註冊商標R	&reg;	&#174;
™	商標TM	&trade;	&#8482;
·	間隔符	&middot;	&#183;
«	左雙尖括號	&laquo;	&#171;
»	右雙尖括號	&raquo;	&#187;
°	度	&deg;	&#176;
×	乘	&times;	&#215;
÷	除	&divide;	&#247;
‰	千分比	&permil;	&#8240;
複製程式碼

避免css衝突或被覆蓋,使用行內樣式

<div style="width:100px;height:100px;"></div>
複製程式碼

避免盒模型錯誤,doctype的不確定性,doctype影響最大的就是盒模型的解析,將盒模型拆分開來寫,我們將原本要定義在某個div上的height和padding分別寫到這個div和他的父元素或子元素上,

<div style="height:100px;padding:20px 0;"></div>
<div style="padding:20px 0;"><div style="height:100px;"></div></div>
複製程式碼
<!DOCTYPE html>
複製程式碼

這個文件生命是一個html5的檔案,這個檔案的標籤是符合html5規範的, 前端優化:1:靜態資源,製作雪碧圖,減少請求返回的資料量,壓縮HTML,CSS,JS檔案,小圖示用iconfont代替。 2頁面渲染速度優化:css放在頂端,優先渲染,js放在底部避免阻塞,服務端如果用node的話,使用compress可開啟壓縮, var express = require('express'); var compress = require('compression'); var app = express(); app.use(compress()); vue框架特點:1:mvvm:雙向資料繫結,2:元件化:在vue中所有的都是元件化,3模組化:。 應用:可以用在webapp,spa(單頁面應用) 面試:h5新特性:語義化更好的內容元素,article,footer,header,nav,section,,表單控制元件:calendar,date,time,email,url,search,video,audio, 資料儲存:本地離線儲存資料localstorage長期儲存資料,瀏覽器關閉後不丟失,sessionStorage:儲存的資料,瀏覽器關閉後自動刪除 7,8號 vue元件的封裝,元件懶載入,打包優化 https:是瀏覽器和伺服器建立的加密通道,處理網路中的應用層, 元件懶載入原理:配置webpack,按需引入 模組化將複雜系統分解成單一可管理,解耦成可替換模組,模組之間互不影響,可維護性高 require與import的區別 require是amd規範,import是nodejs規範

相關文章