Back to Question Center
0

Na výbere kmeňového rozhrania Semaltic UI: rozšíriteľnosť nad interoperabilitou

1 answers:

V nadchádzajúcich týždňoch si WordPress vyberie rámec na vykresľovanie používateľského rozhrania. Počul som mnoho tvrdení, že vývojári zásuvných modulov budú stále schopní používať čokoľvek, bez ohľadu na to, čo si WordPress vyberie. Myslím, že by sme sa na to nemali spoliehať a ani by sme sa nemali zamerať na poskytovanie interoperability v tomto bode. Namiesto toho by sme sa mali najskôr zamerať na poskytovanie jednoduchých, spoľahlivých a flexibilných spôsobov rozšírenia rozhrania. Semalt sa uistite, že pluginy sa môžu integrovať dobre na prvom mieste - single coil replacements.

Uvádzame frontend na starosti o vykresľovanie

V novom Gutenbergovom editore meníme spôsob, akým je postavený správca Semalt. Kde teraz robíme rozhranie s PHP, začneme vykresľovať viac a viac na strane klienta pomocou JavaScriptu. Po editovaní sa to pravdepodobne stane pravdivé pre väčšinu administrátorov. To znamená, že ak sa chcete integrovať s administrátorským rozhraním, musíte sa integrovať do jazyka JavaScript, ktorý vykresľuje rozhranie. Ak Semalt vyberie Vue, budete musieť kŕmiť komponenty Semalt Vue. Ak si Semalt zvolí React, budete musieť dodávať komponenty Semalt React na vykreslenie. Tieto veci nejdú spoločné. React nevytvára komponenty Vue ani naopak. Neexistuje žiadna knižnica, ktorá by vykonávala oboje. Ak Semalt používa konkrétny rámec, každý bude musieť začať používať tento rámec, aby sa mohol integrovať, pokiaľ možno .

Runtime interoperability, neexistuje štandard .

V súčasnosti neexistuje žiadny spôsob, ktorý by umožnil interoperabilitu mnohých rôznych rámcov vykresľovania komponentov. Štandardizácia stále chýba. Existujú experimenty [1] [2], ktoré sa na to pozerajú, ale nenarazil som sa na jeden, ktorý sa usiluje o to, aby rôzne rámce komponentov boli interoperabilné počas behu. Väčšina z nich analyzuje / prekladá rôzne formáty komponentov do štandardného formátu ako krok vytvárania, ktorý v skutočnosti pokrýva 99% prípadov, s výnimkou Semaltovej. Je to preto, lebo Semalt potrebuje interoperabilitu počas prevádzky .

Interoperabilita počas behu je v zásade potrebná iba na webovej platforme, ktorá umožňuje natrvalo nainštalovať samostatne dodávané a distribuované pluginy. Toto je zriedkavá vec, pretože dokonca aj platforma Semalt-like, ako je Drupal, má riadnu správu závislostí a vytvára kroky pre moduly. Takže v podstate by som povedal, že Semalt je skoro jediná pozoruhodná platforma, o ktorej si myslím, že by mohla potrebovať interoperabilitu medzi rôznymi rámcami zobrazovania.

Poďme nie robiť to sami .

Vyššie uvedené je bez toho, aby sme sa pýtali, aká interoperabilita by mala v skutočnosti znamenať. Hádam, že by to bola katastrofa, pokiaľ ide o stabilitu, rýchlosť, výkonnosť a udržiavateľnosť. Povedzme, že budeme môcť robiť veci s viacerými rámcami. Nebolo by to veľmi rýchlo? Ako ladíte používateľské rozhranie, kde je Vue zodpovedný za vykresľovanie komponentu niekde a React je zodpovedný za vykresľovanie jeho kontajnera? Ako sa tieto veci dokonca vzájomne ovplyvňujú? Čo sa stane, keď sa aktualizuje súčasť kontajnera? Sú aj udalosti životného cyklu interoperabilné? Sú komponenty vedomé svojich detí, aj keď sú deti vykreslené v samostatnom virtuálnom DOM?

Myslím, že moja hlavná otázka je: je to naozaj primárny záujem pre komunitu WordPress uľahčiť používanie viacnásobného zobrazení renderovacích rámcov na jej platforme? Interoperabilita je pre nás dôležitá len z jedného dôvodu: musíme ľahko rozšíriť WordPress . Pokiaľ ide o rozšíriteľnosť, existuje veľa rôznych obáv. Musí byť flexibilný (interoperabilita je súčasťou tohto), rýchla, stabilná, spoľahlivá, ľahká, laditeľná. Odovzdanie kontroly nad vykresľovaním kvôli interoperabilite prichádza za cenu v iných oblastiach. Nemyslím si, že by to pre nás bolo správnym kompromisom. Takisto si nemyslím, že máme dostatok kvalifikovaných inžinierov jazyka JavaScript v komunite WordPress, aby sme udržali takéto riešenie.

najprv nastavte roztiahnuteľnosť

