Alexey Grachev: Enda Kumberi

Kyiv Go Meetup May 2018:

Alexey Grachev: Enda Kumberi

Tungamira: - Mhoroi mose! Maita basa nekuve pano! Nhasi tine vatauri vaviri vepamutemo - Lyosha naVanya. Pachave nemamwe maviri kana tikawana nguva yakakwana. Mutauri wekutanga ndiAlexey Grachev, achatiudza nezveGopherJS.

Alexey Grachev (pano - AG): - Ini ndiri mugadziri weGo, uye ndinonyora masevhisi ewebhu muGo. Dzimwe nguva unofanirwa kutarisana nechemberi, dzimwe nguva unofanirwa kupinda mairi nemaoko. Ini ndinoda kutaura nezve chiitiko changu uye tsvagiridzo muGo pane kumberi.

Ngano ndeiyi: kutanga tichataura nezvekuti nei tichida kumhanya Enda kumberi, tozotaura nezvekuti izvi zvingaitwe sei. Pane nzira mbiri - Webhu Gungano uye GopherJS. Ngationei kuti zvigadziriso izvi zvakamira sei uye kuti chii chingaitwa.

Chii chakaipa nechemberi?

Munhu wese anobvuma here kuti zvese zvakanaka nefrontend?

Alexey Grachev: Enda Kumberi

Hapana bvunzo dzakakwana here? Kuvaka zvishoma? Ecosystem? Fine.

Nezvekumberi, ini ndinoda quote iyo mumwe wevagadziri vemberi akati mubhuku rake:

Alexey Grachev: Enda Kumberi

Javascript haina mhando system. Zvino ndichadoma matambudziko andakasangana nawo mukuita basa rangu ndotsanangura kuti anogadziriswa sei.

Iyo mhando system kazhinji haigone kunzi type system muJavasript - kune mitsetse inoratidza rudzi rwechinhu, asi kutaura zvazviri izvi hazvinei nemhando. Iri dambudziko rinogadziriswa muTypeScript (yekuwedzera-kuJavasript) uye Flow (a static-mhando yekutarisa muJavascript). Chaizvoizvo, iyo yekumberi yakatosvika padanho rekugadzirisa dambudziko remhando yakaipa system muJavascript.

Alexey Grachev: Enda Kumberi

Iko hakuna raibhurari yakajairwa mubrowser saizvozvo - kune zvimwe zvakavakwa-mukati zvinhu uye "mashiripiti" mabasa mumabhurawuza. Asi muJavascript hapana raibhurari yakajairwa seyakadaro. Dambudziko iri rakanga ratogadziriswa kamwe chete nejQuery (munhu wese akashandisa jQuery nezvose prototypes, vabatsiri, mabasa aidiwa kushanda). Iye zvino munhu wese anoshandisa Lodash:

Alexey Grachev: Enda Kumberi

Callback kugehena. Ini ndinofunga munhu wese akaona Javascript kodhi makore mashanu apfuura, uye yaiita senge "noodle" yekushamisa kunoshamisa kwekufona kumashure. Iye zvino dambudziko iri rakagadziriswa (pamwe nekusunungurwa kweES-5 kana ES-15), zvipikirwa zvakawedzerwa kuJavascript uye munhu wose anogona kufema nyore kwechinguva.

Alexey Grachev: Enda Kumberi

Kusvikira gehena yaPromice yasvika ... Handizivi kuti iyo indasitiri yepamberi inobata sei, asi ivo vanogara vachizvifambisa mune rimwe sango risinganzwisisike. Takakwanisawo kuita hero pazvivimbiso. Ipapo takagadzirisa dambudziko iri nekuwedzera yekutanga - async/kumirira:

Alexey Grachev: Enda Kumberi

Dambudziko neasynchrony rinogadziriswa. Async / kumirira ndeye yakakurumbira mukurumbira mumitauro yakasiyana. Python nevamwe vane nzira iyi - yakanaka chaizvo. Dambudziko ragadziriswa.

Dambudziko ripi risingagadziriswe? Iko kuwedzera kuri kuwedzera kuoma kwemaitiro, kuoma kweiyo ecosystem uye zvirongwa pachazvo.

