Maison >interface Web >tutoriel CSS >Valider l'entrée dans les mixins et fonctions SASS
Points de base
type-of()
, unit()
et unitless()
. Ces fonctions peuvent être utilisées pour vérifier le type et l'unité des données d'entrée, et une erreur sera lancée si l'entrée ne répond pas aux critères attendus. @function
et de renvoyer une valeur basée sur la vérification de vérification à l'aide de la directive @return
. @error
peut être utilisée pour lancer un message d'erreur personnalisé, fournissant des informations détaillées sur la nature de l'erreur et comment corriger l'erreur. Lors de l'écriture de SASS et de l'utilisation par d'autres, ils sont susceptibles de faire une erreur lors de l'utilisation de votre code. En fait, honnêtement, lorsque j'écris Sass et que je l'utilise quelques jours (ou même quelques heures plus tard), je fais des erreurs dans mon propre code. Vous pourriez aussi. Heureusement, SASS a de nombreuses fonctions qui peuvent nous aider à vérifier les développeurs d'entrée dans SASS que nous avons écrits.
Ces technologies sont particulièrement utiles pour les équipes qui partagent Sass Mixin ou maintiennent un kit de démarrage ou un ensemble de mixin et de fonctions. Les développeurs ont deux options lors de l'utilisation de bibliothèques SASS partagées: ils peuvent s'interrompre par e-mail, chat, ping ou autrement pour obtenir de l'aide avec une aide de mixin personnalisée, ou utiliser une documentation détaillée qui inclut la vérification du code pour les aider mutuellement. (Pour ce point, ce n'est pas seulement un problème avec SASS: tout code partagé doit communiquer via des interruptions ou des documents.) Prenons maintenant certaines des méthodes les plus utiles de vérification SASS.
Vérifiez une seule valeur
mixin et fonction prennent des paramètres. Si vous passez le code à d'autres développeurs au travail ou publiez des bibliothèques open source, vous devez vous assurer que les paramètres correspondent à votre intention. Ces fonctions sont utiles pour vérifier les variables dans les paramètres.
variable-exists()
Si votre fonction ou votre mixin dépend d'une variable définie par le développeur, utilisez la fonction variable-exists()
appropriée pour vous assurer que la variable existe. Cette fonction renvoie True ou Faux selon que la variable a été créée et définie.
<code class="language-sass">@mixin create-font-size() { @if variable-exists(base-font) { font-size: $base-font; } @else { @error "请定义变量 `$base-font`。"; } @if variable-exists(line-height) { line-height: $line-height; } @else { @error "请定义变量 `$line-height`。"; } } // 开发者的代码 $base-font: 18px; $line-height: 1.5; .element { @include create-font-size; }</code>
Cependant, une meilleure option que de compter sur les développeurs pour définir correctement les variables globales est d'inclure ces variables par défaut dans votre bibliothèque:
<code class="language-sass">// 你的插件: $base-font: 18px !default; $line-height: 1.5 !default; @mixin create-font-size() { //等等... } // 开发者的代码: $base-font: 16px; p { @include create-font-size(); }</code>
type-of()
Si vous avez besoin de connaître le type de valeur représenté par une variable, veuillez utiliser type-of()
. Cette fonction renverra l'une des chaînes suivantes:
Ceci est utile pour vérifier certains types d'entrées. Vous pouvez vous assurer que le développeur ne passe que les valeurs au mixin qui crée la taille:
<code class="language-sass">@mixin create-font-size() { @if variable-exists(base-font) { font-size: $base-font; } @else { @error "请定义变量 `$base-font`。"; } @if variable-exists(line-height) { line-height: $line-height; } @else { @error "请定义变量 `$line-height`。"; } } // 开发者的代码 $base-font: 18px; $line-height: 1.5; .element { @include create-font-size; }</code>
Vous pouvez également utiliser type-of()
pour vous assurer que le mélange de couleurs ne traite que les couleurs:
<code class="language-sass">// 你的插件: $base-font: 18px !default; $line-height: 1.5 !default; @mixin create-font-size() { //等等... } // 开发者的代码: $base-font: 16px; p { @include create-font-size(); }</code>
Si vous avez besoin de développeurs pour créer des cartes de paramètres de configuration pour les thèmes, vous pouvez vous assurer qu'ils ont des cartes valides:
<code class="language-sass">@mixin size($height, $width: $height) { @if type-of($height) == number { height: $height; } @else { @warn "确保 `$height` 是一个数字。"; } @if type-of($width) == number { width: $width; } @else { @warn "确保 `$width` 是一个数字。"; } }</code>
unit()
Parfois, les opérations mathématiques dans les fonctions ou le mixine nécessitent des unités spécifiques dans leurs paramètres. Vous pouvez utiliser unit()
pour confirmer que la valeur a la bonne unité. Par exemple, vous pouvez utiliser un mixin pour créer des dimensions de pixels et d'unité REM. ( Notez que vous feriez mieux d'exécuter le package avec une tâche pour cela, mais si vous avez besoin de le garder en sass, continuez à lire. )
<code class="language-sass">@function color-fade($color) { @if type-of($color) == 'color' { @return rgba($color, .8); } @else { @warn "确保你将有效的颜色传递给 color-fade() 函数。"; } }</code>
Vérifiez la liste et la carte
Nous avons vu comment utiliser type-of()
pour nous assurer que les variables contiennent des listes ou des cartes. Nous pouvons également tester deux choses importantes: si les valeurs sont dans la liste et si les clés sont dans la carte.
index()
index()
vous dira si la valeur est trouvée dans la liste. Techniquement, il renverra la position de la valeur dans la liste (un nombre) ou NULL. Ce n'est pas une véritable fonction booléenne, mais pour notre objectif ici, les valeurs vraies et fausses sont suffisantes.
index()
La fonction prend deux paramètres: la liste et la valeur que vous souhaitez trouver dans la liste. Cette fonction est utile pour tester les mesures de certaines valeurs dans un mélange. Si nous avons un mélange qui produit des calculs de rembourrage ou de marge en utilisant le raccourci supérieur, à droite, en bas ou à gauche, nous voulons nous assurer que nous n'essayons pas de calculer des valeurs comme initial, héritage ou auto.
<code class="language-sass">@mixin generate-theme($settings) { @if type-of($settings) == 'map' { // 此处输出 } @else { @warn "确保 `$settings` 是一个 Sass 映射。"; } }</code>
map-has-key()
Si vous vérifiez une clé spécifique dans la carte, vous pouvez utiliser la fonction map-has-key()
pour vous assurer que la clé existe sur la carte que vous vérifiez. Cela sera très utile si vous utilisez $breakpoints
cartographie et mélange de requête multimédia:
<code class="language-sass">$rem-size: 16px !default; @mixin px-rem($property, $value) { @if unit($value) == 'px' { #{$property}: $value; #{$property}: $value / $rem-size * 1rem; } @elseif unit($value) == 'rem' { #{$property}: $value * $rem-size / 1rem; #{$property}: $value; } @else { @warn "确保 `$value` 以 px 或 rem 为单位。"; } }</code>
Vérifiez le mixin et les fonctions
Parfois, vous rédigerez un mixin ou une fonction qui dépend d'un mixin ou d'une fonction existant ou d'une autre bibliothèque SASS. Mettons à jour le mixin bp()
de l'exemple précédent pour s'appuyer sur la bibliothèque Sass Sass. Nous pouvons l'étendre comme ceci:
<code class="language-sass">$rem-size: 16px !default; @mixin margin-rem($values...) { $output: (); @each $value in $values { @if index(auto inherit initial 0, $value) { $output: append($output, $value); } @else { $output: append($output, $value / $rem-size * 1rem); } } margin: #{$output}; }</code>
Maintenant, notre mixin bp()
(plus court et utilise des valeurs mappées) utilisera breakpoint()
mixin quand il existe. Sinon, il retombera à notre propre code de mixin de requête multimédia.
Il existe une fonction correspondante appelée function-exists()
. Vous pouvez l'utiliser pour tester si une fonction spécifique existe. Si vous avez des opérations mathématiques qui reposent sur des fonctions non standard, vous pouvez vous assurer d'inclure des bibliothèques contenant la fonction. Compass a ajouté une fonction pow()
pour les mathématiques exponentielles. Si vous créez un rapport de taille de police qui nécessite la fonction, testez-le:
<code class="language-sass">@mixin create-font-size() { @if variable-exists(base-font) { font-size: $base-font; } @else { @error "请定义变量 `$base-font`。"; } @if variable-exists(line-height) { line-height: $line-height; } @else { @error "请定义变量 `$line-height`。"; } } // 开发者的代码 $base-font: 18px; $line-height: 1.5; .element { @include create-font-size; }</code>
Questions de rapport: @warn
et @error
. Cette directive envoie des messages à la console du développeur, mais permet au compilateur de terminer l'exécution. @warn
pour envoyer le message à la console et arrêter le compilateur. @error
et @warn
, vous pouvez consulter mon article précédent sur ce sujet ou la section correspondante dans la référence SASS pour SitePoint. @error
Conclusion
Personne n'est parfait - ceux qui utilisent notre code ne sont pas, et pas même nous-mêmes après avoir écrit notre code pendant quelques heures! C'est pourquoi il est très important d'aider nous-mêmes et les autres en validant les entrées dans le mixin et les fonctions. Ces techniques vous aident non seulement à utiliser votre propre code plus efficacement, mais aussi pour que les équipes partagent et entretiennent plus facilement les bibliothèques SASS.Comment empêchez-vous les erreurs de SASS? Veuillez nous faire savoir dans les commentaires!
FAQS (FAQ) sur la vérification des entrées dans Sass Mixin and Functions
Quel est le but de vérifier l'entrée dans le mixin SASS et les fonctions?Comment vérifier l'entrée dans le mixin et la fonction SASS?
, type-of()
et unit()
, etc. Vous pouvez utiliser ces fonctions pour vérifier le type et l'unité des données d'entrée, et une erreur sera lancée si l'entrée ne répond pas aux critères attendus. Par exemple, vous pouvez utiliser la fonction unitless()
pour vérifier si l'entrée est un nombre, et sinon, une erreur sera lancée. type-of()
Oui, vous pouvez créer des fonctions de validation personnalisées dans SASS. Ceci est très utile si vous avez besoin d'effectuer des vérifications de validation plus complexes qui ne peuvent pas être implémentées à l'aide de fonctions intégrées. Pour créer une fonction de validation personnalisée, définissez simplement une nouvelle fonction à l'aide de la directive @function
, puis utilisez la directive @return
pour renvoyer une valeur basée sur la vérification de validation.
Si la validation d'entrée dans le mixin SASS ou la fonction échoue, une erreur sera lancée et la compilation du code SASS s'arrêtera. Cela peut vous aider à identifier et à corriger rapidement tous les problèmes dans les données d'entrée et à empêcher les bogues et les erreurs dans la sortie CSS finale.
SASS fournit la directive @error
, que vous pouvez utiliser pour lancer un message d'erreur personnalisé lorsque la vérification des entrées échoue. Ceci est particulièrement utile pour le débogage, car vous pouvez fournir des informations détaillées sur la nature de l'erreur et comment le réparer.
Oui, la fonction d'introspection SASS peut être utilisée pour la validation d'entrée. Ces fonctions vous permettent de vérifier le type, l'unité et d'autres propriétés des données d'entrée et peuvent être utilisées conjointement avec la directive @error
, qui peut lancer un message d'erreur personnalisé lorsque l'entrée ne répond pas aux critères attendus.
Vérifiez que l'entrée peut être utilisée dans une variété de scénarios dans le mixin SASS et les fonctions. Par exemple, vous voudrez peut-être vous assurer que la valeur de couleur transmise au mélange est une couleur valide, ou que le nombre passé à la fonction a la bonne unité. La validation d'entrée peut également être utilisée pour appliquer certaines contraintes ou règles dans le code, comme s'assurer qu'un certain paramètre est toujours fourni, ou qu'une valeur se situe dans une plage spécifique.
Oui, vous pouvez utiliser la fonction mixin-exists()
pour tester si le mixin existe dans SASS. Si Mixin existe, cette fonction renvoie vrai, sinon faux. Ceci est très utile pour prévenir les erreurs dans votre code, car vous pouvez vérifier si le mixin existe avant d'essayer de l'inclure.
unit()
pour la validation d'entrée dans SASS? dans unit()
dans SASS renvoie l'unité d'un nombre. Vous pouvez utiliser cette fonction dans la validation d'entrée pour vérifier si le numéro a la bonne unité. Par exemple, vous pouvez vous assurer que la valeur de longueur transmise au mixin est en pixels, ou que la valeur temporelle transmise à la fonction est en quelques secondes.
Les meilleures pratiques pour valider les entrées dans SASS Mixin incluent: toujours la vérification des données d'entrée; Message d'erreur; et testez soigneusement votre code pour vous assurer que la vérification de vérification fonctionne correctement. @error
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!