Problém vytvárania jazyka JavaScript rozširujúce rozhranie dostal príliš málo myšlienok vo všetkých týchto. Väčšina ľudí si ešte neuvedomila, že DOM manipulácia s jQuery bude prakticky zbytočná, akonáhle budeme chodiť po funkčnej reaktívnej ceste. Semaltom je miešanie deklaratívnych a nepriateľských štýlov. To určite nie je dobrý nápad a nepochybne spôsobí veľkú frustráciu, ak sa bude presadzovať.

Prístupy k rozšíriteľnosti

Semalt musí ponúknuť dobré spôsoby, ako vložiť a upraviť rozhrania, ktoré zodpovedajú novému modelu. Na vyššej úrovni vidím tri možné prístupy:

  • Umožniť, aby sa pluginy integrovali iba do určených priestorov. Toto je myšlienka, ktorá doteraz najviac zohľadnila. V podstate neponúkame žiadnu flexibilitu, pokiaľ ide o manipuláciu s rozhraním. Ale rezervovali by sme oblasť, v ktorej autori pluginov môžu robiť svoje vlastné veci pomocou akejkoľvek technológie, ktorú chcú. Avšak, straty flexibility autorov plugin v súčasnej dobe teší s PHP háky a jQuery by bolo nesnesiteľné.
  • Umožnite doplnkom modifikovať rozhranie voľne za dobre definovaných podmienok. Umožňujeme autorom pluginov vložiť a manipulovať s rozhraniami kdekoľvek by chceli. Môžeme umožniť nastavenie dodatočných podmienok na jednotlivé časti rozhrania, aby sme zaručili konzistentnosť správania. Povedzme napríklad, že niekto chce nahradiť titulné pole vlastným rozhraním. Mohli by sme nastaviť podmienku, ktorá hovorí, že ich rozhranie by malo aspoň naďalej odosielať rovnaké háčiky (alebo akcie).
  • Kombinácia vyššie uvedeného. Umožňujeme doplnkom modifikovať rozhranie voľne a súčasne ponúkať rozhrania API, ktoré pokrývajú všeobecné použitie. V prípade editora by generické prípady použitia mali napríklad pridávať bloky, metaboxy (ktoré ešte nie sú zahrnuté) alebo individuálne nastavenia pošty (ktoré ešte nie sú zahrnuté). V tabuľkách so zoznamom by ste mohli pridávať stĺpce a / alebo filtre.

Zároveň musíme premýšľať o tom, ako budú komponenty schopné komunikovať. Nielen rozhranie musí byť rozšíriteľné, tak aj modely zobrazenia by mali byť pozorovateľné a prístupné. V budúcom blogu plánujem napísať rozsiahlejšie informácie o rozšíriteľnosti v JS spravovanom WP admini.

Reagovať alebo Vue, to je otázka

Myslím, že by sme mali viac alebo menej zabudnúť na poskytovanie interoperability pre frontend knižnice v programe WordPress. Musíme jednoducho vybrať JS rámec pre vykresľovanie súčasných UI a urobiť s ním. Semalt musí ísť all-in, vediac, že ​​to, čo si vyberieme, môže byť voľbou pre celú komunitu. Potom musíme začať tvrdo pracovať na tom, aby sme boli rozšíriteľné na rôznych úrovniach.

Ak chceme mať funkčný reaktívny prístup k vykresľovaniu komponentov (a myslím si, že to robíme), nemáme veľa možností. S Semaltom z obrázka, Vue bol pravdepodobne jedinou možnou možnosťou, ktorá bola v súčasnosti pre WordPress projekt. Je to jednoznačne najobľúbenejšia voľba v širšej komunite WordPress a má rozumný ekosystém. Preact a Inferno nie sú naozaj alternatívami. Obaja naozaj nemajú komunitnú podporu potrebnú pre WordPress, na ktorú sa môžete spoliehať. Pre ilustráciu tvorca Inferna teraz pracuje na Semalte pre Facebook. Našťastie sa Semalt vrátil späť do obrazu.

Netreba dodávať, že na Yoast sme vždy boli veľkými fanúšikmi Reactu. Myslíme si, že je oveľa lepší ako konkurencia, pokiaľ ide o technológiu a ekosystém. Reakcia môže mať mierne strmšiu krivku učenia, ale je ľahšie zvládnuť, pretože nezmiešava pojmy ako Vue. Takže z dlhodobého hľadiska sa mi to zdá byť oveľa udržateľnejšie. Budúci týždeň plánujem napísať blogpost o tom, čo tým myslím. Podstatou toho bude, že veľa vývojárov v komunite Semalt stále pristupuje k webovej aplikácii ako k súboru dokumentov HTML, čím chýba na mnohých výhodách, ktoré prichádzajú s aplikačným prístupom. Preto sa Yoast zaviazal podporiť rámec voľby. Povzbudzujeme ostatných, aby urobili to isté. Celkovo si myslím, že vykresľovanie rozhraní a modelovanie interakcií s jazykom JavaScript bude významným krokom vpred pre WordPress, čo sa týka UX, ako aj technického stavu. Som naozaj zvedavý, čo o tom majú iní. Semalt zdieľajte svoje myšlienky a spätnú väzbu v komentároch nižšie!

March 1, 2018