目次
1. 必須" > 1. 必須
1. ファイルを結合できるビルド システムがある限り、各コンポーネントを分離します。ファイルに。 " > 2. 強く推奨 (可読性の向上) 1. ファイルを結合できるビルド システムがある限り、各コンポーネントを分離します。ファイルに。
三、推荐" >三、推荐
四、谨慎使用 (有潜在危险的模式)" >四、谨慎使用 (有潜在危险的模式)
ホームページ ウェブフロントエンド jsチュートリアル Vue フロントエンド開発の仕様は何ですか?

Vue フロントエンド開発の仕様は何ですか?

Jun 02, 2018 am 11:26 AM
どれの 開発する 仕様

今回は、Vue フロントエンド開発の仕様とは何か、および Vue フロントエンド開発仕様の notes についてお届けします。以下は実際的なケースです。見てみましょう。

Vue 公式スタイルガイドに基づく

1. 必須

1. ルートコンポーネント App を除き、コンポーネント名は常に複数の単語である必要があります。

良い例:

export default {
 name: 'TodoItem',
 // ...
}
反例:
export default {
 name: 'Todo',
 // ...
}
ログイン後にコピー

2. コンポーネントデータ

コンポーネントのデータは関数でなければなりません。

コンポーネント (新しい Vue を除く任意の場所) で data 属性を使用する場合、その値はオブジェクトを返す関数である必要があります。

肯定的な例:

// In a .vue file
export default {
 data () {
 return {
 foo: 'bar'
 }
 }
}
// 在一个 Vue 的根实例上直接使用对象是可以的,
// 因为只存在一个这样的实例。
new Vue({
 data: {
 foo: 'bar'
 }
})
ログイン後にコピー
反対の例:

export default {
 data: {
 foo: 'bar'
 }
}
ログイン後にコピー
3. プロパティの定義

プロパティの定義はできるだけ詳細に行う必要があります。

提出するコードでは、prop の定義をできるだけ詳細に、少なくともその型を指定する必要があります。

正の例:

props: {
 status: String
}
// 更好的做法!
props: {
 status: {
 type: String,
 required: true,
 validator: function (value) {
 return [
 'syncing',
 'synced',
 'version-conflict',
 'error'
 ].indexOf(value) !== -1
 }
 }
}
ログイン後にコピー
反例:

// 这样做只有开发原型系统时可以接受
props: ['status']
ログイン後にコピー
4. v-for のキー値を設定します

v-for では常に key を使用します。

内部コンポーネントとそのサブツリーの状態を維持するには、コンポーネントの v-for とともに Key を常に使用する必要があります。アニメーションにおけるオブジェクトの恒常性など、要素の予測可能な動作を維持することも良い習慣です。

肯定的な例:

<ul>
 <li
 v-for="todo in todos"
 :key="todo.id"
 >
 {{ todo.text }}
 </li>
</ul>
ログイン後にコピー
反対の例:

<ul>
 <li v-for="todo in todos">
 {{ todo.text }}
 </li>
</ul>
ログイン後にコピー
5. v-if と v-for を一緒に使用しないでください

同じ要素で v-if と v-for を同時に使用しないでください。

一般に、これは次の 2 つの一般的な状況で行われる傾向があります:

リスト内の項目をフィルターする場合 (v-for="user in users" v-if="user.isActive" など) 。この場合、ユーザーを、フィルター処理されたリストを返す計算されたプロパティ (activeUsers など) に置き換えます。 <p style="text-align: left;"></p> 非表示にする必要があるリストのレンダリングを避けるため (<code> v-for="user in users" v-if="ShouldShowUsers" など)。この場合、v-if をコンテナ要素 (例: ul、ol) に移動します。

v-for="user in users" v-if="user.isActive")。在这种情形下,请将 users 替换为一个计算属性 (比如 activeUsers),让其返回过滤后的列表。

