Squire est un éditeur de texte enrichi HTML5 extrêmement léger, parfaitement adapté aux formulaires de saisie riches et à la création simple de documents de vos applications. Il prend en charge plusieurs navigateurs, mais évite délibérément la complexité de la prise en charge des navigateurs plus anciens. Cela fonctionne mieux en commençant par Opera 10, Firefox 3.5, Safari 4, Chrome 9 et IE8..
Squire n'est pas conçu pour créer et éditer des pages de sites Web WYSIWYG. Toutefois, pour de nombreuses applications de saisie de texte enrichi et d'applications Web, Squire peut être exactement ce dont vous avez besoin. Il fournit le pouvoir sans le gonflement. Il est également autorisé par le MIT pour une réutilisation flexible.
Dans ce tutoriel, je vais vous montrer comment télécharger Squire et comment créer des exemples de formulaires de saisie. Si vous souhaitez voir Squire en action, visitez la démo.
L’équipe FastMail a conçu Squire pour simplifier ses exigences en matière d’éditeur de messagerie Web. FastMail est une excellente alternative de messagerie basée sur le cloud à Gmail. Je suis un utilisateur quotidien de FastMail. Basé en Australie et régi par des lois différentes de celles des États-Unis, la protection de la vie privée des utilisateurs de FastMail est légèrement améliorée. Vous pouvez en savoir plus à ce sujet ici: FastMail dit que la surveillance de la NSA est gratuite.
Comme l'équipe de FastMail l'a écrit sur leur blog, ils utilisaient auparavant CKeditor:
Bien que ce ne soit pas un mauvais choix, il a été conçu, comme la plupart des autres éditeurs, pour créer des sites Web et non pour envoyer des courriels. En tant que tel, le simple fait d'insérer une image par défaut présentait un dialogue avec trois onglets et davantage d'options que vous n'auriez pu imaginer… Il comportait également sa propre boîte à outils d'interface utilisateur et son propre cadre, qu'il nous aurait fallu fortement personnaliser pour s'adapter au reste de la nouvelle interface utilisateur que nous construisions; une douleur à maintenir.
En nous concentrant sur la vitesse et la performance, nous nous sommes également préoccupés de la taille du code. La version de CKEditor que nous utilisons pour notre précédente interface utilisateur (classique), qui n'inclut que les plugins dont nous avons besoin, est un téléchargement de 159 ko (une fois compressé; 441 ko compressé; non compressé). C'est juste le code, à l'exclusion des styles et des images.
Ils ont décidé de partir de zéro pour construire Squire. À seulement 11,5 Ko de JavaScript après minification et gzip (34,7 Ko non compressé) et sans dépendance, Squire est extrêmement léger.
Les résultats sont impressionnants. Le poids de code combiné nécessaire pour charger tout leur écran de composition, bibliothèque de base, code de modèle de courrier et de contacts et tout le code de l'interface utilisateur pour restituer l'écran complet ne représente plus que 149,4 Ko (459,7 Ko non compressé) - moins que CKEditor seul..
Squire n'a pas de dépendances. Il n'y a pas de wrapper XHR, de bibliothèque de widgets ou de superpositions de lightbox. Il n'y a pas d'interface utilisateur pour une barre d'outils, ce qui élimine le fardeau d'avoir deux kits d'outils d'interface utilisateur chargés. C'est juste un simple composant pouvant être manipulé via JavaScript.
Squire manipule le DOM à l'aide des API de sélection et de plage. Cela élimine les incompatibilités courantes entre les navigateurs. Encore une fois, à partir du blog FastMail:
Créer un éditeur de texte riche est notoirement difficile en raison du fait que les différents navigateurs sont extrêmement incohérents dans ce domaine. Les API ont toutes été introduites par Microsoft à l'époque de IE, puis copiées par les autres fournisseurs de différentes manières incompatibles… la plupart des éditeurs de texte enrichi exécutent une commande, puis tentent de nettoyer le désordre créé par le navigateur. Avec Squire, nous contournons soigneusement cette.
La philosophie générale de Squire est de permettre au navigateur de faire tout ce qui est en son pouvoir (ce qui n’est malheureusement pas grand chose), mais de prendre le contrôle partout où il s'écarte de ce qui est requis ou de grandes différences entre les navigateurs..
Installation de Squire
Tout d’abord, visitez la page Squire Github et clonez ou téléchargez le code source:
Deuxièmement, copiez le contenu de la construire/
répertoire dans votre application.
Troisièmement, éditez le bloquer
document.html
pour ajouter les styles par défaut que vous voudriez que l'éditeur utilise (ou un lien vers une feuille de style externe).
Regardons l'application de démonstration fournie avec Squire. Lors de l'utilisation de Squire, au lieu d'un élément, vous utilisez un
.
Dans la démo c'est:
Document.html
est une toile vierge avec des styles par défaut et charge Squire:
Lorsque vous utilisez Squire, vous associez un écouteur d'événement à l'événement de chargement de l'iframe. Lorsque cela se déclenche, vous pouvez saisir une référence à l'objet d'édition via iframe.contentWindow.editor
. Par exemple, l'iframe de démonstration comprend:
onload = "top.editor = this.contentWindow.editor"
La démo comporte deux types de liens permettant de manipuler du contenu dans Squire. Les commandes simples pouvant fonctionner avec tout texte sélectionné ressemblent à ceci:
Audacieux
Et les commandes complexes nécessitant une entrée utilisateur supplémentaire ressemblent à ceci; ils ajoutent l'invite c:
Taille de police
Voici à quoi ressemble l'application de démonstration:
Le code JavaScript situé en haut de la page de démonstration écoute les clics sur ces commandes span. Si la classe d'invite existe, elle collecte plus d'informations de l'utilisateur:
Ensuite, il appelle l'éditeur Squire avec la commande et toute valeur fournie par l'utilisateur. Squire applique ensuite la commande au texte actuellement sélectionné:
éditeur [id] (valeur);
Vous pouvez en apprendre plus sur Squire et voir la documentation complète de son API dans le fichier Lisez-moi..
A titre d'exemple, ajoutons deux commandes qui lisent l'état de l'éditeur Squire. Nous allons ajouter deux liens au bas de l'en-tête de commande de la démo:
obtenir une sélection | obtenir un doc
Lorsque vous sélectionnez du texte et que vous cliquez dessus, la sélection apparaîtra dans l'alerte, comme indiqué ci-dessous..
Examinons la démo la plus esthétique et sa barre d’outils:
Le bloc de tête de cette page intègre des feuilles de style pour Bootstrap et un appelé Squire-UI
. Il fournit également JavaScript pour cette Squire-UI
.
Écuyer Il offre également du HTML statique pour une zone de texte dans le corpsMais en charge, son JQuery
$ (document) .ready
la fonction remplace la statique#foo
textarea avec sesSquireUI
.La configuration de la barre d'outils est implémentée avec une configuration assez complexe de JQuery, AJAX, HTML5 et CSS. Il charge cette page HTML pour afficher la plupart de la barre d’outils: http://neilj.github.io/Squire/build/Squire-UI.html.
$ (div) .load (options.buildPath + 'Squire-UI.html', function () this.linkDrop = new Drop (cible: $ ('# makeLink'). first () [0], contenu: $ ('# drop-link'). html (), position: 'bottom center', openOn: 'click');Voici un sous-ensemble du code source de Squire-UI.html afin que vous puissiez voir ce qui est chargé:
…Cela aurait peut-être été bien de fournir une extension à la barre d'outils Bootstrap simplifiée dans le code de distribution, mais vous pouvez certainement tirer des leçons de ce qu'ils ont fait dans leur propre démo ci-dessus..
J'espère que vous trouverez Squire utile pour vos propres applications. N'hésitez pas à poster des corrections, des questions ou des commentaires ci-dessous. Vous pouvez également me joindre sur Twitter @reifman ou m'envoyer un email directement.
Liens connexes
- Squire: l'éditeur de texte enrichi de FastMail
- Page de démonstration de Squire
- Squire Codebase sur Github