recherche
Maisoninterface Webtutoriel CSSComment j'ai créé un beautificateur de code en deux jours

Comment j'ai créé un beautificateur de code en deux jours

Ré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 Pâques 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 grâce à 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!

Déclaration
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Style CSS de niveau supérieur pour les curseursStyle CSS de niveau supérieur pour les curseursApr 23, 2025 am 11:04 AM

Les curseurs personnalisés avec CSS sont excellents, mais nous pouvons faire passer les choses au niveau supérieur avec JavaScript. À l'aide de JavaScript, nous pouvons passer entre les états du curseur, placer du texte dynamique dans le curseur, appliquer des animations complexes et appliquer des filtres.

Worlds Collide: Détection de collision de l'ordre clé à l'aide de requêtes de styleWorlds Collide: Détection de collision de l'ordre clé à l'aide de requêtes de styleApr 23, 2025 am 10:42 AM

Les animations CSS interactives avec des éléments se ricochent semblent plus plausibles en 2025. Bien qu'il soit inutile de mettre en œuvre Pong dans CSS, la flexibilité et la puissance croissantes de CSS renforcent le soupçon de Lee selon lequel un jour, ce sera un jour

Utilisation du filtre de fond CSS pour les effets d'interface utilisateurUtilisation du filtre de fond CSS pour les effets d'interface utilisateurApr 23, 2025 am 10:20 AM

Conseils et astuces sur l'utilisation de la propriété CSS Back-Filter pour styliser les interfaces utilisateur. Vous apprendrez à superposer des filtres en toile de fond entre plusieurs éléments et à les intégrer à d'autres effets graphiques CSS pour créer des conceptions élaborées.

Smil sur?Smil sur?Apr 23, 2025 am 09:57 AM

Eh bien, il s'avère que les fonctionnalités d'animation intégrées de SVG n'ont jamais été obsolètes comme prévu. Bien sûr, CSS et JavaScript sont plus que capables de porter la charge, mais il est bon de savoir que Smil n'est pas mort dans l'eau comme précédemment

'Pretty' est dans l'œil du spectateur'Pretty' est dans l'œil du spectateurApr 23, 2025 am 09:40 AM

Yay, laissez-le saut pour le wat-wrap: joli atterrissage dans la technologie safari aperçu! Mais méfiez-vous qu'il est différent de la façon dont il fonctionne dans les navigateurs de chrome.

CSS-Tricks raconte xliiiCSS-Tricks raconte xliiiApr 23, 2025 am 09:35 AM

Cette mise à jour de CSS-Tricks met en évidence des progrès significatifs dans l'Almanac, des apparitions de podcast récentes, un nouveau guide CSS Counter et l'ajout de plusieurs nouveaux auteurs contribuant un contenu précieux.

La fonctionnalité @Apply de Tailwind est meilleure qu'il n'y paraîtLa fonctionnalité @Apply de Tailwind est meilleure qu'il n'y paraîtApr 23, 2025 am 09:23 AM

La plupart du temps, les gens présentent la fonctionnalité de Tailwind avec l'un des utilitaires à propriété unique de Tailwind (qui modifie une seule déclaration CSS). Lorsqu'il est présenté de cette façon, @Apply ne semble pas du tout prometteur. So évidence

Se sentir comme je n'ai pas de libération: un voyage vers les déploiements sainsSe sentir comme je n'ai pas de libération: un voyage vers les déploiements sainsApr 23, 2025 am 09:19 AM

Le déploiement comme un idiot se résume à un décalage entre les outils que vous utilisez pour déployer et la récompense en complexité réduite par rapport à la complexité ajoutée.

See all articles

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

Navigateur d'examen sécurisé

Navigateur d'examen sécurisé

Safe Exam Browser est un environnement de navigation sécurisé permettant de passer des examens en ligne en toute sécurité. Ce logiciel transforme n'importe quel ordinateur en poste de travail sécurisé. Il contrôle l'accès à n'importe quel utilitaire et empêche les étudiants d'utiliser des ressources non autorisées.

Télécharger la version Mac de l'éditeur Atom

Télécharger la version Mac de l'éditeur Atom

L'éditeur open source le plus populaire

Adaptateur de serveur SAP NetWeaver pour Eclipse

Adaptateur de serveur SAP NetWeaver pour Eclipse

Intégrez Eclipse au serveur d'applications SAP NetWeaver.

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Listes Sec

Listes Sec

SecLists est le compagnon ultime du testeur de sécurité. Il s'agit d'une collection de différents types de listes fréquemment utilisées lors des évaluations de sécurité, le tout en un seul endroit. SecLists contribue à rendre les tests de sécurité plus efficaces et productifs en fournissant facilement toutes les listes dont un testeur de sécurité pourrait avoir besoin. Les types de listes incluent les noms d'utilisateur, les mots de passe, les URL, les charges utiles floues, les modèles de données sensibles, les shells Web, etc. Le testeur peut simplement extraire ce référentiel sur une nouvelle machine de test et il aura accès à tous les types de listes dont il a besoin.