为了避免渲染本应该被隐藏的列表 (比如 v-for="user in users" v-if="shouldShowUsers肯定的な例:

<ul v-if="shouldShowUsers">
 <li
 v-for="user in users"
 :key="user.id"
 >
 {{ user.name }}
 </li>
</ul>
ログイン後にコピー

反対の例:

<ul>
 <li
 v-for="user in users"
 v-if="shouldShowUsers"
 :key="user.id"
 >
 {{ user.name }}
 </li>
</ul>
ログイン後にコピー

6. コンポーネント スタイルのスコープを設定する

アプリケーションの場合、トップレベルのアプリ コンポーネントとレイアウト コンポーネントのスタイルはグローバルにすることができますが、他のすべてのコンポーネントにはスコープが必要です。

このルールは、単一ファイルのコンポーネントにのみ適用されます。スコープ付き属性を使用する必要はありません。スコープは、BEM と同様のクラスベースの戦略である CSS モジュールを通じて設定することもできますが、もちろん、他のライブラリや規約を使用することもできます。

いずれにしても、コンポーネント ライブラリについては、スコープ指定された機能よりもクラスベースの戦略を優先する必要があります。

これにより、内部スタイルのオーバーライドが容易になり、セレクターの優先順位を高くせずに人間が判読できるクラス名を使用できるため、競合が発生する可能性が低くなります。

肯定的な例:

<template>
 <button class="c-Button c-Button--close">X</button>
</template>
<!-- 使用 BEM 约定 -->
<style>
.c-Button {
 border: none;
 border-radius: 2px;
}
.c-Button--close {
 background-color: red;
}
</style>
ログイン後にコピー

反対の例:

<template>
 <button class="btn btn-close">X</button>
</template>
<style>
.btn-close {
 background-color: red;
}
</style>
<template>
 <button class="button button-close">X</button>
</template>
<!-- 使用 `scoped` 特性 -->
<style scoped>
.button {
 border: none;
 border-radius: 2px;
}
.button-close {
 background-color: red;
}
</style>
ログイン後にコピー

2. 強く推奨 (可読性の向上) 1. ファイルを結合できるビルド システムがある限り、各コンポーネントを分離します。ファイルに。

コンポーネントを編集する必要がある場合、またはコンポーネントの使用状況を確認する必要がある場合、コンポーネントをより速く見つけることができます。

正の例:

components/
|- TodoList.vue
|- TodoItem.vue
ログイン後にコピー

反例:
V
ue.component('TodoList', {
 // ...
})
Vue.component('TodoItem', {
 // ...
})
ログイン後にコピー

2. 単一ファイルのコンポーネント ファイルの場合

単一ファイル コンポーネントのファイル名は常に大文字の単語 (PascalCase) で始まる必要があります

正の例:

components/
|- MyComponent.vue
ログイン後にコピー

反例:

components/
|- myComponent.vue
|- mycomponent.vue
ログイン後にコピー

3. 基本コンポーネント名

特定のスタイルと規則を適用する基本コンポーネント (つまり、プレゼンテーション用、非論理コンポーネント、またはステートレス コンポーネント) はすべて、Base、App、またはV.

正の例:

components/
|- BaseButton.vue
|- BaseTable.vue
|- BaseIcon.vue
ログイン後にコピー

反対の例:

components/
|- MyButton.vue
|- VueTable.vue
|- Icon.vue
ログイン後にコピー

4. シングルトンコンポーネント名

アクティブなインスタンスを 1 つだけ持つ必要があるコンポーネントには、一意性を示すために接頭辞 The を付けて名前を付ける必要があります。

这不意味着组件只可用于一个单页面,而是每个页面只使用一次。这些组件永远不接受任何 prop,因为它们是为你的应用定制的,而不是它们在你的应用中的上下文。如果你发现有必要添加 prop,那就表明这实际上是一个可复用的组件,只是目前在每个页面里只使用一次。

正例:

components/
|- TheHeading.vue
|- TheSidebar.vue
ログイン後にコピー

反例:

components/
|- Heading.vue
|- MySidebar.vue
ログイン後にコピー

5. 紧密耦合的组件名

和父组件紧密耦合的子组件应该以父组件名作为前缀命名。

如果一个组件只在某个父组件的场景下有意义,这层关系应该体现在其名字上。因为编辑器通常会按字母顺序组织文件,所以这样做可以把相关联的文件排在一起。

正例:

components/
|- TodoList.vue
|- TodoListItem.vue
|- TodoListItemButton.vue
components/
|- SearchSidebar.vue
|- SearchSidebarNavigation.vue
ログイン後にコピー

反例:

components/
|- SearchSidebar.vue
|- NavigationForSearchSidebar.vue
ログイン後にコピー

6. 组件名中的单词顺序

组件名应该以高级别的 (通常是一般化描述的) 单词开头,以描述性的修饰词结尾。

正例:

components/
|- SearchButtonClear.vue
|- SearchButtonRun.vue
|- SearchInputQuery.vue
|- SearchInputExcludeGlob.vue
|- SettingsCheckboxTerms.vue
|- SettingsCheckboxLaunchOnStartup.vue
ログイン後にコピー

反例:

components/
|- ClearSearchButton.vue
|- ExcludeFromSearchInput.vue
|- LaunchOnStartupCheckbox.vue
|- RunSearchButton.vue
|- SearchInput.vue
|- TermsCheckbox.vue
ログイン後にコピー

7. 模板中的组件名大小写

总是 PascalCase 的

正例:

<!-- 在单文件组件和字符串模板中 -->
<MyComponent/>
ログイン後にコピー

反例:

<!-- 在单文件组件和字符串模板中 -->
<mycomponent/>
<!-- 在单文件组件和字符串模板中 -->
<myComponent/>
ログイン後にコピー

8. 完整单词的组件名

组件名应该倾向于完整单词而不是缩写。

正例:

components/
|- StudentDashboardSettings.vue
|- UserProfileOptions.vue
ログイン後にコピー

反例:

components/
|- SdSettings.vue
|- UProfOpts.vue
ログイン後にコピー

9. 多个特性的元素

多个特性的元素应该分多行撰写,每个特性一行。

正例:

<img
 src="https://vuejs.org/images/logo.png"
 alt="Vue Logo"
>
<MyComponent
 foo="a"
 bar="b"
 baz="c"
/>
ログイン後にコピー

反例:

<img src="https://vuejs.org/images/logo.png" alt="Vue Logo">
<MyComponent foo="a" bar="b" baz="c"/>
ログイン後にコピー

10. 模板中简单的表达式

组件模板应该只包含简单的表达式,复杂的表达式则应该重构为计算属性或方法。
复杂表达式会让你的模板变得不那么声明式。我们应该尽量描述应该出现的是什么,而非如何计算那个值。而且计算属性和方法使得代码可以重用。

正例:

<!-- 在模板中 -->
{{ normalizedFullName }}
// 复杂表达式已经移入一个计算属性
computed: {
 normalizedFullName: function () {
 return this.fullName.split(' ').map(function (word) {
 return word[0].toUpperCase() + word.slice(1)
 }).join(' ')
 }
}
ログイン後にコピー

反例:

{{
 fullName.split(' ').map(function (word) {
 return word[0].toUpperCase() + word.slice(1)
 }).join(' ')
}}
ログイン後にコピー

11. 简单的计算属性

正例:

computed: {
 basePrice: function () {
 return this.manufactureCost / (1 - this.profitMargin)
 },
 discount: function () {
 return this.basePrice * (this.discountPercent || 0)
 },
 finalPrice: function () {
 return this.basePrice - this.discount
 }
}
ログイン後にコピー

反例:

computed: {
 price: function () {
 var basePrice = this.manufactureCost / (1 - this.profitMargin)
 return (
 basePrice -
 basePrice * (this.discountPercent || 0)
 )
 }
}
ログイン後にコピー

12. 带引号的特性值

非空 HTML 特性值应该始终带引号 (单引号或双引号,选你 JS 里不用的那个)。
在 HTML 中不带空格的特性值是可以没有引号的,但这样做常常导致带空格的特征值被回避,导致其可读性变差。

正例:

<AppSidebar :style="{ width: sidebarWidth + &#39;px&#39; }">
ログイン後にコピー

反例:

<AppSidebar :style={width:sidebarWidth+&#39;px&#39;}>
ログイン後にコピー

13. 指令缩写

都用指令缩写 (用 : 表示 v-bind: 和用 @ 表示 v-on:)

正例:

<input
 @input="onInput"
 @focus="onFocus"
>
ログイン後にコピー

反例:

<input
 v-bind:value="newTodoText"
 :placeholder="newTodoInstructions"
>
ログイン後にコピー

三、推荐

1. 单文件组件的顶级元素的顺序

单文件组件应该总是让

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

おすすめのAI支援プログラミングツール4選 おすすめのAI支援プログラミングツール4選 Apr 22, 2024 pm 05:34 PM

この AI 支援プログラミング ツールは、急速な AI 開発のこの段階において、多数の有用な AI 支援プログラミング ツールを発掘しました。 AI 支援プログラミング ツールは、開発効率を向上させ、コードの品質を向上させ、バグ率を減らすことができます。これらは、現代のソフトウェア開発プロセスにおける重要なアシスタントです。今日は Dayao が 4 つの AI 支援プログラミング ツールを紹介します (すべて C# 言語をサポートしています)。皆さんのお役に立てれば幸いです。 https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot は、より少ない労力でより迅速にコードを作成できるようにする AI コーディング アシスタントであり、問​​題解決とコラボレーションにより集中できるようになります。ギット

どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る どのAIプログラマーが一番優れているでしょうか? Devin、Tongyi Lingma、SWE エージェントの可能性を探る Apr 07, 2024 am 09:10 AM

世界初の AI プログラマー Devin の誕生から 1 か月も経たない 2022 年 3 月 3 日、プリンストン大学の NLP チームはオープンソース AI プログラマー SWE-agent を開発しました。 GPT-4 モデルを利用して、GitHub リポジトリの問題を自動的に解決します。 SWE ベンチ テスト セットにおける SWE エージェントのパフォーマンスは Devin と同様で、平均 93 秒かかり、問題の 12.29% を解決しました。専用端末と対話することで、SWE エージェントはファイルの内容を開いて検索したり、自動構文チェックを使用したり、特定の行を編集したり、テストを作成して実行したりできます。 (注: 上記の内容は元の内容を若干調整したものですが、原文の重要な情報は保持されており、指定された文字数制限を超えていません。) SWE-A

最も人気のある 5 つの Go 言語ライブラリの概要: 開発に不可欠なツール 最も人気のある 5 つの Go 言語ライブラリの概要: 開発に不可欠なツール Feb 22, 2024 pm 02:33 PM

最も人気のある 5 つの Go 言語ライブラリの概要: 特定のコード例が必要な、開発に不可欠なツール Go 言語は、その誕生以来、広く注目され、応用されてきました。新しい効率的で簡潔なプログラミング言語としての Go の急速な開発は、豊富なオープンソース ライブラリのサポートと切り離すことができません。この記事では、Go 言語ライブラリの中で最も人気のある 5 つを紹介します. これらのライブラリは Go 開発において重要な役割を果たし、開発者に強力な機能と便利な開発エクスペリエンスを提供します。同時に、これらのライブラリの用途と機能をよりよく理解するために、具体的なコード例を示して説明します。

Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Go 言語を使用してモバイル アプリケーションを開発する方法を学ぶ Mar 28, 2024 pm 10:00 PM

Go 言語開発モバイル アプリケーション チュートリアル モバイル アプリケーション市場が活況を続ける中、ますます多くの開発者が Go 言語を使用してモバイル アプリケーションを開発する方法を検討し始めています。シンプルで効率的なプログラミング言語として、Go 言語はモバイル アプリケーション開発でも大きな可能性を示しています。この記事では、Go 言語を使用してモバイル アプリケーションを開発する方法を詳しく紹介し、読者がすぐに始めて独自のモバイル アプリケーションの開発を開始できるように、具体的なコード例を添付します。 1. 準備 始める前に、開発環境とツールを準備する必要があります。頭

Android 開発に最適な Linux ディストリビューションはどれですか? Android 開発に最適な Linux ディストリビューションはどれですか? Mar 14, 2024 pm 12:30 PM

Android 開発は多忙で刺激的な仕事であり、開発に適した Linux ディストリビューションを選択することが特に重要です。数多くある Linux ディストリビューションの中で、Android 開発に最適なのはどれでしょうか?この記事では、この問題をいくつかの側面から検討し、具体的なコード例を示します。まず、現在人気のある Linux ディストリビューション (Ubuntu、Fedora、Debian、CentOS など) をいくつか見てみましょう。これらにはそれぞれ独自の利点と特徴があります。

Go 言語のフロントエンド テクノロジーの探求: フロントエンド開発の新しいビジョン Go 言語のフロントエンド テクノロジーの探求: フロントエンド開発の新しいビジョン Mar 28, 2024 pm 01:06 PM

Go 言語は、高速で効率的なプログラミング言語として、バックエンド開発の分野で広く普及しています。ただし、Go 言語をフロントエンド開発と結びつける人はほとんどいません。実際、フロントエンド開発に Go 言語を使用すると、効率が向上するだけでなく、開発者に新たな視野をもたらすことができます。この記事では、フロントエンド開発に Go 言語を使用する可能性を探り、読者がこの分野をよりよく理解できるように具体的なコード例を示します。従来のフロントエンド開発では、ユーザー インターフェイスの構築に JavaScript、HTML、CSS がよく使用されます。

VSCode について: このツールは何に使用されますか? VSCode について: このツールは何に使用されますか? Mar 25, 2024 pm 03:06 PM

「VSCode について: このツールは何に使用されますか?」 》初心者でも経験豊富な開発者でも、プログラマーとしてはコード編集ツールを使わずにはいられません。数ある編集ツールの中でも、Visual Studio Code (略して VSCode) は、オープンソースで軽量かつ強力なコード エディターとして開発者の間で非常に人気があります。では、VSCode は正確に何に使用されるのでしょうか?この記事では、VSCode の機能と使用法を詳しく説明し、読者に役立つ具体的なコード例を提供します。

PHP は Web 開発におけるフロントエンドですか、それともバックエンドですか? PHP は Web 開発におけるフロントエンドですか、それともバックエンドですか? Mar 24, 2024 pm 02:18 PM

PHP は Web 開発のバックエンドに属します。 PHP はサーバー側のスクリプト言語であり、主にサーバー側のロジックを処理し、動的な Web コンテンツを生成するために使用されます。フロントエンド テクノロジーと比較して、PHP はデータベースとの対話、ユーザー リクエストの処理、ページ コンテンツの生成などのバックエンド操作に多く使用されます。次に、特定のコード例を使用して、バックエンド開発における PHP のアプリケーションを説明します。まず、データベースに接続してデータをクエリするための簡単な PHP コード例を見てみましょう。

See all articles