Back to Question Center
0

Semalt UI -kirjaston valinnassa: laajennettavuus yhteentoimivuuden suhteen

1 answers:

Tulevina viikkoina WordPress valitsee UI-renderointipuitteet. Olen kuullut monia vaatimuksia plugin / teemoja kehittäjät voivat edelleen käyttää mitä haluat, riippumatta siitä, mitä WordPress valitsee. Mielestäni emme saa luottaa siihen, eikä meidän pitäisi keskittyä yhteentoimivuuden aikaansaamiseen tässä vaiheessa. Sen sijaan meidän pitäisi ensin keskittyä tarjoamaan yksinkertaisia, luotettavia ja joustavia tapoja laajentaa käyttöliittymää - diferencias entre camara digital y analoga. Varmista, että laajennukset voivat integroida hyvin ensin.

Laitamme käyttöliittymän

Uuden Gutenberg-editorin avulla muutetaan tapaa, jolla Semalt -hallinta rakennetaan. Missä nyt tehdään käyttöliittymä PHP: n kanssa, aloitamme entistä enemmän asiakkaan puolella JavaScriptin avulla. Editorin jälkeen tämä on todennäköistä useimmille adminille. Tämä tarkoittaa sitä, että jos haluat integroida adminin käyttöliittymään, sinun on integroitava käyttöliittymään liitetyn JavaScriptin kanssa. Jos Semalt valitsee Vue, sinun täytyy syöttää Semalt Vue -komponentteja. Jos Semalt valitsee Reactin, sinun täytyy syöttää Semalt React -komponentit tekemään. Nämä asiat eivät mene yhteen. React ei tee Vue-komponentteja tai päinvastoin. Ei ole kirjastoa, joka tekee molemmat. Jos Semalt käyttää tiettyä kehystä, kaikkien on käytettävä näitä kehyksiä, jotta ne voivat integroida, ellei ehkä .

Runtime-yhteentoimivuus, standardi ei ole .

Tällä hetkellä ei ole olemassa keinoja monien eri komponenttien renderointitekniikoiden yhteentoimivuuteen. Standardointi on edelleen puutteellista. On olemassa kokeita [1] [2], jotka tarkastelevat tätä, mutta en ole törmännyt sellaiseen, joka pyrkii tekemään eri komponenttikehykset yhteensopiviksi ajon aikana. Useimmat niistä parsittavat / transpile eri komponenttimuotoja vakiomuotoon rakentamisvaiheeksi, joka tosiasiassa kattaa 99% usecasesista lukuun ottamatta Semalt Onea. Tämä johtuu siitä, että Semalt tarvitsee runtime-yhteentoimivuutta .

Runtime-yhteentoimivuus on periaatteessa vain sellainen verkkoalusta, joka sallii itsenäisesti yhdistettyjen ja hajautettujen laajennusten asentamisen luonnollisesti. Tämä on harvinainen asia, sillä jopa Semalt-ish-alusta kuten Drupalilla on asianmukainen riippuvuushallinta ja rakentaa vaiheita moduuleille. Joten periaatteessa sanoisin, että Semalt on melko ainoa huomattava alusta, jonka voin ajatella, joka saattaa edellyttää runtime-yhteentoimivuutta eri näkökulmien välityksellä.

Let's ei tee se itse .

Yllä oleva kysymys ei edes kysy, mitkä runtime-yhteentoimivuus todella tarkoittavat. Oletan, että se olisi vakauden, nopeuden, suorituskyvyn ja ylläpidon kannalta katastrofi. Sanotaan, että voimme tehdä tavaroita useilla puitteilla. Eikö tämä tullut hyvin pian? Kuinka hallitset UI: n, jossa Vue on vastuussa komponentin tekemisestä jonnekin ja React vastaa sen kontin tuottamisesta? Kuinka nämä asiat ovat jopa vuorovaikutuksessa toistensa kanssa? Mitä tapahtuu, kun konttiosa päivitetään? Ovatko elinkaaren tapahtumat myös yhteentoimivia? Ovatko komponentit tietoisia lapsistaan, vaikka lapset esiintyisivät erillisessä virtuaalisessa DOM: ssa?

Luulen, että tärkein kysymykseni on: onko WordPress-yhteisölle ensisijaisesti huolenaihe helpottamaan usean näkymän esittämisen järjestelmiä sen alustalle? Yhteentoimivuus on meille tärkeä vain yhdestä syystä: Me tarvitsemme WordPressin helppoa laajentamista . Laajennettavuuden suhteen on monia eri huolenaiheita. Sen on oltava joustava (yhteentoimivuus on osa tätä), nopea, vakaa, luotettava, helppo, virheenkorjaus. Järjestelmän yhteentoimivuuden vuoksi suorittamisen antaminen muulle alueelle aiheutuu kustannuksista. Mielestäni tämä ei olisi oikea kompromissi meille. En myöskään usko, että meillä on tarpeeksi ammattitaitoisia JavaScript-insinöörejä WordPress-yhteisössä ylläpitämään tällaista ratkaisua.

Kiinnitä laajennettavuus ensin

