Comment j'ai créé un beautificateur de code en deux jours
Apr 19, 2025 am 10:19 AMRécemment, j'ai con?u un diagramme filaire d'un outil d'embellissement de code. Le lendemain, j'ai décidé de le transformer en un vrai outil. L'ensemble du projet a été achevé en moins de deux jours.
J'ai pensé à construire un nouvel outil d'embellissement de code. L'idée n'est pas unique, mais chaque fois que j'utilise l'outil de quelqu'un d'autre, je me retrouve à réappliquer les mêmes paramètres encore et encore et à éviter les publicités à chaque fois . ?? ?
Je voulais un outil simple et facile à utiliser sans tracas, alors la semaine dernière, j'ai pris du papier et j'ai commencé à esquisser un fil de fil. J'aime vraiment dessiner des wireframes à la main. Con?u avec un crayon et du papier, mon cerveau fonctionne mieux que de regarder l'écran.
J'ai été immédiatement inspiré après avoir dessiné le wireframe. Le lendemain, j'ai pris du temps de mon travail quotidien et en ai transformé la réalité. ????
Afficher les résultats
conception
Je sais que je veux que l'éditeur de code soit au centre de l'outil, j'ai donc créé une barre de menu mince en haut pour les modes de contr?le (par exemple HTML, CSS, JavaScript) et les paramètres. J'ai également ajouté un bouton "à propos".
L'éditeur lui-même occupe la majeure partie de l'écran, mais il se mélange bien avec l'arrière-plan, vous le remarquez donc à peine. Au lieu d'utiliser des instructions pour gaspiller de l'espace, j'ai utilisé un espace réservé qui dispara?t lorsque vous commencez à taper.
En bas, j'ai créé une barre d'état qui affiche des statistiques en temps réel sur le code, y compris le mode actuel, les paramètres d'indentation, le nombre de lignes, le nombre de caractères et la taille du document en octets. Il y a des boutons clairs et propres et copys sur le c?té droit de la barre d'état. Au milieu se trouve le logo qui montre mon propre service.
Je ne pense pas que de nombreux développeurs écrit du code sur leurs téléphones, mais je veux toujours que cet outil s'exécute sur des appareils mobiles. En plus des techniques réactives couramment utilisées, j'ai également d? surveiller la taille de la fenêtre et ajuster la position de l'onglet lorsque l'écran est devenu trop étroit.
J'utilise des unités Flexbox et de la fenêtre pour le redimensionnement vertical. C'est en fait facile à faire, à l'exception d'un petit problème iOS. Voici un stylo montrant le wireframe de base. Notez comment la zone de texte s'étire pour remplir l'espace inutilisé entre le titre et le pied de page.
Si vous regardez l'onglet JavaScript, vous verrez des problèmes et des solutions iOS. Je ne sais pas comment détecter une telle fonctionnalité, donc maintenant c'est juste un simple contr?le d'appareil.
Réglage du traitement
Je veux que les paramètres les plus couramment utilisés soient faciles à accéder, mais exposent également les paramètres avancés pour chaque mode. Pour ce faire, j'ai transformé le bouton Paramètres en pop-up avec des liens vers des paramètres plus avancés. Après avoir modifié les paramètres, l'interface utilisateur sera mise à jour immédiatement et les paramètres seront enregistrés sur LocalStorage pendant longtemps.
J'utilise Vue.js ici. Chaque paramètre est mappé sur une propriété de données, et lorsque l'un d'eux change, les mises à jour de l'interface utilisateur (si nécessaire) et j'appelle SaveSettings (). C'est à peu près comme ?a.
fonction SaveSettings () { const Settings = {}; // SettingStostore est un tableau de noms d'attributs qui seront persistés // "Ce" fait référence au modèle Vue actuel settingstostore.map (key => paramètres [key] = this [key]); localStorage.SetItem (?Paramètres?, JSON.StRINGIFY (paramètres)); }
Chaque paramètre est une propriété de données synchronisée avec LocalStorage. Il s'agit d'un moyen de stockage d'état plut?t primitif, je peux donc mettre à jour l'application plus tard pour utiliser des bibliothèques de gestion d'état telles que Vuex.
Pour restaurer les paramètres, j'ai une fonction de restauration () qui s'exécute lorsque l'application démarre.
Fonction RestroreSettings () { const JSON = localStorage.getItem (?Paramètres?); if (json) { essayer { const Settings = JSON.Parse (JSON); Object.keys (paramètres) .ForEach (key => { if (settingstostore.cluds (key)) { this [key] = paramètres [key]; } }); } catch (err) { Window.Alert ('Erreur Chargement des paramètres précédents'); } } }
Cette fonction obtient des paramètres de LocalStorage et les applique un par un, en s'assurant que seuls les paramètres valides dans SettingStostore sont importés.
Le lien des paramètres avancés ouvre une bo?te de dialogue avec chaque onglet de mode. Malgré plus de 30 paramètres au total, tout est organisé et accessible afin que les utilisateurs ne se sentent pas dépassés.
Appliquer le thème
Le mode sombre est très populaire de nos jours, il est donc activé par défaut. Pour ceux qui l'aiment, il y a aussi un thème de couleur vive. L'interface utilisateur entière changera à l'exception des fenêtres contextuelles et des dialogues.
J'ai envisagé d'utiliser prefers-color-scheme
, qui se trouvaient dans Firefox 67 récemment, mais j'ai décidé de changer les boutons pourrait être meilleur. La prise en charge du navigateur pour les requêtes de préférence de thème de couleur n'est pas très bonne, et les développeurs sont bizarres. (Par exemple, j'utilise des macos avec un thème brillant, mais mon éditeur de texte est sombre.)
Définir les fonctions
Il est facile de trouver un point de fonctionnalité. Il est difficile de limiter les fonctionnalités de la version initiale. Voici les fonctionnalités les plus pertinentes que j'ai publiées tout de suite:
- Embellir le code HTML, CSS et JavaScript
- Syntaxe Soulignation avec correspondance d'étiquette / support
- Coller ou faire glisser et déposer un fichier pour charger le code
- Détecter automatiquement les préférences d'indentation en fonction du code collé ou des fichiers glisser-déposer
- Thèmes brillants et sombres
- Nettoyage et copie en un clic
- Raccourcis clavier
- La plupart des options d'embellissement JS sont configurables
- Les paramètres sont stockés indéfiniment dans localstorage
- UI minimal, pas de publicités (juste une publicité discret pour mon propre service)?
J'ai également ajouté des ?ufs de Paques pour le plaisir. Essayez de rafra?chir la page, d'explorer les raccourcis et de le partager sur Facebook ou Twitter pour les trouver. ?
Outils et bibliothèques que j'utilise
J'aime vraiment Vue.js. Cela peut être un peu trop pour ce projet, mais la Vue CLI me permet de commencer à construire avec tous les derniers outils avec une commande simple.
Vue créer un beau code
Je n'ai pas eu à perdre de temps à construire un échafaudage, ce qui m'a aidé à construire cet outil rapidement. De plus, Vue est très pratique dans les statistiques en temps réel, la modification des thèmes, les paramètres de commutation, etc. J'ai utilisé divers composants d'interface utilisateur d'élément tels que les boutons, les éléments de formulaire, les fenêtres contextuelles et les bo?tes de dialogue.
L'éditeur est alimenté par Codemirror et utilise des styles personnalisés. Il s'agit d'un projet bien soutenu et excellent que je recommande fortement pour l'édition de code dans le navigateur.
La bibliothèque qui fait toute l'embellissement s'appelle JS Embeltify, qui gère JavaScript, HTML et CSS. JS Embeltify fonctionne du c?té du client, donc cette application n'a pas réellement de backend - votre navigateur fait tout le travail!
JS Embeltify est très facile à utiliser. Installez-le à l'aide npm install js-beautify
et exécutez votre code via la fonction correspondante.
importer la beauté de ?js-beautify?; const code = 'votre code ici'; Paramètres const = { // vos paramètres ici }; // html const html = belle.html (code, paramètres) // CSS const CSS = belle.css (code, paramètres) // javascript const js = belle.js (code, paramètres)
Chaque fonction renvoie une cha?ne contenant le code embelli. Vous pouvez modifier la méthode de sortie de chaque langue en passant dans vos propres paramètres.
On m'a demandé à plusieurs reprises de plus jolis, ce qui est un outil similaire, il convient donc de mentionner que j'ai choisi JS Embellir parce qu'il n'est pas trop arbitraire et plus configurable. Si la demande est suffisamment grande, j'envisagerais d'ajouter une option pour basculer entre JS Embeltify et plus jolie.
J'ai déjà utilisé ces bibliothèques, donc l'intégration est en fait très facile. ?
Ce projet est grace à mon application surréaliste CMS. Si vous recherchez un excellent CMS pour les sites Web statiques, consultez-le - il est gratuit pour les sites personnels, éducatifs et à but non lucratif!
Oh, si vous voulez savoir quel éditeur j'utilise ... c'est le code Visual Studio. ????
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!

Outils d'IA chauds

Undress AI Tool
Images de déshabillage gratuites

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

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

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
échangez les visages dans n'importe quelle vidéo sans effort grace à notre outil d'échange de visage AI entièrement gratuit?!

Article chaud

Outils chauds

Bloc-notes++7.3.1
éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Il existe trois fa?ons de créer un rotateur de chargement CSS: 1. Utilisez le rotateur de base des frontières pour obtenir une animation simple via HTML et CSS; 2. Utilisez un rotateur personnalisé de plusieurs points pour atteindre l'effet de saut à travers différents temps de retard; 3. Ajoutez un rotateur dans le bouton et basculez les classes via JavaScript pour afficher l'état de chargement. Chaque approche souligne l'importance des détails de conception tels que la couleur, la taille, l'accessibilité et l'optimisation des performances pour améliorer l'expérience utilisateur.

Pour faire face à la compatibilité du navigateur CSS et aux problèmes de préfixe, vous devez comprendre les différences de prise en charge du navigateur et utiliser raisonnablement les préfixes des fournisseurs. 1. Comprendre les problèmes communs tels que Flexbox et le support de la grille, Position: Sticky Invalid et les performances d'animation sont différentes; 2. Vérifier l'état du support de la fonction de confirmation de Caniuse; 3. Utilisez correctement -webkit-, -moz-, -ms-, -o- et autres préfixes du fabricant; 4. Il est recommandé d'utiliser AutopRefixer pour ajouter automatiquement les préfixes; 5. Installez PostCSS et configurez le navigateur pour spécifier le navigateur cible; 6. Gérer automatiquement la compatibilité pendant la construction; 7. Les fonctionnalités de détection modernizr peuvent être utilisées pour les anciens projets; 8. Pas besoin de poursuivre la cohérence de tous les navigateurs,

HEMAINDIFFERENCESBetweendisplay: Inline, Block, Andinline-BlockInhtml / CSSareLayoutBehavior, SpaceUsage et StylingControl.1.InlineElementsflowWithText, Don'tStartNewLines, Ignorewidth / Height, AndonlyApplyhorizontalPadding / Marges - IdealForninetLetetStyLinSing

La définition du style de liens que vous avez visité peut améliorer l'expérience utilisateur, en particulier dans les sites Web à forte intensité de contenu pour aider les utilisateurs à mieux naviguer. 1. Utilisez CSS: Pseudo-classe visité pour définir le style du lien visité, tels que les changements de couleur; 2. Notez que le navigateur permet uniquement la modification de certains attributs en raison des restrictions de confidentialité; 3. La sélection des couleurs doit être coordonnée avec le style global pour éviter la brutalité; 4. Le terminal mobile peut ne pas afficher cet effet et il est recommandé de le combiner avec d'autres invites visuelles telles que les logos auxiliaires ic?nes.

Utilisez l'attribut Clip-Path de CSS pour recadrer des éléments en formes personnalisées, telles que les triangles, les encoches circulaires, les polygones, etc., sans compter sur des images ou des SVG. Ses avantages incluent: 1. Prend en charge une variété de formes de base telles que le cercle, l'ellipse, le polygone, etc.; 2. Ajustement réactif et adaptable aux terminaux mobiles; 3. Facile à l'animation, et peut être combiné avec le survol ou le javascript pour obtenir des effets dynamiques; 4. Il n'affecte pas le flux de disposition et ne culte que la zone d'affichage. Les usages communs sont tels que le chemin de clip circulaire: cercle (50pxatcenter) et trame de clip Triangle: polygone (50% 0%, 100 0%, 0 0%). Avis

Thecspaintingapienablesdynamicimagegenerationincsususingjavascript.1.DevelobersCreatEAPAINTWORLetClassWithapaint () Méthode.2.TheyEgisterItViaRegisterPaint (). 3.TheCustomPaintFonctionIstHenusedIncSspropertiesLILYBACKUNT-IMAGE.THISALLOWNAMICICIVES

Pour créer des images réactives à l'aide de CSS, elle peut être principalement réalisée grace aux méthodes suivantes: 1. Utilisez la largeur maximale: 100% et hauteur: Auto pour permettre à l'image de s'adapter à la largeur du conteneur tout en maintenant la proportion; 2. Utilisez les attributs SRCSET et tailles de HTML pour charger intelligemment les sources d'image adaptées à différents écrans; 3. Utilisez l'objet-ajustement et la position d'objet pour contr?ler le recadrage d'images et l'affichage de la mise au point. Ensemble, ces méthodes garantissent que les images sont présentées clairement et magnifiquement sur différents appareils.

Différents navigateurs ont des différences dans l'analyse CSS, ce qui entra?ne des effets d'affichage incohérents, y compris principalement la différence de style par défaut, la méthode de calcul du modèle de bo?te, le niveau de support Flexbox et la disposition de la grille et le comportement incohérent de certains attributs CSS. 1. Le traitement de style par défaut est incohérent. La solution consiste à utiliser cssreset ou normaliser.css pour unifier le style initial; 2. La méthode de calcul du modèle de bo?te de l'ancienne version de IE est différente. Il est recommandé d'utiliser la taille d'une bo?te: Border-Box de manière unifiée; 3. Flexbox et Grid fonctionnent différemment dans les cas de bord ou dans les anciennes versions. Plus de tests et utilisent Autoprefixer; 4. Certains comportements d'attribut CSS sont incohérents. Caniuse doit être consulté et rétrogradé.