Alexey Grachev: Enda Kumberi

  • Javascript syntax inoshamisa. Isu tese tinoziva matambudziko nekuwedzera array uye chinhu uye mamwe majee.
  • Javascript ine multi-paradigm. Iyi ndiyo inonyanya kudzvanya system ikozvino kana ecosystem yakakura kwazvo:
    • munhu wese anonyora nenzira dzakasiyana-siyana - vamwe vanonyora maitiro, vamwe vanonyora zvinoshanda, vanogadzira vakasiyana vanonyora nenzira dzakasiyana;
    • kubva pamapakeji akasiyana, maparadigm akasiyana paunoshandisa mapakeji akasiyana;
    • kune "mafaro" akawanda ane mashandiro ehurongwa muJavasript - raibhurari yerambda yakaonekwa uye zvino hapana anogona kuverenga zvirongwa zvakanyorwa muraibhurari ino.

  • Zvese izvi zvinoita kukanganisa kukuru pane ecosystem, uye yakakura zvisingaite. Iwo mapakeji haaenderane kune mumwe nemumwe: mamwe akavakirwa pazvipikirwa, mamwe anobva pane async / kumirira, mamwe akavakirwa pacallbacks. Vanonyorawo mumaparadigms akasiyana!
  • Izvi zvinoita kuti chirongwa chiome kuchengetedza. Zvakaoma kuwana tsikidzi kana usingakwanise kuverenga kodhi.

Chii chinonzi Web Assembly?

Vakomana vakashinga kubva kuMozilla Foundation uye akati wandei mamwe makambani akauya nechinhu chakadai seWebhu Assembly. Ichi chii?

Alexey Grachev: Enda Kumberi

  • Uyu mushini chaiwo wakavakirwa mubrowser inotsigira iyo binary fomati.
  • Zvirongwa zveBinary zvinosvika ipapo uye zvinoitwa zvinenge zvekuzvarwa, kureva kuti, bhurawuza harifanire kupatsanura ese "noodles" yejavascript kodhi nguva dzese.
  • Mabhurawuza ese akazivisa rutsigiro.
  • Sezvo iyi iri bytecode, unogona kunyora compiler kune chero mutauro.
  • Mabhurawuza mana makuru anototumira neWebhu Assembly rutsigiro.
  • Tiri kutarisira rutsigiro rwemuno muGo munguva pfupi iri kutevera. Ichi chivakwa chitsva chakatowedzerwa: GOARCH=wasm GOOS=js (nenguva pfupi). Parizvino, sezvandinozvinzwisisa, haisi kushanda, asi pane chirevo chekuti ichave iri muGo.

Ndoita sei manje? GopherJS

Kunyange isu tisina rutsigiro rweWebhu Gungano, pane transpiler seGopherJS.

Alexey Grachev: Enda Kumberi

  • Go code inoturikirwa mu "pure" Javascript.
  • Inomhanya mumabhurawuza ese - hapana zvitsva zvinotsigirwa chete nemabhurawuza emazuva ano (iyi Vanilla JS, inomhanya pane chero chinhu).
  • Pane tsigiro yezvinenge zvese izvo Go ina, kusanganisira goroutines uye machaneli ... zvese zvatinoda uye tinoziva zvakanyanya.
  • Inenge raibhurari yese yakajairika inotsigirwa, kunze kweiyo mapakeji izvo zvisina musoro kutsigira mubrowser: syscall, mambure ekudyidzana (kune net/http mutengi, asi hapana sevha, uye mutengi anoteedzerwa kuburikidza neXMLHttpRequest). Kazhinji, raibhurari yese yakajairika inowanikwa - pano iri mubrowser, heino Go's stdlib, yatinoda.
  • Iyo yese package ecosystem muGo, ese echitatu-bato mhinduro (templating, nezvimwewo) inogona kuunganidzwa uchishandisa GopherJS uye kumhanya mubrowser.

GopherJS iri nyore kuwana - ingori yenguva dzose Go package. Isu tinoenda kunotora, uye isu tine GopherJS murairo wekuvaka application:

Alexey Grachev: Enda Kumberi

Iyi inyika diki mhoro...

