Table des matières
1 Obligatoire" >1 Obligatoire
三、推荐" >三、推荐
四、谨慎使用 (有潜在危险的模式)" >四、谨慎使用 (有潜在危险的模式)
Maison interface Web js tutoriel Quelles sont les spécifications pour le développement front-end de Vue ?

Quelles sont les spécifications pour le développement front-end de Vue ?

Jun 02, 2018 am 11:26 AM
Lequel 开发 规范

Cette fois, je vais vous expliquer quelles sont les spécifications pour le développement front-end de Vue, et quelles sont les précautions pour les spécifications de développement front-end de Vue. Voici des cas pratiques, jetons un coup d'œil.

Basé sur le guide de style officiel de Vue

1 Obligatoire

1.

Les noms des composants doivent toujours contenir plusieurs mots, à l'exception du composant racine App.

Exemple positif :

export default {
 name: 'TodoItem',
 // ...
}
反例:
export default {
 name: 'Todo',
 // ...
}
Copier après la connexion

2. Données du composant

Les données du composant doivent être une fonction.

Lors de l'utilisation de l'attribut data dans un composant (n'importe où sauf dans New Vue), sa valeur doit être une fonction qui renvoie un objet.

Exemple positif :

// In a .vue file
export default {
 data () {
 return {
 foo: 'bar'
 }
 }
}
// 在一个 Vue 的根实例上直接使用对象是可以的,
// 因为只存在一个这样的实例。
new Vue({
 data: {
 foo: 'bar'
 }
})
Copier après la connexion

Contre-exemple :

export default {
 data: {
 foo: 'bar'
 }
}
Copier après la connexion

3. Définition de l'accessoire

La définition de l'accessoire doit être aussi détaillée que possible.

Dans le code que vous soumettez, la définition de prop doit être aussi détaillée que possible, en précisant au moins son type.

Exemple positif :

props: {
 status: String
}
// 更好的做法!
props: {
 status: {
 type: String,
 required: true,
 validator: function (value) {
 return [
 'syncing',
 'synced',
 'version-conflict',
 'error'
 ].indexOf(value) !== -1
 }
 }
}
Copier après la connexion

Contre-exemple :

// 这样做只有开发原型系统时可以接受
props: ['status']
Copier après la connexion

4. Définir la valeur de la clé pour v-for

Toujours utiliser la clé avec v -pour.

La clé doit toujours être utilisée avec v-for sur un composant afin de maintenir l'état du composant interne et de ses sous-arbres. Même le maintien d'un comportement prévisible sur les éléments, comme la constance des objets dans les animations, est une bonne pratique.

Exemple positif :

<ul>
 <li
 v-for="todo in todos"
 :key="todo.id"
 >
 {{ todo.text }}
 </li>
</ul>
Copier après la connexion

Contre-exemple :

<ul>
 <li v-for="todo in todos">
 {{ todo.text }}
 </li>
</ul>
Copier après la connexion

5. Évitez d'utiliser v-if et v-for ensemble

Ne jamais utiliser v. -if et v-for sur le même élément en même temps.

Généralement, nous avons tendance à le faire dans deux situations courantes :

Pour filtrer les éléments d'une liste (comme v-for="user in users" v-if="user.isActive"). Dans ce cas, remplacez les utilisateurs par une propriété calculée (telle que activeUsers) qui renvoie la liste filtrée.

Pour éviter de rendre des listes qui devraient être masquées (comme v-for="user in users" v-if="shouldShowUsers"). Dans ce cas, veuillez déplacer le v-if vers l'élément conteneur (comme ul, ol).

Exemple positif :

<ul v-if="shouldShowUsers">
 <li
 v-for="user in users"
 :key="user.id"
 >
 {{ user.name }}
 </li>
</ul>
Copier après la connexion

Contre-exemple :

<ul>
 <li
 v-for="user in users"
 v-if="shouldShowUsers"
 :key="user.id"
 >
 {{ user.name }}
 </li>
</ul>
Copier après la connexion

6. Définir la portée du style de composant

Pour les applications, les composants d'application de niveau supérieur et les styles de composants de mise en page. peut être global, mais tous les autres composants doivent avoir une portée.

Cette règle s'applique uniquement aux composants à fichier unique. Vous n'êtes pas obligé d'utiliser l'attribut scoped pour définir les portées des modules. stratégie similaire à BEM. Bien sûr, vous pouvez également utiliser d'autres bibliothèques ou conventions

Dans tous les cas, pour les bibliothèques de composants, nous devrions préférer utiliser des stratégies basées sur les classes plutôt que des fonctionnalités étendues. >Cela facilite le remplacement des styles internes : en utilisant des noms de classe lisibles par l'homme sans priorité de sélecteur élevée, et moins susceptible de provoquer des conflits :

Contre-exemple :

<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>
Copier après la connexion
.

2. Fortement recommandé (pour améliorer la lisibilité)
<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>
Copier après la connexion

1 . Fichiers de composants Tant qu'il existe un système de construction capable de fusionner des fichiers, séparez chaque composant dans des fichiers séparés.

Lorsque vous devez modifier un composant ou vérifier l'utilisation d'un composant, vous pouvez le trouver plus rapidement

Exemple positif :


Contre-exemple :

2. Le cas des fichiers de composants mono-fichiers
components/
|- TodoList.vue
|- TodoItem.vue
Copier après la connexion

Fichiers de composants mono-fichiers Le nom doit soit toujours commencer par une majuscule (PascalCase)

V
ue.component('TodoList', {
 // ...
})
Vue.component('TodoItem', {
 // ...
})
Copier après la connexion
Exemple positif :

Exemple négatif :

3. Nom du composant de base
components/
|- MyComponent.vue
Copier après la connexion

Composants de base (c'est-à-dire composants de présentation, non logiques ou sans état) qui appliquent des styles et des conventions spécifiques doivent tous commencer par un préfixe spécifique, tel que Base, App ou V. Exemple positif :

components/
|- myComponent.vue
|- mycomponent.vue
Copier après la connexion

Contre-exemple :

4. name

Les composants qui ne doivent avoir qu'une seule instance active doivent être nommés avec le préfixe pour montrer qu'ils sont uniques. Sexe
components/
|- BaseButton.vue
|- BaseTable.vue
|- BaseIcon.vue
Copier après la connexion
.

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

正例:

components/
|- TheHeading.vue
|- TheSidebar.vue
Copier après la connexion

反例:

components/
|- Heading.vue
|- MySidebar.vue
Copier après la connexion

5. 紧密耦合的组件名

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

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

正例:

components/
|- TodoList.vue
|- TodoListItem.vue
|- TodoListItemButton.vue
components/
|- SearchSidebar.vue
|- SearchSidebarNavigation.vue
Copier après la connexion

反例:

components/
|- SearchSidebar.vue
|- NavigationForSearchSidebar.vue
Copier après la connexion

6. 组件名中的单词顺序

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

正例:

components/
|- SearchButtonClear.vue
|- SearchButtonRun.vue
|- SearchInputQuery.vue
|- SearchInputExcludeGlob.vue
|- SettingsCheckboxTerms.vue
|- SettingsCheckboxLaunchOnStartup.vue
Copier après la connexion

反例:

components/
|- ClearSearchButton.vue
|- ExcludeFromSearchInput.vue
|- LaunchOnStartupCheckbox.vue
|- RunSearchButton.vue
|- SearchInput.vue
|- TermsCheckbox.vue
Copier après la connexion

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

总是 PascalCase 的

正例:

<!-- 在单文件组件和字符串模板中 -->
<MyComponent/>
Copier après la connexion

反例:

<!-- 在单文件组件和字符串模板中 -->
<mycomponent/>
<!-- 在单文件组件和字符串模板中 -->
<myComponent/>
Copier après la connexion

8. 完整单词的组件名

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

正例:

components/
|- StudentDashboardSettings.vue
|- UserProfileOptions.vue
Copier après la connexion

反例:

components/
|- SdSettings.vue
|- UProfOpts.vue
Copier après la connexion

9. 多个特性的元素

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

正例:

<img
 src="https://vuejs.org/images/logo.png"
 alt="Vue Logo"
>
<MyComponent
 foo="a"
 bar="b"
 baz="c"
/>
Copier après la connexion

反例:

<img src="https://vuejs.org/images/logo.png" alt="Vue Logo">
<MyComponent foo="a" bar="b" baz="c"/>
Copier après la connexion

10. 模板中简单的表达式

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

正例:

<!-- 在模板中 -->
{{ normalizedFullName }}
// 复杂表达式已经移入一个计算属性
computed: {
 normalizedFullName: function () {
 return this.fullName.split(' ').map(function (word) {
 return word[0].toUpperCase() + word.slice(1)
 }).join(' ')
 }
}
Copier après la connexion

反例:

{{
 fullName.split(' ').map(function (word) {
 return word[0].toUpperCase() + word.slice(1)
 }).join(' ')
}}
Copier après la connexion

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
 }
}
Copier après la connexion

