U-Alexey Grachev: Hamba Ngaphambili

I-Kyiv Go Meetup May 2018:

U-Alexey Grachev: Hamba Ngaphambili

Okuhamba phambili: - Sanibonani nonke! Siyabonga ngokuba lapha! Namuhla sinezikhulumi ezimbili ezisemthethweni - uLyosha noVanya. Kusazoba nezinye ezimbili uma sinesikhathi esanele. Isikhulumi sokuqala ngu-Alexey Grachev, uzositshela ngeGopherJS.

U-Alexey Grachev (okulandelayo – AG): – Ngingunjiniyela we-Go, futhi ngibhala izinsiza zewebhu kokuthi Go. Ngezinye izikhathi kufanele ubhekane ne-frontend, ngezinye izikhathi kufanele ungene kuyo ngesandla. Ngifuna ukukhuluma ngolwazi lwami kanye nocwaningo ku-Go on the frontend.

Inganekwane yilena: okokuqala sizokhuluma ngokuthi kungani sifuna ukugijima i-Go on the frontend, bese sikhuluma ngokuthi lokhu kungenziwa kanjani. Kunezindlela ezimbili - I-Web Assembly kanye ne-GopherJS. Ake sibone ukuthi siyini isimo salezi zixazululo nokuthi yini engenziwa.

Yini engalungile nge-frontend?

Ingabe wonke umuntu uyavuma ukuthi konke kuhamba kahle nge-frontend?

U-Alexey Grachev: Hamba Ngaphambili

Azikho yini izivivinyo ezanele? Ukwakhiwa okunensayo? I-ecosystem? Kuhle.

Mayelana ne-frontend, ngithanda isicaphuna esashiwo omunye wabathuthukisi be-frontend encwadini yakhe:

U-Alexey Grachev: Hamba Ngaphambili

I-Javascript ayinalo uhlobo lwesistimu. Manje ngizozisho izinkinga engihlangabezane nazo ngesikhathi ngisenza umsebenzi wami futhi ngichaze ukuthi zixazululwa kanjani.

Uhlelo lohlobo ngokuvamile alukwazi ukubizwa ngokuthi uhlobo lwesistimu ku-Javasript - kunemigqa ebonisa uhlobo lwento, kodwa empeleni lokhu akuhlangene nezinhlobo. Le nkinga ixazululwa ku-TypeScript (i-add-on ku-Javasript) kanye ne-Flow (isihloli sohlobo olumile ku-Javascript). Empeleni, i-frontend isivele ifinyelele iphuzu lokuxazulula inkinga yesistimu yohlobo olubi ku-Javascript.

U-Alexey Grachev: Hamba Ngaphambili

Awukho umtapo wezincwadi ojwayelekile esipheqululini - kunezinto ezithile ezakhelwe ngaphakathi kanye nemisebenzi β€œyomlingo” kuziphequluli. Kepha kuJavascript awukho umtapo wezincwadi ojwayelekile onjalo. Le nkinga isivele yaxazululwa kanye nge-jQuery (wonke umuntu wasebenzisa i-jQuery nawo wonke ama-prototypes, abasizi, imisebenzi ebidingeka ukuze isebenze). Manje wonke umuntu usebenzisa i-Lodash:

U-Alexey Grachev: Hamba Ngaphambili

Callback isihogo. Ngicabanga ukuthi wonke umuntu wabona ikhodi ye-Javascript cishe eminyakeni engu-5 edlule, futhi kubukeka sengathi "i-noodle" yobunkimbinkimbi obumangalisayo bokubuyela emuva. Manje le nkinga isixazululiwe (ngokukhululwa kwe-ES-15 noma i-ES-16), izithembiso zengezwe ku-Javascript futhi wonke umuntu angaphefumula kalula okwesikhashana.

U-Alexey Grachev: Hamba Ngaphambili

Kuze kufike isihogo se-Promice ... Angazi ukuthi imboni ye-front-end iphatha kanjani, kodwa bahlala bezishayela ehlathini elithile elingavamile. Sakwazi futhi ukwenza isihogo ngezithembiso. Bese sixazulula le nkinga ngokungeza okwakudala okusha - async/await:

U-Alexey Grachev: Hamba Ngaphambili

Inkinga nge-asynchrony ixazululiwe. I-Async/ait ingeyakudala edume ngezilimi ezahlukahlukene. I-Python nabanye banale ndlela - yinhle impela. Inkinga ixazululiwe.

