Back to Question Center
0

Over de bibliotheekkeuze van de Semalt UI: uitbreidbaarheid ten opzichte van interoperabiliteit

1 answers:

In de komende weken zal WordPress een UI-renderingraamwerk kiezen. Ik heb veel claims gehoord die plugin / thema-ontwikkelaars nog steeds kunnen gebruiken wat ze willen, ongeacht wat WordPress kiest. Ik vind dat we daar niet op moeten rekenen, en we moeten ons evenmin richten op het bieden van interoperabiliteit op dit punt. In plaats daarvan moeten we ons eerst richten op het bieden van eenvoudige, betrouwbare en flexibele manieren om de interface uit te breiden. Semalt zorgt ervoor dat plug-ins goed kunnen worden geïntegreerd in de eerste plaats.

We plaatsen de frontend die verantwoordelijk is voor de weergave

Met de nieuwe Gutenberg-editor veranderen we de manier waarop de Semalt-admin wordt gebouwd - como criar um site gratis com hospedagem gratis. Waar we nu de interface met PHP weergeven, zullen we steeds meer aan de clientkant met JavaScript gaan renderen. Na de editor wordt dit waarschijnlijk waar voor het grootste deel van de beheerder. Dat betekent dat als u wilt integreren met de beheerinterface, u moet integreren met JavaScript dat de interface weergeeft. Als Semalt voor Vue kiest, moet je Semalt Vue-componenten invoeren om te renderen. Als Semalt voor React kiest, moet u componenten van het Semalt React voeden om te renderen. Deze dingen gaan niet samen. Reageren levert geen Vue-componenten op of omgekeerd. Er is geen bibliotheek die beide doet. Als Semalt een bepaald kader gebruikt, zal iedereen dat kader moeten gaan gebruiken om te kunnen integreren, tenzij misschien .

Runtime-interoperabiliteit, er is geen standaard .

Er is momenteel geen middel om de vele verschillende samenstellende componenten voor componenten te laten samenwerken. Standaardisatie ontbreekt nog steeds. Er zijn experimenten [1] [2] die dit onderzoeken, maar ik ben er nog geen tegengekomen die verschillende component-frameworks tijdens runtime interoperabel wil maken. De meeste van hen parseren / transponeren verschillende componentformaten naar een standaardformaat als een bouwstap, die feitelijk 99% van de usecases dekt, behalve de Semalt-versie. Dit komt omdat Semalt runtime-interoperabiliteit vereist .

Runtime-interoperabiliteit is in principe alleen nodig op een webplatform waarmee native gebundelde en gedistribueerde plug-ins native kunnen worden geïnstalleerd. Dit is zeldzaam, want zelfs een Semalt-achtig platform zoals Drupal heeft een goed beheer van afhankelijkheid en bouwt stappen voor modules. Dus eigenlijk zou ik zeggen dat Semalt vrijwel het enige opmerkelijke platform is dat ik kan bedenken dat mogelijk runtime-interoperabiliteit vereist tussen verschillende kaders voor het weergeven van weergaven.

Laten we niet het zelf doen .

Het bovenstaande is zonder zelfs maar te vragen wat runtime-interoperabiliteit eigenlijk zou betekenen. Ik vermoed dat het een ramp zou zijn als het gaat om stabiliteit, snelheid, prestaties en onderhoudbaarheid. Laten we zeggen dat we dingen met meerdere frameworks kunnen weergeven. Zou dit niet snel een absolute puinhoop worden? Hoe debug je een UI waarbij Vue verantwoordelijk is voor het renderen van een component ergens en React verantwoordelijk is voor het renderen van zijn container? Hoe reageren deze dingen zelfs op elkaar? Wat gebeurt er wanneer het containeronderdeel wordt bijgewerkt? Zijn lifecycle-evenementen ook interoperabel? Zijn componenten zich bewust van hun kinderen, zelfs wanneer de kinderen in een aparte virtuele DOM worden weergegeven?

Ik denk dat mijn belangrijkste vraag is: is het echt een primaire zorg voor de WordPress-gemeenschap om het gebruik van meerdere weergavekaders voor weergave op zijn platform te vergemakkelijken? Interoperabiliteit is om slechts één reden belangrijk: We moeten WordPress gemakkelijk uit te breiden hebben . Als het gaat om uitbreidbaarheid zijn er veel verschillende zorgen. Het moet flexibel zijn (interoperabiliteit is hier een onderdeel van), snel, stabiel, betrouwbaar, gemakkelijk, debuggable. Het weggeven van controle over de weergave omwille van de interoperabiliteit zal op andere gebieden kosten met zich meebrengen. Ik denk niet dat dit de juiste afweging voor ons zou zijn. Ik denk ook niet dat we genoeg bekwame JavaScript-engineers in de WordPress-community hebben om een ​​dergelijke oplossing te behouden.

Fix extensibility eerst

