Vue で合理化されたスタイルを実装する方法 (詳細なチュートリアル)

亚连
リリース: 2018-06-08 18:04:43
オリジナル
1930 人が閲覧しました
<p>この記事では、Vue の合理化されたスタイルに関連する知識ポイントを説明し、興味のある友人が参照できるサンプル コードを共有します。

<p>前にも書きましたが

<p>Vue公式サイトのスタイルガイドは優先順位(必要、強く推奨、推奨、使用注意の順)で分類されており、コード間隔が広くて問い合わせが困難です。この記事はタイプ別に分類されており、いくつかの例や説明が省略されています

<p>コンポーネント名

<p>[コンポーネント名は複数の単語です] (必須)

<p>コンポーネント名は常に複数の単語である必要があります。ルートコンポーネントApp。 これを行うと、すべての HTML 要素名が単一の単語であるため、既存および将来の HTML 要素との競合が回避されます

//bad
Vue.component(&#39;todo&#39;, {})
//good
Vue.component(&#39;todo-item&#39;, {})
ログイン後にコピー
<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(&#39;TodoList&#39;, {})
Vue.component(&#39;TodoItem&#39;, {})
//good
components/
|- TodoList.vue
|- TodoItem.vue
ログイン後にコピー

[コンポーネント名単一ファイル コンポーネントおよび文字列テンプレートでは常に PascalCase である必要がありますが、DOM テンプレートでは常に kebab-case である必要があります] (強く推奨)<p>
el
ログイン後にコピー

[コンポーネント名は略語ではなく完全な単語になる傾向があります] (強く推奨) <p>
name
parent
ログイン後にコピー

コンポーネント関連<p>

[JSX 内のコンテンツのない単一ファイル コンポーネント、文字列テンプレート、およびコンポーネントは自己終了である必要があります - ただし、DOM テンプレートではこれを行わないでください] (強く推奨) <p>

自己終了コンポーネントとは、コンテンツがないだけではないことを意味しますですが、意図的にコンテンツを持たせません<p>
functional
ログイン後にコピー

[コンポーネント スタイルのスコープを設定する] (必須)<p>

このルールは、単一ファイル コンポーネントにのみ適用されます。 scoped 属性を使用する必要はありません。スコープの設定は、CSS モジュールを使用するか、他のライブラリや規約を使用して行うこともできます<p>
delimiters
comments
ログイン後にコピー

[単一ファイル コンポーネントでは、
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート