Squire is een uiterst lichte HTML5-rich text-editor die het best geschikt is voor de rijke invoerformulieren van uw applicaties en voor eenvoudige documentcreatie. Het biedt ondersteuning voor meerdere browsers, maar voorkomt opzettelijk de complexiteit van het ondersteunen van oudere browsers. Het werkt het beste vanaf Opera 10, Firefox 3.5, Safari 4, Chrome 9 en IE8.
Squire is niet bedoeld voor het maken en bewerken van WYSIWYG-webpagina's. Voor veel rich-textinvoer en webtoepassingsdoeleinden is Squire misschien precies wat u nodig hebt. Het levert de kracht zonder de bloat. Het is ook MIT-licentie voor flexibel hergebruik.
In deze zelfstudie laat ik je zien hoe je Squire download en er voorbeeldinvoervormen mee kunt maken. Als je Squire in actie wilt zien, bezoek dan de demo.
Het FastMail-team heeft Squire gebouwd om de vereisten voor de webmaileditor te vereenvoudigen. FastMail is een uitstekend e-mailalternatief in de cloud voor Gmail: ik ben een dagelijkse FastMail-gebruiker. Omdat het in Australië is gevestigd en onder andere wetten werkt dan in de Verenigde Staten, zijn er enigszins verbeterde privacybescherming voor FastMail-gebruikers. U kunt hier meer over lezen: FastMail zegt dat het vrij is van NSA-bewaking.
Zoals het FastMail-team op hun blog schreef, gebruikten ze eerder CKeditor:
Hoewel het geen slechte keuze was, zoals de meeste andere editors, was het bedoeld voor het maken van websites en niet voor het schrijven van e-mails. Als zodanig presenteerde simpelweg het standaard invoegen van een afbeelding een dialoog met drie tabbladen en meer opties dan je voor mogelijk hield ... Het kwam ook met zijn eigen UI-toolkit en -raamwerk, die we enorm moesten aanpassen om in te passen in de rest van de nieuwe gebruikersinterface die we aan het bouwen waren; een pijn om te onderhouden.
Met onze focus op snelheid en prestaties waren we ook bezorgd over de codeafmeting. De versie van CKEditor die we gebruiken voor onze vorige (klassieke) gebruikersinterface, die alleen de plug-ins bevat die we nodig hebben, is een download van 159 KB (wanneer gzipped; ongecomprimeerd is dit 441 KB). Dat is alleen de code, met uitzondering van stijlen en afbeeldingen.
Ze besloten om helemaal opnieuw te beginnen en Squire te bouwen. Met slechts 11,5 KB JavaScript na minificatie en gzip (ongecomprimeerd 34,7 KB) en zonder afhankelijkheden, is Squire extreem licht.
De resultaten zijn indrukwekkend. Het gecombineerde codegewicht dat vereist is om hun gehele samenstellingsscherm, basisbibliotheek, e-mail en contactenmodelcode en alle UI-code te laden om het volledige scherm te renderen, komt nu slechts uit op 149,4 KB (459,7 KB niet-gecomprimeerd), tenzij CKEditor alleen.
Squire heeft geen afhankelijkheden. Er is geen XHR-wrapper, widgetbibliotheek of lightbox-overlays. Er is geen gebruikersinterface voor een werkbalk, waardoor de druk van het laden van twee UI-toolkits wordt geëlimineerd. Het is gewoon een simpel component die kan worden gemanipuleerd via JavaScript.
Squire manipuleert de DOM met behulp van selectie- en bereik-API's. Dit elimineert veel voorkomende compatibiliteit met andere browsers. Nogmaals, van het FastMail-blog:
Het maken van een rich text-editor is notoir moeilijk vanwege het feit dat verschillende browsers extreem inconsistent zijn op dit gebied. De API's werden allemaal geïntroduceerd door Microsoft in de hoogtijdagen van IE, en werden vervolgens door de andere leveranciers op verschillende incompatibele manieren gekopieerd ... de meeste RTF-editors voeren een opdracht uit en proberen dan de rommel op te ruimen die de browser heeft gemaakt. Met Squire omzeilen we dit netjes.
De algemene filosofie van Squire is om de browser zo veel mogelijk te laten doen (wat helaas niet zo veel is), maar de controle overal waar het afwijkt van wat nodig is over te nemen, of er zijn significante verschillen tussen browsers.
Squire installeren
Ga eerst naar de Squire Github-pagina en kloon of download de broncode:
Ten tweede, kopieer de inhoud van de bouwen/
map in uw toepassing.
Ten derde, bewerk de blokkeren
document.html
om de standaardstijlen toe te voegen die u wilt dat de editor gebruikt (of een koppeling naar een externe stylesheet).
Laten we eens kijken naar de demo-applicatie die bij Squire is meegeleverd. Bij het gebruik van Squire, in plaats van een element, gebruik je een
.
In de demo is dat:
Document.html
is een leeg canvas met standaardstijlen en het laadt Squire:
Wanneer u Squire gebruikt, koppelt u een gebeurtenislistener aan de laadgebeurtenis van het iframe. Wanneer dit wordt geactiveerd, kunt u een verwijzing naar het editorobject doornemen iframe.contentWindow.editor
. Het demo-iframe omvat bijvoorbeeld:
onload = "top.editor = this.contentWindow.editor"
De demo heeft twee soorten links voor het manipuleren van inhoud binnen Squire. Simpele commando's die kunnen werken met elke geselecteerde tekst zien er als volgt uit:
Stoutmoedig
En complexe opdrachten waarvoor extra gebruikersinvoer nodig is, zien er als volgt uit; zij voegen de prompt c toe:
Lettertypegrootte
Dit is hoe de demotoepassing eruit ziet:
Het JavaScript boven aan de demonstratiepagina luistert naar klikken naar deze bereikopdrachten. Als de aanwijzingsklasse bestaat, verzamelt deze meer informatie van de gebruiker:
Vervolgens roept het de Squire-editor op met het commando en elke door de gebruiker geleverde waarde. Squire past dan de opdracht toe op de momenteel geselecteerde tekst:
editor [id] (waarde);
U kunt meer over Squire leren en de volledige API-documentatie bekijken in de ReadMe.
Laten we als voorbeeld twee opdrachten toevoegen die de status van de Squire-editor lezen. We voegen twee links toe aan de onderkant van de opdrachtkop van de demo:
verkrijg selectie | krijg doc
Wanneer u wat tekst selecteert en erop klikt, verschijnt de selectie in de waarschuwing zoals hieronder weergegeven.
Laten we de meer esthetische demo en zijn werkbalk eens bekijken:
Het hoofdblok voor deze pagina integreert stylesheets voor Bootstrap en één genaamd Squire-UI
. Het biedt ook JavaScript hiervoor Squire-UI
.
Schildknaap Het biedt ook statische HTML voor een tekstgebied in het lichaamMaar bij het laden, zijn JQuery
$ (Document) .ready
functie vervangt de statische#foo
textarea met zijnSquireUI
.De werkbalkconfiguratie is geïmplementeerd met een vrij complexe configuratie van JQuery, AJAX, HTML5 en CSS. Het laadt deze HTML-pagina om het grootste deel van de werkbalk weer te geven: http://neilj.github.io/Squire/build/Squire-UI.html.
$ (div) .load (options.buildPath + 'Squire-UI.html', function () this.linkDrop = new Drop (target: $ ('# makeLink'). first () [0], inhoud: $ ('# drop-link'). html (), positie: 'bottom center', openOn: 'click');Hier is een subset van de broncode voor Squire-UI.html, zodat je kunt zien wat er wordt geladen:
...Het zou leuk geweest zijn als ze een vereenvoudigde Bootstrap-werkbalk in de distributiecode als een add-on hadden verstrekt, maar je kunt zeker leren van wat ze in hun eigen demo hierboven hebben gedaan.
Ik hoop dat je Squire nuttig vindt voor je eigen toepassingen. Aarzel niet om correcties, vragen of opmerkingen hieronder te plaatsen. Je kunt me ook bereiken via Twitter @reifman of mij rechtstreeks een e-mail sturen.
Gerelateerde Links
- Squire: RichMail's Rich Text Editor
- Squire demonstratiepagina
- Squire Codebase op Github