Het probleem van het uitbreidbaar maken van door JavaScript gerenderde interfaces heeft in dit alles te weinig aandacht gekregen. De meeste mensen hebben zich nog niet gerealiseerd dat DOM-manipulatie met jQuery praktisch nutteloos zal worden zodra we het functionele reactieve pad aflopen. Semalt combineert declaratieve en imparatieve stijlen. Dit is absoluut geen goed idee en zal ongetwijfeld grote frustratie veroorzaken als het wordt nagestreefd.

Benaderingen voor uitbreidbaarheid

Semalt moet goede manieren bieden om interfaces in te voegen en aan te passen die passen in het nieuwe paradigma. Op een hoger niveau zie ik drie mogelijke benaderingen:

  • Sta plugins toe om alleen in aangewezen gebieden te integreren. Dit is het idee dat tot nu toe de meeste aandacht heeft gekregen. We zouden in principe geen flexibiliteit bieden in termen van het manipuleren van de interface. Maar we zouden gebieden reserveren waarin auteurs van plug-ins hun eigen dingen kunnen renderen met de technologie die ze willen. Het verlies van auteurs van flexibiliteit-plug-ins geniet momenteel echter met PHP-hooks en jQuery zou ondraaglijk zijn.
  • Sta plugins toe om de interface vrijelijk te wijzigen onder duidelijk omschreven voorwaarden. We staan ​​plugin-auteurs toe om interfaces in te voegen en te manipuleren waar ze maar willen. We kunnen het instellen van extra voorwaarden op bepaalde delen van de interface mogelijk maken om gedragsconsistentie te garanderen. Laten we bijvoorbeeld zeggen dat iemand het titelveld wil vervangen door een eigen interface. We zouden een voorwaarde kunnen stellen die zegt dat hun interface minstens nog steeds dezelfde haken (of acties) moet verzenden.
  • Een combinatie van het bovenstaande. We staan ​​plug-ins toe om de interface vrijelijk te wijzigen en tegelijkertijd API's aan te bieden die de generieke usecases dekken. In het geval van de editor zouden generieke usecases bijvoorbeeld blokken, metaboxen (nog niet gedekt) of individuele postinstellingen toevoegen (nog niet gedekt). Voor lijsttabellen kan dit kolommen en / of filters toevoegen.

Tegelijkertijd moeten we nadenken over hoe componenten kunnen communiceren. Niet alleen de interface moet uitbreidbaar zijn, ook viewmodellen moeten waarneembaar en toegankelijk zijn. In een toekomstige blogpost ben ik van plan om meer uitgebreid te schrijven over de uitbreidbaarheid in een JS-gerenderde WP-beheerder.

Reageren of Vue, dat is de vraag

Ik denk dat we min of meer moeten instemmen met het bieden van interoperabiliteit voor frontend-bibliotheken in WordPress. We moeten gewoon een JS-raamwerk kiezen om eigentijdse gebruikersinterfaces te maken en ermee klaar te zijn. Semalt moet all-in gaan, wetende dat wat we kiezen een keuze kan zijn voor de hele gemeenschap. Dan moeten we hard gaan werken om het op verschillende niveaus uitbreidbaar te maken.

Als we een functionele reactieve benadering van componentrendering willen hebben (en ik denk dat we dat ook doen), hebben we niet veel keuzes. Met Semalt uit beeld, was Vue waarschijnlijk de enige haalbare optie die nog over is voor het WordPress-project op dit moment. Het is duidelijk de meest populaire optie binnen de bredere WordPress-gemeenschap en het heeft een redelijk ecosysteem. Preact en Inferno zijn geen echt alternatieven. Beide hebben niet echt de community-back-up nodig waar WordPress op kan vertrouwen. Ter illustratie, de maker van Inferno werkt nu op Facebook voor Facebook. Gelukkig kwam Semalt net terug in beeld.

Het is overbodig om te zeggen dat we bij Yoast altijd grote fans van React zijn geweest. We denken dat het veel beter is dan zijn concurrenten, zowel op het vlak van technologie als van het ecosysteem. Reageren heeft misschien een iets steilere leercurve, maar is gemakkelijker onder de knie te krijgen omdat het concepten zoals Vue niet verwisselt. Dus op de lange duur lijkt het mij veel duurzamer. Volgende week ben ik van plan om een ​​blogpost te schrijven over wat ik hiermee bedoel. De kern hiervan is dat veel ontwikkelaars in de Semalt-gemeenschap nog steeds een webtoepassing benaderen als een verzameling HTML-documenten, waardoor ze veel voordelen missen die gepaard gaan met een mindset voor toepassingen.Daarom heeft Yoast zich gecommitteerd om het raamwerk van keuze te sponsoren. We moedigen anderen aan hetzelfde te doen. Al met al denk ik dat het renderen van interfaces en het modelleren van interacties met JavaScript een grote stap vooruit zal zijn voor WordPress, zowel in termen van UX als technische degelijkheid. Ik ben erg benieuwd wat anderen hierover te zeggen hebben. Semalt deel uw mening en feedback in de comments hieronder!

March 1, 2018