UAlexey Grachev: Yiya ngaphambili

Kyiv Go Meetup May 2018:

UAlexey Grachev: Yiya ngaphambili

Ukukhokela: - Molweni nonke! Enkosi ngokuba lapha! Namhlanje sinezithethi ezimbini ezisemthethweni - uLyosha noVanya. Kuya kubakho ezinye ezimbini ukuba sinexesha elaneleyo. Isithethi sokuqala ngu-Alexey Grachev, uya kusixelela ngeGopherJS.

U-Alexey Grachev (emva koku – AG): -Ndingumphuhlisi weGo, kwaye ndibhala iinkonzo zewebhu kwi-Go. Ngamanye amaxesha kufuneka ujongane ne-frontend, ngamanye amaxesha kufuneka ungene kuyo ngesandla. Ndifuna ukuthetha ngamava am kunye nophando kwi-Go on the frontend.

Intsomi yile: okokuqala siza kuthetha malunga nokuba kutheni sifuna ukubaleka kwi-frontend, emva koko siza kuthetha ngendlela enokwenziwa ngayo oku. Kukho iindlela ezimbini - iNdibano yeWebhu kunye neGopherJS. Makhe sibone ukuba imeko yezi zisombululo yintoni kwaye yintoni enokwenziwa.

Yintoni engalunganga nge-frontend?

Ngaba wonke umntu uyavuma ukuba yonke into ilungile nge-frontend?

UAlexey Grachev: Yiya ngaphambili

Akwanelanga iimvavanyo? Ulwakhiwo olucothayo? Inkqubo yendalo? Kulungile.

Ngokuphathelele kwi-frontend, ndiyathanda isicatshulwa esathethwa ngomnye wabaphuhlisi be-frontend kwincwadi yakhe:

UAlexey Grachev: Yiya ngaphambili

IJavascript ayinayo inkqubo yohlobo. Ngoku ndiza kuchaza iingxaki endiye ndadibana nazo ngexesha lomsebenzi wam kwaye ndichaze nendlela ezisonjululwa ngayo.

Inkqubo yohlobo ngokubanzi ayinakubizwa ngokuba yinkqubo yohlobo kwiJavasript - kukho imigca ebonisa uhlobo lwento, kodwa ngokwenene oku akunanto yakwenza neentlobo. Le ngxaki isonjululwe kwi-TypeScript (i-add-on kwiJavasript) kunye ne-Flow (i-static-type checker kwi-Javascript). Ngokwenyani, i-frontend sele ifikelele kwinqanaba lokusombulula ingxaki yenkqubo yohlobo olubi kwiJavascript.

UAlexey Grachev: Yiya ngaphambili

Akukho thala leencwadi eliqhelekileyo kwisikhangeli - kukho izinto ezakhelwe ngaphakathi kunye nemisebenzi "yomlingo" kwizikhangeli. Kodwa kwiJavascript ayikho ilayibrari eqhelekileyo njengaleyo. Le ngxaki sele isonjululwe kanye nge-jQuery (wonke umntu wasebenzisa i-jQuery nazo zonke iiprototypes, abancedisi, imisebenzi efunekayo ukusebenza). Ngoku wonke umntu usebenzisa i-Lodash:

UAlexey Grachev: Yiya ngaphambili

Callback esihogweni. Ndicinga ukuba wonke umntu wabona ikhowudi yeJavascript malunga neminyaka eyi-5 eyadlulayo, kwaye yayikhangeleka ngathi "i-noodle" yobuchule obumangalisayo bokufowuna. Ngoku le ngxaki ixazululwe (ngokukhululwa kwe-ES-15 okanye i-ES-16), izithembiso zongezwe kwiJavascript kwaye wonke umntu unokuphefumula lula ixesha elithile.

UAlexey Grachev: Yiya ngaphambili

Kwaze kwafika isihogo sePromice ... andiyazi ukuba imboni ye-front-end ilawula njani, kodwa bahlala beziqhubela kwihlathi elingaqhelekanga. Sakwazi kananjalo ukwenza isihogo ngezithembiso. Emva koko siyisombulule le ngxaki ngokongeza i-primitive entsha-i-async/await:

UAlexey Grachev: Yiya ngaphambili

Ingxaki nge-asynchrony isonjululwe. I-Async / ukulinda yinto yokuqala eyaziwayo kwiilwimi ezahlukeneyo. I-Python kunye nabanye banayo le ndlela-ilungile. Ingxaki isonjululwe.

Yeyiphi ingxaki engasonjululwanga? Ukukhula okuntsokothileyo kwezicwangciso-nkqubo, ukuntsonkotha kwe-ikhosistim kunye neenkqubo ngokwazo.