Alexey Grachev: Enda Kumberi

...Chirongwa cheGo chenguva dzose, yakajairika raibhurari fmt package uye Binding Js kusvika kune browser API. Println inozopedzisira yashandurwa kuita console log uye bhurawuza inonyora kuti "Mhoro gophers"! Zviri nyore: tinoita GopherJS kuvaka - tinoivhura mubrowser - zvese zvinoshanda!

Chii chaunacho panguva ino? Bindings

Alexey Grachev: Enda Kumberi

Pane zvinosungirwa kune ese anozivikanwa js masimusi:

  • JQuery;
  • Angular.js;
  • D3.js yekuronga uye kushanda nedata hombe;
  • React.js;
  • VueJS;
  • kune kunyange tsigiro yeElectron (kureva kuti, tinogona kutonyora maapplication edesktop paElectron);
  • uye chinhu chinosekesa iWebGL (tinogona kuita yakazara-graphic application, kusanganisira mitambo ine 3D mifananidzo, mimhanzi uye zvese zvinonaka);
  • uye zvimwe zvakawanda zvinosungirwa kune ese anozivikanwa javascript masisitimu nemaraibhurari.

Framework

  1. Kune webhu dhizaini yakatogadzirwa zvakanangana neGopherJS - Vecty. Iyi analogue izere yeReact.js, asi yakagadziridzwa chete muGo, neiyo GopherJS chaiyo.
  2. Kune mabhegi emutambo (kushamisika!). Ndakawana maviri anonyanya kufarirwa:
    • Engo;
    • Ebiten.

Ini ndinokuratidza mishoma mienzaniso yezvazvinotaridzika uye zvaunogona kutonyora muGo:

Alexey Grachev: Enda Kumberi

Kana iyi sarudzo (handina kuwana 3D shooter, asi pamwe iripo):

Alexey Grachev: Enda Kumberi

Ndiri kupa chii?

Ikozvino indasitiri yekumberi iri mumamiriro ezvinhu zvekuti mitauro yese yakambochema kubva kuJavascript inomhanyira ikoko. Iye zvino zvese zvichaunganidzwa kuita "Web Assemblies". Chii chatinofanira kutora nzvimbo yedu yakakodzera ipapo seGophers?

Alexey Grachev: Enda Kumberi

Go yagara ichifungidzira kuti iSistimu programming mutauro, uye hapana kana maraibhurari ekushanda neUI. Pane chimwe chinhu, asi hafu yakasiiwa, hafu isiri kushanda.

Uye ikozvino mukana wakanaka wekugadzira ma library eUI muGo anomhanya paGopherJS! Iwe unogona pakupedzisira kunyora yako chimiro! Ino ndiyo nguva iyo iwe unogona kunyora hurongwa, uye ichava imwe yekutanga uye kuwana kugamuchirwa kwekutanga, uye iwe uchava nyeredzi (kana iri chimiro chakanaka).

Iwe unogona kugadzirisa akawanda akasiyana mapakeji ayo atove muGo ecosystem kune chaiwo ebrowser (semuenzaniso, template injini). Ivo vanotoshanda, iwe unogona kugadzira zvisungo zviri nyore kuitira kuti iwe ugone kupa zviri nyore zvirimo zvakananga mubrowser. Uyezve, iwe unogona kuita, semuenzaniso, sevhisi inogona kupa chinhu chimwe chete pane sevha uye kumberi-kumagumo, uchishandisa iyo imwechete kodhi - zvese izvo zvemberi-magumo vanogadzira (chete ikozvino muGo).

Unogona kunyora mutambo! Zvekunakidzwa chete...

Ndizvo chete zvandaida kutaura.

Alexey Grachev: Enda Kumberi

Mibvunzo yako

Mubvunzo (wazonzi Q): - Ndinonyora muna Go kana Js?

AG: - Iwe unonyora maitiro, chiteshi, zvimiro, embedding - zvese muGo ... Unonyorera kune chiitiko, pfuura chiitiko ipapo.

Mu: - Saka ini ndinonyora "kushama" Js?

