vue元件命名指南,不為取名而糾結

涼風羽Richard發表於2018-03-15

前言

自古中國取名文化博大進深,往往取一個好的名字而絞盡腦汁.那麼一個好名字能夠帶來什麼呢?

  1. 名字的內涵必需和使用者固有的本性相配套
  2. 不和名人重名、不易重名、創意新穎,真正體現通過名字以區分人的作用
  3. 響亮上口讀起來流暢好聽,協音美好,因為聲音涵意同樣影響人,對人也有條件反射
  4. 易寫易記錄忌諱筆畫過於繁索

在程式中的命名又何嘗不是呢?

  1. 元件的命名和它的功能相配套
  2. 不與其他業務元件重名,讓人一眼就區分
  3. 不一定要好聽酷炫,但是實用.讓開發者產生條件反射,看到命名就會想到這個元件的實用場景
  4. 易寫易記,短小卻精煉,不繁瑣

單檔案元件的大小寫

單檔案元件要麼始終以大寫字母開頭(PascalCase)要麼始終用-連線(kebab-case)單詞大寫開頭對於程式碼編輯器的自動補全最為友好,因為這使得我們在 JS(X) 和模板中引用元件的方式儘可能的一致。然而,混用檔案命名方式有的時候會導致大小寫不敏感的檔案系統的問題,這也是橫線連線命名同樣完全可取的原因。

基礎元件命名

應用特定樣式和約定的基礎元件 (也就是展示類的、無邏輯的或無狀態的元件) 應該全部以一個特定的字首開頭,比如 Base、App 或 V。

**反例**
    components/
    |- button.vue
    |- loading.vue
    |- slide.vue
複製程式碼
**正例**
    components/
    |- BaseButton.vue
    |- BaseLoading.vue
    |- BaseSlide.vue
複製程式碼

單個活躍例項的元件

單個活躍例項的元件應該以 The 字首命名,以示其唯一性
這不意味著元件只可用於一個單頁面,而是每個頁面只使用一次。這些元件永遠不接受任何 prop,因為它們是為你的應用定製的,而不是它們在你的應用中的上下文。如果你發現有必要新增 prop,那就表明這實際上是一個可複用的元件,只是目前在每個頁面裡只使用一次。

**反例**
    components/
    |- SaleManage.vue
    |- ImportExcel.vue
複製程式碼
**正例**
    components/
    |- TheSaleManage.vue
    |- TheImportExcel.vue
複製程式碼

緊密耦合的元件名

和父元件緊密耦合的子元件應該以父元件的命名為字首.如果一個元件只在其父元件某個場景下有意義,這層關係應該體現在元件名上,因為編輯器通常按照首字母順序組織檔案.

**反例**
    components/
    |- SearchBox.vue
    |- SearchItem.vue
    |- SearchButton.vue
複製程式碼
**正例**
    components/
    |- SearchBox.vue
    |- SearchBoxItem.vue
    |- SearchBoxButton.vue
複製程式碼

元件命中的單詞順序

元件名應該以高階別的 (通常是一般化描述的) 單詞開頭,以描述性的修飾詞結尾。

**反例**
    components/
    |- ClearSearchButton.vue
    |- ExcludeFromSearchInput.vue
    |- LaunchOnStartupCheckbox.vue
    |- RunSearchButton.vue
    |- SearchInput.vue
    |- TermsCheckbox.vue
複製程式碼
**正例**
    components/
    |- SearchButtonClear.vue
    |- SearchButtonRun.vue
    |- SearchInputQuery.vue
    |- SearchInputExcludeGlob.vue
    |- SettingsCheckboxTerms.vue
    |- SettingsCheckboxLaunchOnStartup.vue
複製程式碼

完整單詞的元件名

編輯器中的自動補全已經相當友好,讓書寫長的元件名的代價已經可以微乎其微,同樣的效率更易於理解,何樂而不為?

**反例**
    components/
    |- soManage.vue
    |- woManage.vue
複製程式碼
**正例**
    components/
    |- SaleOrderManage.vue
    |- WorkOrderManage.vue
複製程式碼

prop的大小寫

在宣告時始終採用(camelCase),在模板和 JSX 中應該始終使用( kebab-case)
單純的遵循每個語言的約定。在 JavaScript 中更自然的是 camelCase。而在 HTML 中則是 kebab-case。

**反例**
props: {
  'greeting-text': String
}
<WelcomeMessage greetingText="hi"/>
複製程式碼
**正例**
props: {
  greetingText: String
}
<WelcomeMessage greeting-text="hi"/>
複製程式碼

vue元件命名指南,不為取名而糾結

相關文章