UAlexey Grachev: Yiya ngaphambili

  • Isivakalisi seJavascript siyinto engaqhelekanga. Sonke siyazazi iingxaki ngokongeza uluhlu kunye nento kunye nezinye iziqhulo.
  • I-Javascript yi-multi-paradigm. Le yinkqubo ecinezela ngokukodwa ngoku xa i-ecosystem inkulu kakhulu:
    • wonke umntu ubhala ngeendlela ezahlukeneyo - abanye babhala ngokwesakhiwo, abanye babhala ngokusebenzayo, abaphuhlisi abahlukeneyo babhala ngeendlela ezahlukeneyo;
    • ukusuka kwiipakethe ezahlukeneyo, iiparadigms ezahlukeneyo xa usebenzisa iipakethe ezahlukeneyo;
    • kukho "ukuzonwabisa" okuninzi kunye neprogram esebenzayo kwiJavasript - ilayibrari ye-rambda yabonakala kwaye ngoku akukho mntu unokufunda iinkqubo ezibhalwe kule thala leencwadi.

  • Konke oku kwenza impembelelo enkulu kwi-ecosystem, kwaye ikhule ngokumangalisayo. Iiphakheji azihambelani kunye: ezinye zisekelwe kwizithembiso, ezinye zisekelwe kwi-async / zilindele, ezinye zisekelwe kwi-callbacks. Bakwabhala kwiiparadigms ezahlukeneyo!
  • Oku kwenza ukuba iprojekthi ibenzima ukuyigcina. Kunzima ukufumana ibug ukuba awukwazi ukufunda ikhowudi.

Yintoni iNdibano yeWebhu?

Abafana abanesibindi beMozilla Foundation kunye nenani lezinye iinkampani beza nento efana neNdibano yeWebhu. Yintoni lento?

UAlexey Grachev: Yiya ngaphambili

  • Lo ngumatshini onenyani owakhelwe kwisikhangeli esixhasa ifomati yokubini.
  • Iinkqubo zeBinary zifika apho kwaye ziqhutywa phantse ngokwemveli, oko kukuthi, isikhangeli asidingi kuhlaziya zonke "ii-noodle" zekhowudi ye-javascript ngalo lonke ixesha.
  • Zonke iibhrawuza zibhengeze inkxaso.
  • Kuba le bytecode, ungabhala umqokeleli walo naluphi na ulwimi.
  • Iiphequluli ezine eziphambili sele zithunyelwa ngenkxaso yeNdibano yeWebhu.
  • Silindele inkxaso yemveli kwi-Go kamsinya. Olu lwakhiwo lutsha sele longeziwe: GOARCH=wasm GOOS=js (kungekudala). Ukuza kuthi ga ngoku, njengoko ndiyiqonda, ayisebenzi, kodwa kukho inkcazo yokuba ngokuqinisekileyo iya kuba kwi-Go.

Kufuneka wenze ntoni ngoku? GopherJS

Nangona singenayo inkxaso kwiNdibano yeWebhu, kukho i-transpiler efana neGopherJS.

UAlexey Grachev: Yiya ngaphambili

  • Ikhowudi yokuya ikhutshelwa kwiJavascript "ecocekileyo".
  • Isebenza kuzo zonke iiphequluli - akukho mpawu zintsha ezixhaswa kuphela ngabaphequluli banamhlanje (le Vanilla JS, eqhuba nantoni na).
  • Kukho inkxaso malunga nayo yonke into i-Go enayo, kuquka i-goroutines kunye namajelo ... yonke into esiyithandayo kwaye siyazi kakhulu.
  • Phantse ithala leencwadi eliqhelekileyo lixhaswa, ngaphandle kwezo phakheji zingenangqiqo ukuxhasa kwi-browser: i-syscall, i-net interactions (kukho umxhasi we-net / http, kodwa akukho mncedisi, kwaye umxhasi ulinganiswe nge-XMLHttpRequest). Ngokubanzi, ithala leencwadi eliqhelekileyo liyafumaneka - nantsi ikwibhrawuza, nantsi iGo's stdlib, esiyithandayo.
  • Yonke i-ecosystem yephakheji kwi-Go, zonke izisombululo zomntu wesithathu (i-templateng, njl.) inokuqulunqwa kusetyenziswa i-GopherJS kwaye iqhutywe kwisiphequluli.

I-GopherJS kulula kakhulu ukuyifumana - yiphakheji nje yeGophe eqhelekileyo. Siye safumana, kwaye sinomyalelo weGopherJS wokwakha isicelo:

UAlexey Grachev: Yiya ngaphambili

