vue組件,數據通信,樣式,JS的規范規則。對vue官方風格指南的總結歸類並加入自己的規范,在團隊小組中使用。
1.項目名/文件目錄命名:
kebab-case(- 連接):
項目名:vue-admin
文件目錄:table-module
2.組件規范:
2.1 組件名為多個單詞:
組件名應該始終是多個單詞的,根組件 App 以及 <transition>、<component> 之類的 Vue 內置組件除外。
這樣做可以避免跟現有的以及未來的 HTML 元素相沖突,因為所有的 HTML 元素名稱都是單個單詞的。
2.2 單文件組件的文件名大駝峰或者橫線連接(為了import時更方便,項目使用大駝峰):
單詞大寫開頭對於代碼編輯器的自動補全最為友好。
2.3 緊密耦合的組件名:
和父組件緊密耦合的子組件應該以父組件名作為前綴命名。
如果一個組件只在某個父組件的場景下有意義,這層關系應該體現在其名字上。
因為編輯器通常會按字母順序組織文件,所以這樣做可以把相關聯的文件排在一起。
components/
|- TodoList.vue
|- TodoListItem.vue
|- TodoListItemButton.vue
2.4 組件名中的單詞順序:
組件名應該以高級別的 (通常是一般化描述的) 單詞開頭,以描述性的修飾詞結尾。
比如對於一個帶搜索表單的應用來說,它可能包含這樣的組件:
components/
|- ClearSearchButton.vue
|- ExcludeFromSearchInput.vue
|- LaunchOnStartupCheckbox.vue
|- RunSearchButton.vue
|- SearchInput.vue
|- TermsCheckbox.vue
注意到了,我們很難看出來哪些組件是針對搜索的。現在我們來根據規則給組件重新命名:
components/
|- SearchButtonClear.vue
|- SearchButtonRun.vue
|- SearchInputExcludeGlob.vue
|- SearchInputQuery.vue
|- SettingsCheckboxLaunchOnStartup.vue
|- SettingsCheckboxTerms.vue
因為編輯器通常會按字母順序組織文件,所以現在組件之間的重要關系一目了然。
2.5 自閉合組件:
在單文件組件、字符串模板和 JSX 中沒有內容的組件應該是自閉合的——但在 DOM 模板里永遠不要這樣做。
注:
單文件組件:后綴.vue文件
DOM 模板:直接在HTML頁面掛載的模板,就是原先寫在頁面上的,能被瀏覽器識別的HTML結構,會在一加載就被瀏覽器渲染,然后js獲取dom節點的內容,
形成dom模板。
字符串模板:Vue實例中的template屬性所對應的字符串
示例:
Vue.component('child', {
template: '<span>{{ type }}</span>'
})
2.數據通信規范:
3.1 Prop 定義應該盡量詳細:
在你提交的代碼中,prop 的定義應該盡量詳細,至少需要指定其類型。
3.2 Prop 名大駝峰,在模板和 JSX 中應該始終使用 kebab-case(- 連接)。
props: {
greetingText: String
}
<WelcomeMessage greeting-text="hi"/>
4.組件樣式規范:
4.1 組件樣式設置作用域:
對於應用來說,頂級 App 組件和布局組件中的樣式可以是全局的,但是其它所有組件都應該是有作用域的,在style標簽加上scoped(<style scoped>)。
這條規則只和單文件組件(文件擴展名為 .vue)有關。
4.2 scoped 中的元素選擇器:
在 scoped 樣式中,類選擇器比元素選擇器更好,因為大量使用元素選擇器是很慢的。
4.3 采用SCSS寫法,CSS命名
1.采用SCSS寫法:<style scoped lang = "scss">
2.類名使用小寫字母,以中划線分隔
3.id采用駝峰式命名
4.scss中的變量、函數、混合、placeholder采用駝峰式命名
5.JS命名規范:
通用命名規范:
1.所有變量必須是有意義的英文,禁止拼音;
2.變量命名采用小駝峰法;
3.常量必須所有單詞大寫,並且每個單詞間加下划線;
變量命名規范:
后端字段與后端字段為准,不應用此規范
類型前綴 + 有意義的單詞
1.字符串:sXXX,如:sName,sHtml;
2.數字:nXXX,如:nPage,nTotal;
3.邏輯:bXXX,如:bChecked,bHasLogin;
4.數組:aXXX,如:aList,aGroup;
5.正則:rXXX,如:rDomain,rEmail;
6.函數:fXXX,如:fGetList;
7.DOM節點:dXX,如:dDiv,dSpan;
8.其他類型:oXXX,如:oButton,oDate;
9.特殊簡寫:小范圍作用域臨時變量,如函數內部的局部變量或參數:o(Object)、e(Element)、evt(event)、err(errot)等;
循環變量:i、j、k以此類推;
注此JS規范參考MAX Yu