反例:

computed: {
 price: function () {
 var basePrice = this.manufactureCost / (1 - this.profitMargin)
 return (
 basePrice -
 basePrice * (this.discountPercent || 0)
 )
 }
}
Copier après la connexion

12. 带引号的特性值

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

正例:

<AppSidebar :style="{ width: sidebarWidth + &#39;px&#39; }">
Copier après la connexion

反例:

<AppSidebar :style={width:sidebarWidth+&#39;px&#39;}>
Copier après la connexion

13. 指令缩写

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

正例:

<input
 @input="onInput"
 @focus="onFocus"
>
Copier après la connexion

反例:

<input
 v-bind:value="newTodoText"
 :placeholder="newTodoInstructions"
>
Copier après la connexion

三、推荐

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

单文件组件应该总是让

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quatre outils de programmation assistés par IA recommandés Quatre outils de programmation assistés par IA recommandés Apr 22, 2024 pm 05:34 PM

Cet outil de programmation assistée par l'IA a mis au jour un grand nombre d'outils de programmation assistée par l'IA utiles à cette étape de développement rapide de l'IA. Les outils de programmation assistés par l'IA peuvent améliorer l'efficacité du développement, améliorer la qualité du code et réduire les taux de bogues. Ils constituent des assistants importants dans le processus de développement logiciel moderne. Aujourd'hui, Dayao partagera avec vous 4 outils de programmation assistés par l'IA (et tous prennent en charge le langage C#). J'espère que cela sera utile à tout le monde. https://github.com/YSGStudyHards/DotNetGuide1.GitHubCopilotGitHubCopilot est un assistant de codage IA qui vous aide à écrire du code plus rapidement et avec moins d'effort, afin que vous puissiez vous concentrer davantage sur la résolution de problèmes et la collaboration. Git

Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Quel programmeur IA est le meilleur ? Explorez le potentiel de Devin, Tongyi Lingma et de l'agent SWE Apr 07, 2024 am 09:10 AM

Le 3 mars 2022, moins d'un mois après la naissance de Devin, le premier programmeur d'IA au monde, l'équipe NLP de l'Université de Princeton a développé un agent SWE pour programmeur d'IA open source. Il exploite le modèle GPT-4 pour résoudre automatiquement les problèmes dans les référentiels GitHub. Les performances de l'agent SWE sur l'ensemble de tests du banc SWE sont similaires à celles de Devin, prenant en moyenne 93 secondes et résolvant 12,29 % des problèmes. En interagissant avec un terminal dédié, SWE-agent peut ouvrir et rechercher le contenu des fichiers, utiliser la vérification automatique de la syntaxe, modifier des lignes spécifiques et écrire et exécuter des tests. (Remarque : le contenu ci-dessus est un léger ajustement du contenu original, mais les informations clés du texte original sont conservées et ne dépassent pas la limite de mots spécifiée.) SWE-A

Apprenez à développer des applications mobiles en utilisant le langage Go Apprenez à développer des applications mobiles en utilisant le langage Go Mar 28, 2024 pm 10:00 PM

Didacticiel d'application mobile de développement du langage Go Alors que le marché des applications mobiles continue de croître, de plus en plus de développeurs commencent à explorer comment utiliser le langage Go pour développer des applications mobiles. En tant que langage de programmation simple et efficace, le langage Go a également montré un fort potentiel dans le développement d'applications mobiles. Cet article présentera en détail comment utiliser le langage Go pour développer des applications mobiles et joindra des exemples de code spécifiques pour aider les lecteurs à démarrer rapidement et à commencer à développer leurs propres applications mobiles. 1. Préparation Avant de commencer, nous devons préparer l'environnement et les outils de développement. tête

Résumé des cinq bibliothèques du langage Go les plus populaires : outils essentiels au développement Résumé des cinq bibliothèques du langage Go les plus populaires : outils essentiels au développement Feb 22, 2024 pm 02:33 PM

Résumé des cinq bibliothèques du langage Go les plus populaires : des outils essentiels au développement, nécessitant des exemples de code spécifiques. Depuis sa naissance, le langage Go a fait l'objet d'une attention et d'une application généralisées. En tant que langage de programmation émergent, efficace et concis, le développement rapide de Go est indissociable du support de riches bibliothèques open source. Cet article présentera les cinq bibliothèques de langage Go les plus populaires. Ces bibliothèques jouent un rôle essentiel dans le développement Go et offrent aux développeurs des fonctions puissantes et une expérience de développement pratique. Parallèlement, afin de mieux comprendre les usages et les fonctions de ces bibliothèques, nous les expliquerons avec des exemples de codes précis.

Quelle distribution Linux est la meilleure pour le développement Android ? Quelle distribution Linux est la meilleure pour le développement Android ? Mar 14, 2024 pm 12:30 PM

Le développement d'Android est un travail chargé et passionnant, et le choix d'une distribution Linux adaptée au développement est particulièrement important. Parmi les nombreuses distributions Linux, laquelle est la plus adaptée au développement Android ? Cet article explorera ce problème sous plusieurs aspects et donnera des exemples de code spécifiques. Tout d’abord, jetons un coup d’œil à plusieurs distributions Linux actuellement populaires : Ubuntu, Fedora, Debian, CentOS, etc. Elles ont toutes leurs propres avantages et caractéristiques.

Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Explorer la technologie front-end du langage Go : une nouvelle vision du développement front-end Mar 28, 2024 pm 01:06 PM

En tant que langage de programmation rapide et efficace, le langage Go est très populaire dans le domaine du développement back-end. Cependant, peu de gens associent le langage Go au développement front-end. En fait, l’utilisation du langage Go pour le développement front-end peut non seulement améliorer l’efficacité, mais également ouvrir de nouveaux horizons aux développeurs. Cet article explorera la possibilité d'utiliser le langage Go pour le développement front-end et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre ce domaine. Dans le développement front-end traditionnel, JavaScript, HTML et CSS sont souvent utilisés pour créer des interfaces utilisateur.

Comprendre VSCode : à quoi sert cet outil ? Comprendre VSCode : à quoi sert cet outil ? Mar 25, 2024 pm 03:06 PM

« Comprendre VSCode : à quoi sert cet outil ? » 》En tant que programmeur, que vous soyez débutant ou développeur expérimenté, vous ne pouvez pas vous passer de l'utilisation d'outils d'édition de code. Parmi les nombreux outils d'édition, Visual Studio Code (VSCode en abrégé) est très populaire parmi les développeurs en tant qu'éditeur de code open source, léger et puissant. Alors, à quoi sert exactement VSCode ? Cet article approfondira les fonctions et les utilisations de VSCode et fournira des exemples de code spécifiques pour aider les lecteurs.

PHP est-il front-end ou back-end dans le développement Web ? PHP est-il front-end ou back-end dans le développement Web ? Mar 24, 2024 pm 02:18 PM

PHP appartient au backend du développement Web. PHP est un langage de script côté serveur, principalement utilisé pour traiter la logique côté serveur et générer du contenu Web dynamique. Par rapport à la technologie front-end, PHP est davantage utilisé pour les opérations back-end telles que l'interaction avec les bases de données, le traitement des demandes des utilisateurs et la génération du contenu des pages. Ensuite, des exemples de code spécifiques seront utilisés pour illustrer l'application de PHP dans le développement back-end. Tout d'abord, regardons un exemple de code PHP simple pour se connecter à une base de données et interroger des données :

See all articles