Iyiphi inkinga engaxazululeki? Ukuxaka okukhulayo kwezinhlaka, ukuba yinkimbinkimbi kwe-ecosystem kanye nezinhlelo ngokwazo.

U-Alexey Grachev: Hamba Ngaphambili

  • I-Javascript syntax iyinqaba kancane. Sonke siyazazi izinkinga ngokungeza uhlu nento namanye amahlaya.
  • I-Javascript i-multi-paradigm. Lolu uhlelo olucindezela kakhulu manje lapho i-ecosystem inkulu kakhulu:
    • wonke umuntu ubhala ngezitayela ezahlukene - abanye babhala ngokuhlelekile, abanye babhala ngokusebenza, abathuthukisi abahlukene babhala ngezindlela ezahlukene;
    • kusuka kumaphakheji ahlukene, ama-paradigms ahlukene uma usebenzisa amaphakheji ahlukene;
    • kukhona "okujabulisayo" okuningi ngezinhlelo ezisebenzayo ku-Javasript - umtapo wezincwadi we-rambda uvele futhi manje akekho ongakwazi ukufunda izinhlelo ezibhalwe kulo mtapo wolwazi.

  • Konke lokhu kwenza umthelela omkhulu ku-ecosystem, futhi ikhule ngendlela emangalisayo. Amaphakheji awahambisani namanye: amanye asekelwe ezithembisweni, amanye asekelwe ku-async/akulindiwe, amanye asekelwe ekufonelweni emuva. Baphinde babhale ngama-paradigms ahlukene!
  • Lokhu kwenza iphrojekthi ibe nzima ukuyinakekela. Kunzima ukuthola iphutha uma ungakwazi ukufunda ikhodi.

Iyini i-Web Assembly?

Abafana abanesibindi abavela ku-Mozilla Foundation kanye nenani lezinye izinkampani baqhamuke nento efana ne-Web Assembly. Kuyini lokhu?

U-Alexey Grachev: Hamba Ngaphambili

  • Lona umshini obonakalayo owakhelwe esipheqululini esisekela ifomethi kanambambili.
  • Izinhlelo kanambambili zifika lapho futhi zenziwa cishe ngokomdabu, okungukuthi, isiphequluli asidingi ukuncozulula wonke β€œama-noodle” ekhodi ye-javascript njalo.
  • Zonke iziphequluli zimemezele ukwesekwa.
  • Njengoba lena kuyi-bytecode, ungabhala isihlanganisi sanoma yiluphi ulimi.
  • Iziphequluli ezine ezinkulu sezivele zithunyelwa ngosekelo lwe-Web Assembly.
  • Silindele usekelo lwendabuko ku-Go maduze. Lesi sakhiwo esisha sesivele sengeziwe: GOARCH=wasm GOOS=js (maduze). Kuze kube manje, njengoba ngikuqonda, akusebenzi, kodwa kunesitatimende sokuthi nakanjani kuzoba ku-Go.

Yini okufanele uyenze manje? I-GopherJS

Nakuba singenakho ukusekelwa kwe-Web Assembly, kukhona umshini wokudlulisa onjenge-GopherJS.

U-Alexey Grachev: Hamba Ngaphambili

  • Ikhodi yokuya idluliselwa ku-Javascript "ehlanzekile".
  • Isebenza kuzo zonke iziphequluli - azikho izici ezintsha ezisekelwa iziphequluli zesimanje kuphela (le Vanilla JS, esebenza kunoma yini).
  • Kukhona ukwesekwa cishe kwayo yonke into i-Go enayo, okuhlanganisa amasiko namashaneli... konke esikuthandayo nesikwaziyo kakhulu.
  • Cishe wonke umtapo wolwazi ojwayelekile uyasekelwa, ngaphandle kwalawo maphakheji okungenangqondo ukuwasekela esipheqululini: i-syscall, ukusebenzisana kwenetha (kuneklayenti le-net/http, kodwa ayikho iseva, futhi iklayenti ilingiswa nge-XMLHttpRequest). Ngokuvamile, wonke umtapo wezincwadi ojwayelekile uyatholakala - nansi isiphequluli, nansi i-Go's stdlib, esiyithandayo.
  • Yonke i-ecosystem yephakheji ku-Go, zonke izixazululo zezinkampani zangaphandle (i-templating, njll.) ingahlanganiswa kusetshenziswa i-GopherJS futhi iqalise kusiphequluli.

I-GopherJS kulula kakhulu ukuyithola - iphakheji ye-Go evamile nje. Siyahamba sithole, futhi sinomyalo we-GopherJS wokwakha uhlelo lokusebenza:

U-Alexey Grachev: Hamba Ngaphambili

Lona umhlaba omncane ka-sawubona...

U-Alexey Grachev: Hamba Ngaphambili

...Uhlelo olujwayelekile lwe-Go, iphakheji ejwayelekile yelabhulali ye-fmt kanye ne-Binding Js ukuze ufinyelele i-API yesiphequluli. I-Println izogcina iguqulelwe kulogi ye-console futhi isiphequluli sizobhala ukuthi β€œSawubona gophers”! Kulula kanjalo: senza i-GopherJS build - siyethula esipheqululini - yonke into iyasebenza!

Yini onayo njengamanje? Izibopho

U-Alexey Grachev: Hamba Ngaphambili

Kukhona izibopho zazo zonke izinhlaka ezidumile ze-js:

  • JQuery;
  • I-Angular.js;
  • I-D3.js yokuhlela nokusebenzisa idatha enkulu;
  • React.js;
  • I-VueJS;
  • kukhona nokusekelwa kwe-Electron (okungukuthi, sesingakwazi kakade ukubhala izinhlelo zokusebenza zedeskithophu ku-Electron);
  • futhi into ehlekisayo kakhulu i-WebGL (singenza izinhlelo zokusebenza eziyingcaca ephelele, okuhlanganisa imidlalo enezithombe ze-3D, umculo nazo zonke izinto ezinhle);
  • nezinye izibopho eziningi kuzo zonke izinhlaka nemitapo yolwazi edumile ye-javascript.

Framework

  1. Kunohlaka lwewebhu oseluvele lwenziwe ngokukhethekile lwe-GopherJS - Vecty. Lena i-analogue egcwele ye-React.js, kodwa ithuthukiswe kuphela ku-Go, nemininingwane ye-GopherJS.
  2. Kukhona izikhwama zemidlalo (isimanga!). Ngithole okubili okudume kakhulu:
    • I-Engo;
    • Ebiten.

Ngizokukhombisa izibonelo ezimbalwa zokuthi ibukeka kanjani nokuthi usuvele ubhale ini kokuthi Go:

U-Alexey Grachev: Hamba Ngaphambili

Noma le nketho (angikwazanga ukuthola isidubuli se-3D, kodwa mhlawumbe sikhona):

U-Alexey Grachev: Hamba Ngaphambili

Nginikela ngani?

Manje imboni ye-front-end isesimweni kangangokuthi zonke izilimi ezakhala ze-Javascript ngaphambili zizophuthuma lapho. Manje konke kuzohlanganiswa ku-"Web Assemblies". Yini esiyidingayo ukuze sithathe indawo yethu efanele lapho njengamaGopher?

U-Alexey Grachev: Hamba Ngaphambili

I-Go ivele icabange ukuthi iwulimi lohlelo Lwesistimu, futhi awekho cishe amalabhulali okusebenza nge-UI. Kukhona into, kodwa ishiywe ingxenye, ayisebenzi.

Futhi manje yithuba elihle lokwenza amalabhulali e-UI ku-Go ezosebenza ku-GopherJS! Ekugcineni ungabhala uhlaka lwakho! Lesi yisikhathi lapho ungabhala khona uhlaka, futhi kuzoba ngowokuqala futhi uthole ukutholwa kusenesikhathi, futhi uzoba inkanyezi (uma kuwuhlaka oluhle).

Ungajwayelanisa amaphakheji amaningi ahlukene asevele aku-Go ecosystem ukuze ahambisane nemininingwane yesiphequluli (isibonelo, injini yesifanekiso). Zizosebenza kakade, ungenza izibopho ezilula ukuze ukwazi ukunikeza okuqukethwe ngokuqondile esipheqululini. Futhi, ungenza, isibonelo, isevisi enganikeza into efanayo kuseva nangaphambili, usebenzisa ikhodi efanayo - yonke into ethandwa onjiniyela bangaphambili (manje kuphela ku-Go).

Ungabhala umdlalo! Okokuzijabulisa nje...

Yilokho kuphela ebengifuna ukukusho.

U-Alexey Grachev: Hamba Ngaphambili

Imibuzo yakho

Umbuzo (kamuva ozobizwa ngokuthi Q): - Ingabe ngibhala ngo-Go noma ngo-Js?

AG: - Ubhala izinqubo, iziteshi, izakhiwo, ukushumeka - yonke into ku-Go... Ubhalisela umcimbi, udlulise umsebenzi lapho.

B: - Ngakho ngibhala "nqunu" Js?

