Maison >interface Web >js tutoriel >buildDesignSystem fn dans le code source CSS de Tailwind.
Dans cet article, nous analysons la fonction buildDesignSystem dans le code source CSS Tailwind.
Type DesignSystem choisi dans design-system.ts
export type DesignSystem = { theme: Theme utilities: Utilities variants: Variants invalidCandidates: Set<string> // Whether to mark utility declarations as !important important: boolean getClassOrder(classes: string[]): [string, bigint | null][] getClassList(): ClassEntry[] getVariants(): VariantEntry[] parseCandidate(candidate: string): Candidate[] parseVariant(variant: string): Variant | null compileAstNodes(candidate: Candidate): ReturnType<typeof compileAstNodes> getVariantOrder(): Map<Variant, number> resolveThemeValue(path: string): string | undefined // Used by IntelliSense candidatesToCss(classes: string[]): (string | null)[] }
Au moment de la rédaction de cet article, design-system.ts compte environ 144 LOC.
Discutons de la manière dont les valeurs renvoyées par la fonction utilitaire DefaultMap sont utilisées dans designSystem.
let parsedVariants = new DefaultMap((variant) => parseVariant(variant, designSystem)) let parsedCandidates = new DefaultMap((candidate) => Array.from(parseCandidate(candidate, designSystem)), ) let compiledAstNodes = new DefaultMap<Candidate>((candidate) => compileAstNodes(candidate, designSystem), )
Ces variables sont utilisées dans l'objet designSystem comme indiqué ci-dessous :
parseCandidate(candidate: string) { return parsedCandidates.get(candidate) }, parseVariant(variant: string) { return parsedVariants.get(variant) }, compileAstNodes(candidate: Candidate) { return compiledAstNodes.get(candidate) },
les utilitaires et les variantes sont les valeurs renvoyées par createUtilities et createVariants.
Les clés telles que candidatsToCss, getVariantOrder et solveThemeValue ont leurs implémentations de fonctions qui nécessitent une analyse plus approfondie.
Chez Think Throo, nous avons pour mission d'enseigner les concepts architecturaux avancés de base de code utilisés dans les projets open source.
10x vos compétences en codage en pratiquant des concepts architecturaux avancés dans Next.js/React, apprenez les meilleures pratiques et construisez des projets de niveau production.
Nous sommes open source — https://github.com/thinkthroo/thinkthroo (Donnez-nous une étoile !)
Nous fournissons également des services de développement Web et de rédaction technique. Contactez-nous à hello@thinkthroo.com pour en savoir plus !
https://github.com/tailwindlabs/tailwindcss/blob/next/packages/tailwindcss/src/design-system.ts
https://github.com/tailwindlabs/tailwindcss/blob/c01b8254e822d4f328674357347ca0532f1283a0/packages/tailwindcss/src/index.ts#L319
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!