AG: - Kwete, iwe unonyora sekunge muGo uye ubatanidze kune browser API (iyo API haina kuchinja). Iwe unogona kunyora zvisungo zvako kuitira kuti mameseji atumirwe kuchiteshi - hazvina kuoma.

Mu: - Zvakadini nezve mobile?

AG: -Ini ndakanyatsoona: kune zvinosungirwa zveCordova chigamba icho Js inomhanya. MuReact Native - handizive; pamwe pane, zvichida kwete (ndakanga ndisinganyanyi kufarira). Iyo N-go yemutambo injini inotsigira ese nharembozha - zvese iOS uye Android.

Mu: - Mubvunzo nezve Webhu Gungano. Nzvimbo yakawanda uye yakawanda iri kutorwa, pasinei nekumanikidzika uye "zipping" ... Hatingazourayi nyika yepamberi nenzira iyi zvakanyanya here?

AG: - Web Assembly imhando yebhinari, uye bhinari nekukasira haigone kuve mukuburitswa kwekupedzisira kupfuura zvinyorwa ... Unokweverwa kunguva yekumhanya, asi izvi zvakafanana nekukwevera kunze mureza Javascript raibhurari kana isipo, saka isu shandisa imwe Lodash. Handizivi kuti Lodash inotora marii.

Mu: - Zviripachena ishoma pane yekumhanya ...

AG: - Mune "yakachena" Javascript?

Mu: - Ehe. Tinoimanikidza tisati tatumira...

AG: - Asi izvi zvinyorwa ... Kazhinji, megabyte inoita seyakawanda, asi ndizvo chete (iwe une nguva yose yekumhanya). Tevere, iwe unonyora yako wega bhizinesi logic, iyo inowedzera bhinari yako ne1%. Parizvino handisi kuona izvi zvichiuraya pamberi. Uyezve, Webhu Musangano uchashanda nekukurumidza kupfuura Javascript nekuda kwechikonzero chiri pachena - haidi kuparadzaniswa.

Mu: - Iyi ichiri nharo inokakavadzana ... Hakusati kwave kusati kwaitwa kushandiswa kwe "Vasma" (Web Assembly) kuitira kuti munhu atonge zvisina kujeka. Sezvineiwo, hongu: isu tese tinonzwisisa kuti bhinari inofanirwa kukurumidza, asi iko iko kushandiswa kweiyo V8 kunoshanda zvakanyanya.

AG: - Ehe.

Mu: -Kubatanidza ikoko kunoshanda chaizvo kutonhorera uye hachisi chokwadi chekuti pachave nemukana wakakura.

AG: -Musangano weWebhu unogadzirwawo nevakomana vakuru.

Mu: - Zvinoratidzika kwandiri kuti zvichiri kunetsa kutonga Web Assembly. Kwave kune kurukurirano kwemakore akawanda zvino, asi kune zvishoma kubudirira kwechokwadi kunogona kunzwika.

AG: - Pamwe. Tichaona.

Mu: - Hatina matambudziko kumashure ... Zvichida tinofanira kusiya matambudziko aya pamberi? Kuenderei ikoko?

AG: - Isu tinofanirwa kuchengetedza vashandi vepamberi vashandi.

Dzimwe ads πŸ™‚

Ndinokutendai nekugara nesu. Unoda zvinyorwa zvedu here? Unoda kuona zvimwe zvinonakidza zvemukati? Titsigire nekuisa odha kana kukurudzira kushamwari, Cloud VPS yevagadziri kubva kumadhora 4.99, yakasarudzika analogue yekupinda-level maseva, iyo yakagadzirwa nesu kuti iwe: Chokwadi chese nezveVPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps kubva pamadhora makumi maviri kana kugovera sevha? (inowanikwa neRAID1 uye RAID10, kusvika ku24 cores uye kusvika ku40GB DDR4).

Dell R730xd 2 nguva yakachipa muEquinix Tier IV data center muAmsterdam? Chete pano 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV kubva $199 muNetherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - kubva pamadhora makumi mapfumbamwe nemapfumbamwe! Verenga nezve Nzira yekuvaka Infrastructure Corp. kirasi nekushandiswa kweDell R730xd E5-2650 v4 maseva anokosha 9000 euros penny?

Source: www.habr.com

Voeg