Eli lilizwe elincinci molo...

UAlexey Grachev: Yiya ngaphambili

...Inkqubo yokuHamba rhoqo, iphakheji eqhelekileyo yelayibrari yefmt kunye ne-Binding Js ukufikelela kwisikhangeli se-API. I-Println ekugqibeleni iya kuguqulwa ibe yi-console log kwaye isikhangeli siya kubhala "Molo gophers"! Ilula ngolo hlobo: senza iGopherJS ukwakha - siyisungula kwibhrawuza - yonke into iyasebenza!

Yintoni onayo ngeli xesha? Izibophelelo

UAlexey Grachev: Yiya ngaphambili

Kukho izibophelelo kuzo zonke izikhokelo ze-js ezidumileyo:

  • JQuery;
  • Angular.js;
  • ii-D3.js zokucwangcisa nokusebenza ngedatha enkulu;
  • React.js;
  • VueJS;
  • kukho nenkxaso ye-Electron (oko kukuthi, singakwazi ukubhala izicelo zedesktop kwi-Electron);
  • kwaye eyona nto ihlekisayo yiWebGL (sinokwenza izicelo ezigcweleyo, kuquka imidlalo enemifanekiso ye-3D, umculo kunye nazo zonke izinto ezilungileyo);
  • kunye nezinye izibophelelo kuzo zonke izikhokelo zejavascript ezidumileyo kunye namathala eencwadi.

Isikhokelo

  1. Kukho isakhelo sewebhu esele siphuhliswe ngokukodwa iGopherJS - Vecty. Le yi-analogue epheleleyo ye-React.js, kodwa iphuhliswe kuphela kwi-Go, kunye neenkcukacha ze-GopherJS.
  2. Kukho iibhegi zemidlalo (isimanga!). Ndifumene ezimbini ezidumileyo:
    • Engo;
    • Ebeten.

Ndiza kukubonisa imizekelo embalwa yendlela ekhangeleka ngayo kunye nento onokuthi uyibhale kwi-Go:

UAlexey Grachev: Yiya ngaphambili

Okanye olu khetho (andifumananga 3D shooter, kodwa mhlawumbi ikhona):

UAlexey Grachev: Yiya ngaphambili

Ndinikezela ngantoni?

Ngoku umzi-mveliso ongaphambili ukwimeko yokuba zonke iilwimi ezazikhala kwiJavascript ziya kungxamela apho. Ngoku yonke into iya kuhlanganiswa ibe yi "Web Assemblies". Yintoni esiyifunayo ukuze sithathe indawo yethu efanelekileyo apho njengeGophers?

UAlexey Grachev: Yiya ngaphambili

UGo uye wathatha ngokwesiko ukuba lulwimi lwenkqubo yeNkqubo, kwaye akukho mathala eencwadi okusebenza nge-UI. Kukho into, kodwa ishiywe ngesiqingatha, ayisebenzi.

Kwaye ngoku lithuba elihle lokwenza iilayibrari ze-UI kwi-Go eziya kusebenza kwi-GopherJS! Ekugqibeleni ungabhala esakho isakhelo! Eli lixesha apho ungabhala isakhelo, kwaye iya kuba yenye yokuqala kwaye ufumane ukwamkelwa kwangethuba, kwaye uya kuba yinkwenkwezi (ukuba sisikhokelo esihle).

Unokuziqhelanisa neepakethe ezininzi ezahlukeneyo esele zikwi-Go ecosystem kwiinkcukacha zesikhangeli (umzekelo, i-Template injini). Ziya kusebenza kakade, unokwenza izibophelelo ezifanelekileyo ukwenzela ukuba unikeze umxholo ngokuthe ngqo kwisikhangeli. Ngaphezu koko, unokwenza, umzekelo, inkonzo enokuthi inike into efanayo kumncedisi nakwisiphelo sangaphambili, usebenzisa ikhowudi efanayo - yonke into eyenziwa ngabaphuhlisi bangaphambili (kuphela ngoku kwi-Go).

Ungabhala umdlalo! Nje ukonwabela…

Nantso kuphela into ebendifuna ukuyithetha.

UAlexey Grachev: Yiya ngaphambili

Imibuzo yakho

Umbuzo (apha ekubhekiselwa kuwo njengoMbuzo): – Ngaba ndibhala ngo-Go okanye kwiiJs?

AG: - Ubhala iinkqubo, iziteshi, izakhiwo, ukufakela - yonke into kwi-Go ... Ubhalisela umcimbi, udlulise umsebenzi apho.

KWI: - Ke ndibhala "ze" Js?

