Alexey Grachev: Pitani Kutsogolo

Msonkhano wa Kyiv Go Meyi 2018:

Alexey Grachev: Pitani Kutsogolo

Zitsogozo: - Moni nonse! Zikomo chifukwa chokhala pano! Lero tili ndi oyankhula awiri - Lyosha ndi Vanya. Padzakhala ena awiri ngati tikhala ndi nthawi yokwanira. Wokamba woyamba ndi Alexey Grachev, adzatiuza za GopherJS.

Alexey Grachev (pano - AG): - Ndine wopanga Go, ndipo ndimalemba mawebusayiti mu Go. Nthawi zina muyenera kuthana ndi frontend, nthawi zina muyenera kulowa pamanja. Ndikufuna kulankhula za zomwe ndakumana nazo ndikufufuza za Go on the frontend.

Nthano ndi iyi: choyamba tikambirana chifukwa chake tikufuna kuthamanga Pitani kutsogolo, ndiyeno tidzakambirana momwe izi zingachitikire. Pali njira ziwiri - Web Assembly ndi GopherJS. Tiyeni tiwone momwe mayankhowa alili komanso zomwe zingachitike.

Cholakwika ndi chiyani ndi frontend?

Kodi aliyense amavomereza kuti zonse zili bwino ndi frontend?

Alexey Grachev: Pitani Kutsogolo

Kodi kulibe mayeso okwanira? Kumanga pang'onopang'ono? Ecosystem? Chabwino.

Pankhani yakutsogolo, ndimakonda mawu omwe m'modzi mwa oyambitsa kutsogolo adati m'buku lake:

Alexey Grachev: Pitani Kutsogolo

Javascript ilibe mtundu wamtundu. Tsopano nditchula mavuto omwe ndidakumana nawo m'ntchito yanga ndikufotokozera momwe amathetsedwera.

