Javascript convertit Markdown/Textile en HTML (idéalement, renvoie Markdown/Textile)
P粉295616170
2023-08-24 20:46:39
<p>Il existe plusieurs bons <strong>éditeurs</strong> Javascript pour Markdown / Textile (par exemple : http://attacklab.net/showdown/, celui que j'utilise actuellement), mais ce dont j'ai besoin, c'est une fonction Javascript pour convertir des chaînes entre Markdown / Textile -> HTML. </p>
<p>Quelle est la meilleure approche ? (Idéalement, il devrait être compatible avec jQuery - par exemple <code>$("#editor").markdown_to_html()</code>)</p>
<p><strong>Edit : </strong>Une autre façon de dire cela est que je recherche les éléments <code>textilize()</code> /code> ; Implémentation Javascript> Assistant de texte</p>
J'ai pensé qu'il serait intéressant de lister ici les solutions JavaScript avec leur taille réduite (non compressée) et leurs avantages/inconvénients. La taille compressée du code minifié représente environ 50 % de la taille non compressée. Cela se résume à :
Tous utilisent la licence MIT et la plupart sont sur npm.
markdown-it : 104 Ko. Alimentation de StackExchange depuis la migration de CommonMark. Suit la spécification CommonMark, désormais plus ou moins la référence ; prend en charge les extensions de syntaxe ; produit une sortie sécurisée par défaut. Rapidement ; tout aussi puissant que Showdown, mais à une échelle beaucoup plus grande. Possède des tonnes de fonctionnalités (comme le défilement synchronisé). C'est aussi la base de http://dillinger.io/.
Showdown : 28 Ko. Bénéficie d'un support complet de CommonMark et était l'ancien étalon-or nettement plus petit que Markdown-It mais plus lent. C'est la base de la page suivante.
Page suivante : 8 Ko. Fournir une prise en charge de StackExchange avant la migration de CommonMark. Il est très puissant, mais manque de tableaux, de listes de définitions, de notes de bas de page, etc. En plus du script de conversion de 8 Ko, il fournit également des scripts d'édition et de nettoyage.
Réduit : 1,3 Ko. Divulgation complète, je l'ai écrit. Fonctionnalité plus large que tout autre convertisseur léger ; gère la plupart des spécifications CommonMark, mais pas toutes. Non recommandé pour l'édition par les utilisateurs, mais utile pour présenter des informations dans des applications Web. Pas de HTML en ligne.
tag : 19 Ko. Complet ; testé par rapport à la suite de tests unitaires ; prend en charge les règles lexer personnalisées.
micromarkdown : 5 Ko. De nombreuses fonctionnalités sont prises en charge, mais certaines fonctionnalités courantes sont manquantes, comme les listes non ordonnées utilisant
*
, et certaines fonctionnalités courantes qui ne font pas strictement partie de la spécification, comme des blocs de code isolés. De nombreuses erreurs, générant des exceptions sur la plupart des documents plus longs. Je pense que c'est expérimental.nano-markdown : 1,9 Ko. La portée des fonctionnalités est limitée à ce que la plupart des documentations utilisent ; plus puissante que le micromarkdown, mais pas parfaite ; elle utilise ses propres tests unitaires très basiques. Assez robuste, mais problématique dans de nombreux cas extrêmes.
mmd.js : 800 octets. Le résultat de nos efforts pour créer le plus petit analyseur possible encore utilisable. Un petit sous-ensemble est pris en charge ; la documentation doit être adaptée à cela.
markdown-js : 54 Ko (impossible de télécharger la version minifiée ; peut être minifiée) à ~ 20 Ko). Cela semble complet et comprend des tests, mais je ne le connais pas très bien.
meltdown : 41 Ko (ne peut pas être téléchargé une fois minifié ; peut être réduit à environ 15 Ko). Plugin jQuery ; Markdown Extra (tableaux, listes de définitions, notes de bas de page).
unified.js : Varie, 5-100 Ko. Un système basé sur un plugin pour la conversion entre HTML, Markdown et Prose. En fonction des plugins dont vous avez besoin (vérification orthographique, coloration syntaxique, nettoyage des entrées), la taille du fichier varie. Utilisez probablement plus le côté serveur que le côté client.
Pour Markdown -> HTML, il y a Showdown
StackOverflow lui-même utilise le langage Markdown pour les questions-réponses. L'avez-vous essayé pour voir comment cela fonctionne ?
Eh bien, il semble utiliser PageDown, qui est disponible sous licence MIT p>
QuestionExiste-t-il une bonne bibliothèque ou un bon contrôle Javascript Markdown ? et ses réponses peuvent également être utiles :-)
Bien sûr, un éditeur complet n'est pas exactement ce que vous demandez ; mais ils doivent utiliser une fonction pour convertir le code Markdown en HTML et, en fonction de la licence de ces éditeurs, vous pourrez peut-être réutiliser cette fonction ; ...
En fait, si vous regardez de plus près Showdown, dans son code source (fichier showdown.js) vous trouverez cette partie du commentaire :
Ce n'est pas la syntaxe jQuery, mais devrait être facile à intégrer dans votre application ;-)
Concernant le textile, il semble difficile de trouver quoi que ce soit d'utile :-(
HTML -> Markdown, par contre, j'imagine que les choses pourraient être un peu plus difficiles...
Ce que je ferais, c'est stocker à la fois Markdown et HTML dans le magasin de données (base de données ?) de mon application et utiliser l'un pour l'édition et l'autre pour le rendu... prendrait plus de place, mais semble mieux que "décrypter". Moins risqué "HTML ...