AG: - Hayi, ubhala ngokungathi ku-Go kwaye uqhagamshele kwi-API yesikhangeli (i-API ayitshintshanga). Ungabhala izibophelelo zakho ukuze imiyalezo ithunyelwe kwitshaneli - akukho nzima.

KWI: – Kuthekani ngeselula?

AG: -Ndibonile ngokuqinisekileyo: kukho izibophelelo zepatch yeCordova eqhutywa nguJs. KwiReact Native - andazi; mhlawumbi kukho, mhlawumbi akunjalo (ndandingenamdla ngakumbi). Injini yomdlalo we-N-go ixhasa zombini usetyenziso lweselula - zombini i-iOS kunye ne-Android.

KWI: -Umbuzo malunga neNdibano yeWebhu. Indawo eninzi ithathwa phezulu, nangona ukunyanzeliswa kunye ne "zipping" ... Ngaba asiyi kubulala umhlaba ongaphambili ngale ndlela ngakumbi?

AG: – INdibano yeWebhu yifomati yokubini, kwaye ibhinari ngokungagqibekanga ayinakuba kukhupho lokugqibela ngaphezu kokubhaliweyo... Utsalwa kwixesha lokuqhuba, kodwa oku kuyafana nokutsala ngaphandle kwelayibrari yeJavascript esemgangathweni xa ingekho, ngoko ke thina sebenzisa iLodash ethile. Andazi ukuba iLodash ithatha malini.

KWI: -Ngokucacileyo ingaphantsi kunexesha lokusebenza ...

AG: -KwiJavascript "ecocekileyo"?

KWI: - Ewe. Siyicinezela phambi kokuba siyithumele...

AG: - Kodwa lo mbhalo ... Ngokuqhelekileyo, i-megabyte ibonakala ngathi ininzi, kodwa yiyo yonke (unalo lonke ixesha lokugijima). Emva koko, ubhala ingqiqo yeshishini lakho, eliya kwandisa ibhinary yakho nge-1%. Ukuza kuthi ga ngoku andiyiboni le nto ibulala umphambili. Ngaphezu koko, iNdibano yeWebhu iya kusebenza ngokukhawuleza kuneJavascript ngesizathu esicacileyo-akufuneki ukuba ihlaziywe.

KWI: - Oku kuseyingongoma ephikisanayo ... Akukabikho naluphi na ukuphunyezwa kwereferensi "Vasma" (iNdibano yeWebhu) ukuze umntu agwebe ngokungathandabuzekiyo. Ngokombono, ewe: sonke siyaqonda ukuba i-binary kufuneka ikhawuleze, kodwa ukuphunyezwa kwangoku kwe-V8 efanayo kusebenza kakuhle.

AG: - Ewe.

KWI: -Ukuhlanganisa apho kusebenza kupholile kakhulu kwaye akuyonyani ukuba kuya kubakho inzuzo enkulu.

AG: -INdibano yeWebhu nayo yenziwe ngabafana abakhulu.

KWI: - Kubonakala kum ukuba kusenzima ukugweba iNdibano yeWebhu. Sekuyiminyaka emininzi ngoku kukho iincoko, kodwa zimbalwa izinto eziphunyeziweyo ezinokuvakala.

AG: - Ingayiyo. Sobona.

KWI: - Asinayo iingxaki kwi-backend ... Mhlawumbi sifanele sishiye ezi ngxaki kwi-frontend? Kutheni uye apho?

AG: – Kufuneka sigcine abasebenzi bangaphambili.

Ezinye iintengiso πŸ™‚

Enkosi ngokuhlala nathi. Ngaba uyawathanda amanqaku ethu? Ngaba ufuna ukubona umxholo onomdla ngakumbi? Sixhase ngokufaka iodolo okanye ngokucebisa abahlobo, ifu VPS kubaphuhlisi ukusuka $4.99, i-analogue eyodwa yeeseva zomgangatho wokungena, eyenzelwe wena: Inyaniso yonke malunga neVPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ukusuka kwi-$ 19 okanye indlela yokwabelana ngomncedisi? (ifumaneka nge-RAID1 kunye ne-RAID10, ukuya kuthi ga kwi-24 cores kunye ne-40GB DDR4).

Dell R730xd 2x ngexabiso eliphantsi kwiziko ledatha le-Equinix Tier IV eAmsterdam? Kuphela apha 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV ukusuka $199 eNetherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ukusuka $99! Funda malunga Ulwakha njani umbutho weziseko zophuhliso. iklasi ngokusetyenziswa kwe-Dell R730xd E5-2650 iiseva ze-v4 ezixabisa i-9000 yee-euro ngepeni?

umthombo: www.habr.com

Yongeza izimvo