<p>この記事では、Vue の合理化されたスタイルに関連する知識ポイントを説明し、興味のある友人が参照できるサンプル コードを共有します。
<p>前にも書きましたが
<p>Vue公式サイトのスタイルガイドは優先順位(必要、強く推奨、推奨、使用注意の順)で分類されており、コード間隔が広くて問い合わせが困難です。この記事はタイプ別に分類されており、いくつかの例や説明が省略されています
<p>コンポーネント名
<p>[コンポーネント名は複数の単語です] (必須)
<p>コンポーネント名は常に複数の単語である必要があります。ルートコンポーネントApp。 これを行うと、すべての HTML 要素名が単一の単語であるため、既存および将来の HTML 要素との競合が回避されます
//bad
Vue.component('todo', {})
//good
Vue.component('todo-item', {})
ログイン後にコピー
<p>[単一ファイルのコンポーネントのファイル名は、常に大文字で始まるか (PascalCase)、常に水平方向の行接続 (kebab-) にする必要があります。 case)] (強く推奨)
//bad
mycomponent.vue
//good
MyComponent.vue
//good
my-component.vue
ログイン後にコピー
<p> [基本コンポーネント名は特定のプレフィックスで始まる必要があります] (強く推奨) <p> 特定のスタイルと規則を適用する基本コンポーネント (つまり、ロジックやステートレス コンポーネントを持たない表示クラス) は、すべてBase、App、V
//bad
components/
|- MyButton.vue
|- VueTable.vue
|- Icon.vue
//good
components/
|- BaseButton.vue
|- BaseTable.vue
|- BaseIcon.vue
ログイン後にコピー
<p> などの特定のプレフィックスで始まります [アクティブなインスタンスを 1 つだけ持つ必要があるコンポーネントには、一意であることを示すためにプレフィックス
The
を付けて名前を付ける必要があります [強く推奨]
The
前缀命名,以示其唯一性】(强烈推荐)<p>这不意味着组件只可用于一个单页面,而是
每个页面只使用一次,这些组件永远不接受任何 prop
//bad
components/
|- Heading.vue
|- MySidebar.vue
//good
components/
|- TheHeading.vue
|- TheSidebar.vue
ログイン後にコピー
<p>【和父组件紧密耦合的子组件应该以父组件名作为前缀命名】(强烈推荐)
//bad
components/
|- TodoList.vue
|- TodoItem.vue
|- TodoButton.vue
//good
components/
|- SearchSidebar.vue
|- SearchSidebarNavigation.vue
ログイン後にコピー
<p>【组件名应该以高级别的 (通常是一般化描述的) 单词开头,以描述性的修饰词结尾】(强烈推荐)
//bad
components/
|- ClearSearchButton.vue
|- ExcludeFromSearchInput.vue
|- LaunchOnStartupCheckbox.vue
|- RunSearchButton.vue
|- SearchInput.vue
|- TermsCheckbox.vue
//good
components/
|- SearchButtonClear.vue
|- SearchButtonRun.vue
|- SearchInputQuery.vue
|- SearchInputExcludeGlob.vue
|- SettingsCheckboxTerms.vue
|- SettingsCheckboxLaunchOnStartup.vue
ログイン後にコピー
<p>【单文件组件和字符串模板中组件名应总是PascalCase——但在DOM模板中总是kebab-case】(强烈推荐)
//bad
<!-- 在单文件组件和字符串模板中 -->
<mycomponent/>
<myComponent/>
<!-- 在 DOM 模板中 -->
<MyComponent></MyComponent>
//good
<!-- 在单文件组件和字符串模板中 -->
<MyComponent/>
<!-- 在 DOM 模板中 -->
<my-component></my-component>
ログイン後にコピー
<p>【组件名应该倾向于完整单词而不是缩写】(强烈推荐)
//bad
components/
|- SdSettings.vue
|- UProfOpts.vue
//good
components/
|- StudentDashboardSettings.vue
|- UserProfileOptions.vue
ログイン後にコピー
<p>组件相关<p>【单文件组件、字符串模板和JSX中没有内容的组件应该自闭合——但在DOM模板里不要这样做】(强烈推荐)<p>自闭合组件表示它们不仅没有内容,而且刻意没有内容
//bad
<!-- 在单文件组件、字符串模板和 JSX 中 -->
<MyComponent></MyComponent>
<!-- 在 DOM 模板中 -->
<my-component/>
//good
<!-- 在单文件组件、字符串模板和 JSX 中 -->
<MyComponent/>
<!-- 在 DOM 模板中 -->
<my-component></my-component>
ログイン後にコピー
<p>【为组件样式设置作用域】(必要)<p>这条规则只和单文件组件有关。
不一定要使用
scoped
これは、コンポーネントが 1 つのページでのみ使用できるという意味ではありませんが、ページごとに 1 回しか使用できません。これらのコンポーネントは prop<p>
//bad
<template><button class="btn btn-close">X</button></template>
<style>
.btn-close {background-color: red;}
</style>
//good
<template><button class="btn btn-close">X</button></template>
<style scoped>
.btn-close {background-color: red;}
</style>
//good
<template><button :class="[$style.button, $style.buttonClose]">X</button></template>
<style module>
.btn-close {background-color: red;}
</style>
ログイン後にコピー
[ および親コンポーネントを受け入れることはありません。密結合したサブコンポーネントには、親コンポーネント名をプレフィックスとして使用する] (強く推奨) <p>
//good
<!-- ComponentA.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
<!-- ComponentB.vue -->
<script>/* ... */</script>
<template>...</template>
<style>/* ... */</style>
ログイン後にコピー
[コンポーネント名は高レベル (通常は一般的な説明) の単語で始まり、説明的な修飾子で終わる必要があります] (強く推奨) 推奨)<p>
//bad
Vue.component('TodoList', {})
Vue.component('TodoItem', {})
//good
components/
|- TodoList.vue
|- TodoItem.vue
ログイン後にコピー
[コンポーネント名単一ファイル コンポーネントおよび文字列テンプレートでは常に PascalCase である必要がありますが、DOM テンプレートでは常に kebab-case である必要があります] (強く推奨)<p>
[コンポーネント名は略語ではなく完全な単語になる傾向があります] (強く推奨) <p>
コンポーネント関連<p>[JSX 内のコンテンツのない単一ファイル コンポーネント、文字列テンプレート、およびコンポーネントは自己終了である必要があります - ただし、DOM テンプレートではこれを行わないでください] (強く推奨) <p>自己終了コンポーネントとは、コンテンツがないだけではないことを意味しますですが、意図的にコンテンツを持たせません<p>
[コンポーネント スタイルのスコープを設定する] (必須)<p>このルールは、単一ファイル コンポーネントにのみ適用されます。
scoped
属性を使用する必要は
ありません。スコープの設定は、CSS モジュールを使用するか、他のライブラリや規約を使用して行うこともできます<p>
delimiters
comments
ログイン後にコピー
[単一ファイル コンポーネントでは、
著者別の最新記事
-
2018-06-23 18:19:43
-
2018-06-23 18:17:39
-
2018-06-23 18:11:37
-
2018-06-23 18:10:14
-
2018-06-23 18:06:43
-
2018-06-23 18:04:28
-
2018-06-23 18:02:45
-
2018-06-23 18:00:45
-
2018-06-23 17:58:23
-
2018-06-23 17:56:41