由於avalon以綁定屬性實現對DOM的選擇與操作,頁面的美觀與調試就變得至關重要。參照boostrap的HTML規范,制定如下
屬性排列的規范
- class (class, id, name與瀏覽器的原生選擇器相關,因此需靠前 )
- id,name (這個定義的順序直接影響到元素的attributes中的特性節點的排列順序,id具有獨占性,慎用)
- data-* 這涉及到內部dataset對象的生成,並且表示組件的data-button-*屬性應排在只表示緩存的data-*屬性前面
- ms-* 沒有屬性值的排在有屬性值的前面, 依長度排列
- type title for hre f src style等原生屬性, 依長度排列
- 用戶自定義屬性, 依長度排列
<div class="ui-dialog ui-widget ui-widget-content ui-corner-all ui-front"
data-drag-handle="handle"
data-drag-before-start="beforeStart"
ms-draggable
ms-visible="toggle"
ms-css-width="width"
ms-css-height="height"
tabindex="-1"
style="position: absolute;"
>
<div class="ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix" >
<span class="ui-dialog-title" >{{title|html}}</span>
<button class="ui-dialog-titlebar-close"
data-button-text="false"
data-button-icon-primary="ui-icon-closethick"
ms-widget="button"
ms-click="close"
type="button"
>close</button>
</div>
</div>
注,我們應該盡可能少用ID,因為較新的瀏覽器中,它們都學IE5那樣直接把ID映射成一個全局變量,可能會引發各種奇怪問題。單頁應用的設計原則就是組件化,在這里面,不應有頁面的觀念,只應有組件的觀念。在組件系統里首先應該避免的就是全局變量,id不幸就是這方面的典型。
空格與換行的處理
標簽名如有屬性,第一個屬性必須與它同行,第二個屬性換行,位置於第一個屬性對齊,其他屬性照辦
屬性格式的規范
屬性名必須小寫, 屬性值必須用雙引號括起,對於表單元素的布爾屬性(如checked, selected, disabled)直接忽略屬性值
閉合的規則
自閉包標簽必須以“/>”結束,其他的格式都應為“<xxx>ffffffffffffffff</xxx>”