Mtundu wamtunduwu sungathe kutchedwa mtundu wa Javasript - pali mizere yomwe ikuwonetsa mtundu wa chinthucho, koma kwenikweni izi sizikugwirizana ndi mitundu. Vutoli limathetsedwa mu TypeScript (chowonjezera ku Javasript) ndi Flow (woyang'anira mtundu wa static mu Javascript). Kwenikweni, kutsogolo kwafika kale pothetsa vuto la mtundu woyipa wa Javascript.

Alexey Grachev: Pitani Kutsogolo

Palibe laibulale yokhazikika mumsakatuli motere - pali zinthu zina zomangidwa ndi "matsenga" mu asakatuli. Koma mu Javascript mulibe laibulale wamba monga choncho. Vutoli lidathetsedwa kale ndi jQuery (aliyense adagwiritsa ntchito jQuery ndi ma prototypes, othandizira, ntchito zomwe zimafunikira kuti zigwire ntchito). Tsopano aliyense amagwiritsa ntchito Lodash:

Alexey Grachev: Pitani Kutsogolo

Callback gehena. Ndikuganiza kuti aliyense adawona kachidindo ka Javascript pafupifupi zaka 5 zapitazo, ndipo inkawoneka ngati "noodle" yazovuta kwambiri zoyimba. Tsopano vutoli lathetsedwa (ndi kumasulidwa kwa ES-15 kapena ES-16), malonjezo awonjezedwa ku Javascript ndipo aliyense akhoza kupuma mosavuta kwa kanthawi.

Alexey Grachev: Pitani Kutsogolo

Mpaka gehena ya Promice inafika ... Sindikudziwa momwe mafakitale akutsogolo amayendetsera, koma nthawi zonse amadziyendetsa okha m'nkhalango zachilendo. Tinakwanitsanso kupanga gehena pa malonjezo. Kenako tidathetsa vutoli powonjezera choyambirira - async/ait:

Alexey Grachev: Pitani Kutsogolo

Vuto la asynchrony lathetsedwa. Async/ait ndi yakale yodziwika bwino m'zilankhulo zosiyanasiyana. Python ndi ena ali ndi njira iyi - ndiyabwino kwambiri. Vuto lathetsedwa.

Ndi vuto lanji lomwe silikuthetsedwa? Kuchulukirachulukira kochulukira kwa ma frameworks, zovuta za chilengedwe ndi mapulogalamu omwe.

Alexey Grachev: Pitani Kutsogolo

  • Javascript syntax ndi yachilendo. Tonse timadziwa zovuta pakuwonjezera mndandanda ndi chinthu ndi nthabwala zina.
  • Javascript ndi multi-paradigm. Iyi ndi dongosolo lomwe likukakamiza kwambiri tsopano pamene chilengedwe chili chachikulu kwambiri:
    • aliyense amalemba masitayelo osiyanasiyana - ena amalemba mwadongosolo, ena amalemba mogwira ntchito, opanga osiyanasiyana amalemba m'njira zosiyanasiyana;
    • kuchokera pamaphukusi osiyanasiyana, ma paradigms osiyanasiyana mukamagwiritsa ntchito mapaketi osiyanasiyana;
    • pali "zosangalatsa" zambiri ndi mapulogalamu ogwira ntchito ku Javasript - laibulale ya rambda idawonekera ndipo palibe amene angawerenge mapulogalamu olembedwa mulaibulale iyi.

  • Zonsezi zimakhudza kwambiri zachilengedwe, ndipo zakula modabwitsa. Maphukusiwo ndi osagwirizana wina ndi mzake: ena amachokera ku malonjezo, ena amachokera ku async / kuyembekezera, ena amachokera ku callbacks. Amalembanso m'maparadigm osiyanasiyana!
  • Izi zimapangitsa kuti ntchitoyi ikhale yovuta kuisamalira. Ndizovuta kupeza cholakwika ngati simungathe kuwerenga code.

Kodi Web Assembly ndi chiyani?

Anyamata olimba mtima ochokera ku Mozilla Foundation ndi makampani ena angapo adabwera ndi chinthu monga Web Assembly. Ichi ndi chiyani?

Alexey Grachev: Pitani Kutsogolo

  • Awa ndi makina enieni opangidwa mu msakatuli omwe amathandizira mawonekedwe a binary.
  • Mapulogalamu a Binary amafika ndipo amachitidwa mwachibadwa, ndiye kuti, osatsegula safunikira kusanthula "zopatsa" zonse za javascript code nthawi iliyonse.
  • Asakatuli onse adalengeza kuti amathandizira.
  • Popeza iyi ndi bytecode, mutha kulemba cholembera chilankhulo chilichonse.
  • Asakatuli anayi akuluakulu atumizidwa kale ndi chithandizo cha Web Assembly.
  • Tikuyembekeza thandizo lakwawo mu Go posachedwa. Zomanga zatsopanozi zawonjezedwa kale: GOARCH=wasm GOOS=js (posachedwa). Pakadali pano, monga ndikumvetsetsa, sizogwira ntchito, koma pali mawu oti adzakhaladi mu Go.

Zotani tsopano? GopherJS

Ngakhale tilibe chithandizo cha Web Assembly, pali transpiler ngati GopherJS.

Alexey Grachev: Pitani Kutsogolo

  • Go code imasinthidwa kukhala Javascript "yoyera".
  • Imathamanga mu asakatuli onse - palibe zatsopano zomwe zimathandizidwa ndi asakatuli amakono okha (iyi ndi Vanilla JS, yomwe imayenda pa chilichonse).
  • Pali chithandizo cha pafupifupi chilichonse chomwe Go ali nacho, kuphatikiza ma goroutines ndi ma tchane ... chilichonse chomwe timakonda komanso kudziwa zambiri.
  • Pafupifupi laibulale yonse yokhazikika imathandizidwa, kupatula maphukusi omwe sapanga zomveka kuthandizira pa msakatuli: syscall, kuyanjana kwaukonde (pali kasitomala wa ukonde / http, koma palibe seva, ndipo kasitomala amatsatiridwa kudzera pa XMLHttpRequest). Nthawi zambiri, laibulale yonse yokhazikika ilipo - iyi ili mu msakatuli, nayi Go's stdlib, yomwe timakonda.
  • Zachilengedwe zonse za phukusi mu Go, mayankho onse a chipani chachitatu (tempplating, etc.) zitha kupangidwa pogwiritsa ntchito GopherJS ndikuyendetsa mu msakatuli.

GopherJS ndiyosavuta kupeza - ndi phukusi lokhazikika la Go. Timapita kukatenga, ndipo tili ndi lamulo la GopherJS kuti timange pulogalamuyi:

Alexey Grachev: Pitani Kutsogolo

Ili ndi dziko laling'ono moni ...

Alexey Grachev: Pitani Kutsogolo

...Pulogalamu ya Go wokhazikika, phukusi lokhazikika la library fmt ndi Binding Js kuti mufikire API ya msakatuli. Println pamapeto pake idzasinthidwa kukhala chipika chotonthoza ndipo msakatuli adzalemba "Moni ma gophers"! Ndizosavuta: timapanga GopherJS kumanga - timayiyambitsa mu msakatuli - zonse zimagwira ntchito!

Muli ndi chiyani pakadali pano? Zomangira

Alexey Grachev: Pitani Kutsogolo

Pali zomangira pamadongosolo onse otchuka a js:

  • JQuery;
  • Angular.js;
  • D3.js pokonzekera ndi kugwira ntchito ndi deta yaikulu;
  • React.js;
  • VueJS;
  • palinso chithandizo cha Electron (ndiko kuti, tikhoza kulemba kale mapulogalamu apakompyuta pa Electron);
  • ndipo chosangalatsa kwambiri ndi WebGL (tikhoza kupanga zojambula zonse, kuphatikizapo masewera okhala ndi zithunzi za 3D, nyimbo ndi zabwino zonse);
  • ndi zina zambiri zomangirira kumapangidwe onse otchuka a javascript ndi malaibulale.

Makhalidwe

  1. Pali tsamba lawebusayiti lomwe lapangidwa kale la GopherJS - Vecty. Ichi ndi analogi yathunthu ya React.js, koma idangopangidwa mu Go, ndizomwe GopherJS.
  2. Pali zikwama zamasewera (zodabwitsa!). Ndapeza awiri otchuka kwambiri:
    • Engo;
    • Ebeten.

Ndikuwonetsani zitsanzo zingapo za momwe zimawonekera komanso zomwe mungalembe kale mu Go:

Alexey Grachev: Pitani Kutsogolo

Kapena njira iyi (sindinapeze chowombera cha 3D, koma mwina chilipo):

Alexey Grachev: Pitani Kutsogolo

Kodi ndikupereka chiyani?

Tsopano makampani akutsogolo ali m'malo moti zilankhulo zonse zomwe zidalira kuchokera ku Javascript zidzathamangira kumeneko. Tsopano zonse zidzaphatikizidwa mu "Web Assemblies". Kodi tifunika chiyani kuti titenge malo athu oyenera pamenepo monga Gophers?

Alexey Grachev: Pitani Kutsogolo

Go akhala akuganiza kuti ndi chilankhulo cha System, ndipo palibe malaibulale ogwirira ntchito ndi UI. Pali chinachake, koma ndi theka lasiyidwa, theka chosagwira ntchito.

Ndipo tsopano ndi mwayi wabwino kupanga malaibulale a UI mu Go omwe aziyenda pa GopherJS! Mutha kulemba chimango chanu! Iyi ndi nthawi yomwe mungathe kulemba chimango, ndipo idzakhala imodzi mwa oyamba ndikuyamba kukhazikitsidwa, ndipo mudzakhala nyenyezi (ngati ndi ndondomeko yabwino).

Mutha kusintha ma phukusi osiyanasiyana omwe ali kale mu Go ecosystem kuti agwirizane ndi msakatuli (mwachitsanzo, injini ya template). Adzagwira ntchito kale, mutha kupanga zomangira zosavuta kuti mutha kumasulira zomwe zili mwachindunji mumsakatuli. Kuphatikiza apo, mutha kupanga, mwachitsanzo, ntchito yomwe imatha kupereka zomwezo pa seva komanso kutsogolo, pogwiritsa ntchito kachidindo komweko - chilichonse chomwe opanga kutsogolo amakonda (pokhapo tsopano mu Go).

Mutha kulemba masewera! Zongosangalatsa…

Ndizo zonse zomwe ndimafuna kunena.

Alexey Grachev: Pitani Kutsogolo

Mafunso anu

Funso (lotchedwa Q): - Kodi ndimalemba mu Go kapena Js?

AG: - Mumalemba machitidwe, mayendedwe, zomanga, zoyika - zonse mu Go... Mumalembetsa ku chochitika, perekani ntchito pamenepo.

Mu: - Ndiye ndimalemba "maliseche" Js?

AG: - Ayi, mumalemba ngati mu Go ndikulumikizana ndi osatsegula API (API sinasinthe). Mutha kulemba zomangira zanu kuti mauthenga atumizidwe kunjira - sizovuta.

Mu: - Nanga bwanji mafoni?

AG: - Ndinawonadi: pali zomangira za Cordova chigamba chomwe Js amayendetsa. Mu React Native - sindikudziwa; mwina alipo, mwina ayi (sindinali ndi chidwi kwenikweni). Injini yamasewera a N-go imathandizira mapulogalamu onse am'manja - iOS ndi Android.

Mu: - Mafunso okhudza Web Assembly. Malo ochulukirapo akutengedwera, ngakhale kuponderezedwa ndi "zipping" ... Kodi sitidzapha dziko lakutsogolo motere mowonjezereka?

AG: - Web Assembly ndi mtundu wa binary, ndipo binary mwachisawawa sichikhoza kumasulidwa komaliza kuposa malemba ... Mumakopeka ndi nthawi yothamanga, koma izi ndizofanana ndi kukokera laibulale ya Javascript yokhazikika pamene palibe, kotero ife gwiritsani ntchito Lodash. Sindikudziwa kuti Lodash amatenga zingati.

Mu: - Mwachiwonekere yocheperako kuposa nthawi yothamanga ...

AG: - Mu Javascript "yoyera"?

Mu: - Inde. Timakanika tisanatumize...

AG: - Koma izi ndizolemba ... Kawirikawiri, megabyte ikuwoneka ngati yochuluka, koma ndizo zonse (muli ndi nthawi yonse yothamanga). Kenako, mumalemba malingaliro anu abizinesi, omwe angakulitse binary yanu ndi 1%. Mpaka pano sindikuwona izi zikupha kutsogolo. Komanso, Web Assembly idzagwira ntchito mofulumira kuposa Javascript pazifukwa zodziwikiratu - siziyenera kugawidwa.

Mu: - Izi zikadali zotsutsana ... Palibe kukhazikitsidwa kwa "Vasma" (Web Assembly) kuti munthu athe kuweruza mosakayikira. Mwachidziwitso, inde: tonse timamvetsetsa kuti binary iyenera kukhala yofulumira, koma kukhazikitsidwa kwa V8 komweko ndikothandiza kwambiri.

AG: - Inde.

Mu: -Kuphatikiza kumeneko kumagwira ntchito bwino kwambiri ndipo sizowona kuti padzakhala mwayi waukulu.

AG: - Web Assembly imapangidwanso ndi anyamata akuluakulu.

Mu: - Zikuwoneka kwa ine kuti ndizovuta kuweruza Web Assembly. Pakhala pali zokambirana kwa zaka zambiri tsopano, koma pali zochepa zopambana zomwe zingamveke.

AG: - Mwina. Tiwona.

Mu: - Tilibe mavuto kumbuyo ... Mwinamwake tiyenera kusiya mavutowa kutsogolo? Bwanji kupita kumeneko?

AG: -Tiyenera kukhala ndi antchito apatsogolo.

Zotsatsa zina πŸ™‚

Zikomo chifukwa chokhala nafe. Kodi mumakonda zolemba zathu? Mukufuna kuwona zambiri zosangalatsa? Tithandizeni potipatsa oda kapena kulimbikitsa anzathu, mtambo VPS kwa opanga kuchokera ku $ 4.99, ma analogi apadera a ma seva olowera, omwe adakupangirani inu: Chowonadi chonse chokhudza VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kuchokera $19 kapena momwe mungagawire seva? (ikupezeka ndi RAID1 ndi RAID10, mpaka 24 cores mpaka 40GB DDR4).

Dell R730xd 2x yotsika mtengo ku Equinix Tier IV data center ku Amsterdam? Pokhapokha 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kuchokera $199 ku Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kuchokera $99! Werengani za Momwe mungamangire Infrastructure Corp. kalasi pogwiritsa ntchito ma seva a Dell R730xd E5-2650 v4 ofunika ma euro 9000 pa khobiri?

Source: www.habr.com

Kuwonjezera ndemanga