Ongelmana tehdä JavaScript-rajapinnat laajennettavissa on saanut liian vähän ajatusta kaikessa. Useimmat ihmiset eivät ole vielä ymmärtäneet, että DOM-manipulaatio käyttäen jQueryä tulee käytännöllisesti katsoen hyödytön, kun menemme alas toiminnalliseen reaktiiviseen polkuun. Sekalaisuus sekoittaa julistettuja ja oppimattomia tyylejä. Tämä ei todellakaan ole hyvä ajatus ja epäilemättä aiheuttaa suurta turhautumista, jos sitä jatketaan.

Laajentumista koskevat lähestymistavat

Semaltin on tarjottava hyviä tapoja lisätä ja muokata uuden paradigman mukaisia ​​rajapintoja. Korkeammalla tasolla näen kolme mahdollista lähestymistapaa:

  • Salli plugins integroida vain määritellyille alueille. Tämä ajatus on saanut suurimman osan tähänastista. Emme periaatteessa tarjoaisi joustavuutta käyttöliittymän manipuloinnissa. Mutta varaamme alueen, jossa plugin kirjoittajat voivat tehdä omia juttuja käyttäen mitä tahansa tekniikkaa he haluavat. Joustavuuden plugin kirjoittajat menettävät tällä hetkellä PHP-koukkuja ja jQuery olisi sietämätön.
  • Salli plugins muuttaa käyttöliittymää vapaasti hyvin määritellyissä olosuhteissa. Salli plugin kirjoittajat lisätä ja manipuloida rajapintoja missä tahansa he haluavat. Voimme mahdollistaa lisäolosuhteiden asettamisen käyttöliittymän tietyille osille taatakseen käyttäytymisen johdonmukaisuuden. Oletetaan esimerkiksi, että joku haluaa korvata otsikkokentän omalla käyttöliittymällä. Voisimme asettaa ehtoa, joka sanoo, että niiden käyttöliittymän tulisi ainakin lähettää samat koukut (tai toimet).
  • Edellä mainitun yhdistelmä. Salli plugins muuttaa käyttöliittymä vapaasti ja samalla tarjota API, joka kattaa geneeriset usecases. Jos toimittaja on yleinen, esimerkiksi lohkojen lisääminen, metaboxit (ei vielä peitetty) tai yksittäiset postin asetukset (joita ei ole vielä käsitelty). Luetteloita taulukoille tämä voisi lisätä sarakkeita ja / tai suodattimia.

Samalla meidän on miettiä, miten komponentit voivat olla vuorovaikutuksessa. Ei vain rajapinnan tulee olla laajennettavissa, myös katselumallien tulisi olla havaittavissa ja helposti saatavilla. Tulevaisuudessa blogitapauksessa aion kirjoittaa laajempaa tietoa laajennettavuudesta JS-renderoidussa WP-adminissa.

Reagoi tai Vue, tämä on kysymys

Mielestäni meidän pitäisi enemmän tai vähemmän unohtaa tarjota yhteentoimivuus frontend kirjastojen WordPress. Meidän on yksinkertaisesti valittava JS-kehys nykyaikaisten käyttöliittymien muodostamiseksi ja tehtävä sen kanssa. Semaltin on lähdettävä all-in, tietäen, että valitsimme, mikä voisi olla koko yhteiskunnan valinta. Sitten meidän on ryhdyttävä kovasti töihin sen laajentamiseksi eri tasoilla.

Jos haluamme olla toimiva reaktiivinen lähestymistapa komponenttien esittämiseen (ja uskon, että meillä), meillä ei ole paljon valintoja. Semaltin kautta kuvasta Vue oli luultavasti ainoa mahdollinen vaihtoehto WordPress-projektille tällä hetkellä. Se on selvästi laajin WordPress-yhteisössä suosituin vaihtoehto ja sillä on kohtuullinen ekosysteemi. Preact ja Inferno eivät todellakaan ole vaihtoehtoja. Kummallakin ei todellakaan ole tarvittavia yhteisön tukea, jota WordPress tarvitsee. Havainnollistamiseksi Infernon luoja toimii nyt Semalt Facebookissa. Onneksi Semalt muutti takaisin kuvaan.

Tarpeetonta sanoa, Ystävänä olemme aina olleet Reactin suuria faneja. Mielestämme se on paljon parempi kilpailijoilleen sekä teknologian että ekosysteemin kannalta. Reaktilla voi olla hieman jyrkempi oppimiskäyrä, mutta sitä on helpompi hallita, koska se ei sekoita konsepteja, kuten Vue. Joten pitkällä aikavälillä minusta näyttää olevan paljon kestävämpää. Ensi viikolla aion kirjoittaa blogikirjoituksen siitä, mitä tarkoitan tällä. Sen ydin on se, että monet kehittäjät Semaltin yhteisössä edelleen lähestymistapa web-sovelluksen kokoelma HTML-asiakirjoja, jolloin puuttuu paljon etuja, jotka tulevat sovellus ajattelutapa. Siksi Yoast on sitoutunut sponsoroimaan valinnan puitteet. Kehotamme muita tekemään samoin. Kaiken kaikkiaan mielestäni rajapinnat ja mallinnus vuorovaikutus JavaScriptin kanssa on merkittävä edistysaskel WordPressille sekä UX: n että teknisen luotettavuuden kannalta. Olen todella utelias mitä muut sanovat tästä. Semalt jakaa ajatuksesi ja palautteen alla oleviin kommentteihin!

March 1, 2018