AG: - Cha, ubhala sengathi ku-Go bese uxhuma ku-API yesiphequluli (i-API ayikashintshi). Ungakwazi ukubhala izibopho zakho ukuze imilayezo ithunyelwe esiteshini - akunzima.

B: – Kuthiwani ngeselula?

AG: - Ngibonile ngempela: kukhona ukubophezela kwesiqephu se-Cordova esiqhutshwa ngu-Js. Nge-React Native - angazi; mhlawumbe kukhona, mhlawumbe akunjalo (bengingenasithakazelo ikakhulukazi). Injini yegeyimu ye-N-go isekela kokubili izinhlelo zokusebenza zeselula - kokubili i-iOS ne-Android.

B: - Umbuzo mayelana neWebhu Assembly. Isikhala esiningi sithathwa phezulu, naphezu kokucindezelwa kanye "noziphu" ... Ngeke yini sibulale umhlaba ongaphambili ngale ndlela nakakhulu?

AG: – I-Web Assembly iyifomethi kanambambili, futhi kanambambili ngokuzenzakalelayo ayinakuba ekukhululweni kokugcina ngaphezu kombhalo... Udonsekela esikhathini sokusebenza, kodwa lokhu kufana nokuhudulela ngaphandle umtapo wezincwadi ojwayelekile we-Javascript uma ungekho, ukuze sebenzisa i-Lodash ethile. Angazi ukuthi iLodash ithatha malini.

B: - Ngokusobala sincane kunesikhathi sokusebenza...

AG: - Ku-Javascript "ehlanzekile"?

B: - Yebo. Siyayicindezela ngaphambi kokuyithumela...

AG: - Kodwa lokhu kungumbhalo ... Ngokuvamile, i-megabyte ibonakala sengathi iningi, kodwa yilokho kuphela (unesikhathi sonke sokusebenza). Okulandelayo, ubhala i-logic yebhizinisi lakho, elizokwandisa kanambambili yakho ngo-1%. Kuze kube manje angikuboni lokhu kubulala i-frontend. Ngaphezu kwalokho, i-Web Assembly izosebenza ngokushesha kune-Javascript ngesizathu esisobala - ayidingi ukuhlukaniswa.

B: - Lokhu kuseyiphuzu eliphikisanayo ... Akukabi khona noma yikuphi ukuqaliswa kwereferensi ye-"Vasma" (Web Assembly) ukuze umuntu akwazi ukwahlulela ngokungananazi. Ngokomqondo, yebo: sonke siyaqonda ukuthi kanambambili kufanele isheshe, kodwa ukuqaliswa kwamanje kwe-V8 efanayo kusebenza kahle kakhulu.

AG: - Yebo.

B: - Ukuhlanganiswa lapho kusebenza kahle kakhulu futhi akulona iqiniso lokuthi kuzoba nenzuzo enkulu.

AG: - Umhlangano Wewebhu nawo wenziwa ngabafana abakhulu.

B: - Kubonakala kimi ukuthi kusenzima ukwahlulela i-Web Assembly. Sekuyiminyaka eminingi manje kunezingxoxo, kodwa zimbalwa izimpumelelo zangempela ezingazwakala.

AG: - Kungenzeka. Sizobona.

B: - Asinayo izinkinga ku-backend ... Mhlawumbe kufanele sishiye lezi zinkinga ku-frontend? Kungani uye lapho?

AG: – Kufanele sigcine abasebenzi abaphambili.

Ezinye izikhangiso πŸ™‚

Siyabonga ngokuhlala nathi. Uyazithanda izindatshana zethu? Ufuna ukubona okuqukethwe okuthakaselayo okwengeziwe? Sisekele ngokufaka i-oda noma ngokuncoma kubangani, I-VPS yefu yonjiniyela kusuka ku-$4.99, i-analogue ehlukile yamaseva ezinga lokungena, esungulwe yithi ngenxa yakho: Lonke iqiniso nge-VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kusuka ku-$19 noma ukwabelana ngeseva? (itholakala nge-RAID1 kanye ne-RAID10, kufika kuma-cores angu-24 kuze kufike ku-40GB DDR4).

I-Dell R730xd 2x ishibhile esikhungweni sedatha se-Equinix Tier IV e-Amsterdam? Lapha kuphela 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kusukela ku-$199 eNetherlands! I-Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - isuka ku-$99! Funda mayelana Indlela yokwakha ingqalasizinda corp. ikilasi ngokusetshenziswa kwe-Dell R730xd E5-2650 v4 amaseva abiza u-9000 euros ngepeni?

Source: www.habr.com

Engeza amazwana