Alexey Grachev: Tsoela Pele

Kopano ea Kyiv Go Mots'eanong 2018:

Alexey Grachev: Tsoela Pele

Moeta-pele: - Lumelang bohle! Kea leboha ha u le mona! Kajeno re na le libui tse peli tsa molao - Lyosha le Vanya. Ho tla ba le tse ling tse peli haeba re na le nako e lekaneng. Sebui sa pele ke Alexey Grachev, o tla re bolella ka GopherJS.

Alexey Grachev (kamora mona - AG): - Ke moqapi oa Go, 'me ke ngola lits'ebeletso tsa webo ho Go. Ka linako tse ling u tlameha ho sebetsana le frontend, ka linako tse ling u tlameha ho kena ho eona ka letsoho. Ke batla ho bua ka boiphihlelo ba ka le ho etsa lipatlisiso ho Go on the frontend.

Tšōmo ke ena: pele re tla bua ka hore na ke hobane'ng ha re batla ho matha E-ea ka pele, ebe re bua ka hore na sena se ka etsoa joang. Ho na le litsela tse peli - Web Assembly le GopherJS. A re boneng hore na litharollo tsena li boemong bofe le hore na ho ka etsoa eng.

Phoso ke efe ka frontend?

Na e mong le e mong o lumela hore ntho e 'ngoe le e' ngoe e ntle ka pele?

Alexey Grachev: Tsoela Pele

Na ha ho na liteko tse lekaneng? Mohaho o fokolang? Ecosystem? Hantle.

Mabapi le ntlha e ka pele, ke rata qotso eo e mong oa bahlahisi ba pele a e boletseng bukeng ea hae:

Alexey Grachev: Tsoela Pele

Javascript ha e na mofuta oa sistimi. Joale ke tla bolela mathata ao ke kopaneng le ona ha ke ntse ke etsa mosebetsi oa ka 'me ke hlalose hore na a rarolloa joang.

Sistimi ea mofuta ka kakaretso e ke ke ea bitsoa mofuta oa mofuta ho Javasript - ho na le mela e bonts'ang mofuta oa ntho, empa ha e le hantle sena ha se amane le mefuta. Bothata bona bo rarolloa ka TypeScript (keketso ho Javasript) le Flow (mofuta oa static-mofuta oa Javascript). Ha e le hantle, sebaka se ka pele se se se fihlile boemong ba ho rarolla bothata ba tsamaiso e mpe ea mofuta ho Javascript.

Alexey Grachev: Tsoela Pele

Ha ho na laeborari e tloaelehileng ho sebatli - ho na le lintho tse hahelletsoeng kahare le mesebetsi ea "boselamose" ho libatli. Empa ho Javascript ha ho na laeborari e tloaelehileng joalo. Bothata bona bo ne bo se bo rarollotsoe hang ke jQuery (e mong le e mong o ne a sebelisa jQuery ka lipapiso tsohle, bathusi, mesebetsi e neng e hlokahala ho sebetsa). Hona joale bohle ba sebelisa Lodash:

Alexey Grachev: Tsoela Pele

Callback hell. Ke nahana hore motho e mong le e mong o bone khoutu ea Javascript hoo e ka bang lilemo tse 5 tse fetileng, 'me e ne e shebahala joaloka "noodle" ea ho rarahana ho makatsang ha li-callbacks. Hona joale bothata bona bo rarollotsoe (ka ho lokolloa ha ES-15 kapa ES-16), litšepiso li kentsoe ho Javascript 'me bohle ba ka phefumoloha habonolo ka nakoana.

Alexey Grachev: Tsoela Pele

Ho fihlela lihele tsa Promice li fihla ... ha ke tsebe hore na indasteri ea pele-pele e sebetsa joang, empa kamehla ba itšohlometsa ka morung o mong o makatsang. Hape re ile ra khona ho etsa lihele ka litšepiso. Ebe re rarolla bothata bona ka ho eketsa ea khale - async/e emetse:

Alexey Grachev: Tsoela Pele

Bothata ba asynchrony bo rarollotsoe. Async/wait ke puo ea khale e tsebahalang haholo lipuong tse fapaneng. Python le ba bang ba na le mokhoa ona - o motle haholo. Bothata bo rarollotsoe.

Ke bothata bofe bo sa rarolloang? Ho rarahana ho ntseng ho eketseha ka sekhahla sa meralo, ho rarahana ha tikoloho ea tikoloho le mananeo ka boona.

Alexey Grachev: Tsoela Pele

  • Javascript syntax e batla e makatsa. Kaofela re tseba mathata ka ho eketsa lethathamo le ntho le metlae e meng.
  • Javascript ke multi-paradigm. Ena ke sistimi e hatellang haholo hona joale ha tikoloho ea tikoloho e le kholo haholo:
    • bohle ba ngola ka mefuta e fapaneng - ba bang ba ngola ka sebopeho, ba bang ba ngola ka mokhoa o sebetsang, bahlahisi ba fapaneng ba ngola ka mekhoa e fapaneng;
    • ho tloha liphutheloana tse fapaneng, li-paradigms tse fapaneng ha u sebelisa liphutheloana tse fapaneng;
    • ho na le "monate" o mongata ka mananeo a sebetsang ho Javasript - laebrari ea rambda e ile ea hlaha 'me hona joale ha ho motho ea ka balang mananeo a ngotsoeng laebraring ena.

  • Sena sohle se na le tšusumetso e kholo tsamaisong ea tikoloho, 'me e hotse ka mokhoa o makatsang. Liphutheloana ha li lumellane: tse ling li thehiloe litšepisong, tse ling li thehiloe ho async / lete, tse ling li thehiloe ho li-callbacks. Ba boetse ba ngola ka li-paradigms tse fapaneng!
  • Sena se etsa hore projeke e be thata ho e hlokomela. Ho thata ho fumana phoso haeba o sa khone ho bala khoutu.

Web Assembly ke Eng?

Bashanyana ba sebete ba Mozilla Foundation le lik'hamphani tse ling tse ngata ba ile ba tla le ntho e kang Web Assembly. Ke eng hoo?

Alexey Grachev: Tsoela Pele

  • Ena ke mochini o sebetsang hantle o hahelletsoeng ka har'a sebatli o tšehetsang sebopeho sa binary.
  • Mananeo a Binary a fihla moo 'me a etsoa hoo e batlang e le ka tlhaho, ke hore, sebatli ha se hloke ho hlahloba "li-noodle" tsohle tsa khoutu ea javascript nako le nako.
  • Libatli tsohle li phatlalalitse tšehetso.
  • Kaha sena ke bytecode, o ka ngola motlatsi oa puo efe kapa efe.
  • Libatli tse kholo tse 'ne li se li ntse li romelloa ka tšehetso ea Web Assembly.
  • Re lebelletse tšehetso ea lehae ho Go haufinyane. Moaho ona o mocha o se o kentsoe: GOARCH=wasm GOOS=js (haufinyane). Ho fihlela joale, kamoo ke e utloisisang kateng, ha e sebetse, empa ho na le polelo ea hore ka sebele e tla ba ho Go.

Seo u lokelang ho se etsa hona joale? GopherJS

Le hoja re se na tšehetso bakeng sa Kopano ea Websaete, ho na le transpiler e kang GopherJS.

Alexey Grachev: Tsoela Pele

  • Khoutu ea Go e fetisetsoa ho Javascript e "hloekileng".
  • E sebetsa ho libatli tsohle - ha ho na likarolo tse ncha tse tšehetsoang feela ke libatli tsa sejoale-joale (ena ke Vanilla JS, e sebetsang ho eng kapa eng).
  • Ho na le ts'ehetso bakeng sa hoo e batlang e le ntho e 'ngoe le e' ngoe eo Go e nang le eona, ho kenyelletsa le li-goroutines le likanale ... tsohle tseo re li ratang le tseo re li tsebang haholo.
  • Hoo e ka bang laebrari eohle e tloaelehileng e tšehetsoa, ​​​​ntle le liphutheloana tseo ho sa utloahaleng ho li tšehetsa ho sebatli: syscall, litšebelisano tsa marang-rang (ho na le mofani oa marang-rang / http, empa ha ho seva, 'me mofani o etsisoa ka XMLHttpRequest). Ka kakaretso, laeborari eohle e tloaelehileng ea fumaneha - ke ena ho sebatli, ke ena Go's stdlib, eo re e ratang.
  • Sephutheloana sohle sa ecosystem ho Go, litharollo tsohle tsa mokha oa boraro (templating, joalo-joalo) li ka bokelloa ho sebelisoa GopherJS le ho tsamaisoa ho sebatli.

GopherJS e bonolo haholo ho e fumana - ke sephutheloana sa kamehla sa Go. Re ea fumana, 'me re na le taelo ea GopherJS ea ho aha kopo:

Alexey Grachev: Tsoela Pele

Mona ke lefats'e le lenyane la hello ...

Alexey Grachev: Tsoela Pele

...Lenaneo la kamehla la Go, sephutheloana se tloaelehileng sa laeborari ea fmt le Binding Js ho fihlella API ea sebatli. Println e tla qetella e fetotsoe ho log log mme sebatli se tla ngola "Hello gophers"! Ho bonolo joalo: re etsa GopherJS build - re e tsebisa ho sebatli - tsohle lia sebetsa!

O na le eng ha jwale? Litlamo

Alexey Grachev: Tsoela Pele

Ho na le litlamo bakeng sa meralo eohle e tsebahalang ea js:

  • JQuery;
  • Angular.js;
  • D3.js bakeng sa ho rera le ho sebetsa ka data e kholo;
  • React.js;
  • VueJS;
  • ho na le ts'ehetso bakeng sa Electron (ke hore, re se re ka ngola lits'ebetso tsa komporo ho Electron);
  • 'me ntho e qabolang ka ho fetesisa ke WebGL (re ka etsa lits'ebetso tse hlakileng ka botlalo, ho kenyeletsoa lipapali tse nang le litšoantšo tsa 3D, mmino le lintho tsohle tse monate);
  • le tse ling tse ngata tse tlamang meralo le lilaebrari tse tsebahalang tsa javascript.

Mookameli

  1. Ho na le moralo oa webo o seng o entsoe ka kotloloho bakeng sa GopherJS - Vecty. Ena ke analogue e felletseng ea React.js, empa e ntlafalitsoe feela ho Go, ka lintlha tse hlakileng tsa GopherJS.
  2. Ho na le mekotla ea papali (ho makala!). Ke fumane tse peli tse tsebahalang haholo:
    • Engo;
    • Ebeten.

Ke tla u bontša mehlala e 'maloa ea hore na e shebahala joang le hore na u ka ngola eng ho Go:

Alexey Grachev: Tsoela Pele

Kapa khetho ena (ha kea fumana sethunya sa 3D, empa mohlomong se teng):

Alexey Grachev: Tsoela Pele

Ke fana ka eng?

Hona joale indasteri ea ho qetela e boemong bo joalo hoo lipuo tsohle tse neng li lla pele ho Javascript li tla potlakela moo. Joale tsohle li tla bokelloa ho "Web Assemblies". Re hloka eng ho nka sebaka sa rona se nepahetseng moo re le Gophers?

Alexey Grachev: Tsoela Pele

Go ya ka tlwaelo e ne e akanya gore ke puo ya thulaganyo ya Sisteme, mme go ka nna ga bo go sena dilaeborari tsa go bereka le UI. Ho na le ntho e 'ngoe, empa e lahliloe halofo, e sa sebetse.

'Me joale ke monyetla o motle oa ho etsa lilaebrari tsa UI ho Go tse tla sebetsa ho GopherJS! Qetellong u ka ngola moralo oa hau! Ena ke nako eo ka eona u ka ngolang moralo, 'me e tla ba e' ngoe ea pele 'me u fumane kamohelo ea pele,' me u tla ba naleli (haeba e le moralo o motle).

U ka ikamahanya le liphutheloana tse ngata tse fapaneng tse seng li ntse li le ho Go ecosystem ho latela lintlha tsa sebatli (mohlala, enjine ea template). Li tla se li ntse li sebetsa, u ka etsa litlamo tse loketseng e le hore u ka fana ka litaba habonolo ka kotloloho ho sebatli. Ho feta moo, o ka etsa, ka mohlala, tšebeletso e ka fanang ka ntho e tšoanang ho seva le ka pele-pele, u sebelisa khoutu e tšoanang - ntho e 'ngoe le e' ngoe eo baetsi ba pele ba e ratang (hona joale feela ho Go).

U ka ngola papali! Bakeng sa monate feela...

Ke phetho seo ke neng ke batla ho se bua.

Alexey Grachev: Tsoela Pele

Lipotso

Potso (e tla bitsoa Q): – Na ke ngola ka Go kapa Js?

AG: - U ngola litloaelo, likanale, meaho, ho kenya - ntho e ngoe le e ngoe ho Go ... U ngolisa ketsahalong, u fetisa tšebetso moo.

NAKO: - Kahoo ke ngola ka "feela" Js?

AG: - Che, u ngola joalo ka ha eka ke Go 'me u hokahane le sebatli sa API (API ha e so fetohe). U ka ngola litlamo tsa hau e le hore melaetsa e romelloe seteisheneng - ha ho thata.

NAKO: - Ho thoe'ng ka mobile?

AG: - Ka sebele ke bone: ho na le litlamo bakeng sa patch ea Cordova eo Js a e tsamaisang. In React Native - ha ke tsebe; mohlomong ho na le, mohlomong ha ho joalo (ke ne ke sa thahaselle ka ho khetheha). Enjene ea papali ea N-go e ts'ehetsa lits'ebetso ka bobeli - iOS le Android.

NAKO: - Potso mabapi le Kopano ea Webo. Sebaka se ntseng se eketseha se ntse se nkoa, ho sa tsotellehe khatello le "zipping" ... Na re ke ke ra bolaea lefats'e la pele ka tsela ee le ho feta?

AG: - Web Assembly ke sebopeho sa binary, 'me binary ka ho sa feleng e ke ke ea e-ba teng tokollong ea ho qetela ho feta mongolo ... U huleloa nako ea ho sebetsa, empa sena se tšoana le ho hula laebrari e tloaelehileng ea Javascript ha e le sieo, kahoo re sebelisa Lodash e 'ngoe. Ha ke tsebe hore na Lodash e nka bokae.

NAKO: - Ho hlakile hore e tlase ho feta nako ea ho sebetsa ...

AG: - Ho Javascript e "hloekileng"?

NAKO: - E. Re e hatella pele re e romella...

AG: - Empa sena ke mongolo ... Ka kakaretso, megabyte e bonahala e le ngata, empa ke eona feela (u na le nako eohle ea nako). Ka mor'a moo, u ngola mohopolo oa hau oa khoebo, o tla eketsa binary ea hau ka 1%. Ho fihlela hajoale ha ke bone sena se bolaea motho ea ka pele. Ho feta moo, Kopano ea Websaete e tla sebetsa ka potlako ho feta Javascript ka lebaka le totobetseng - ha ho hlokahale hore e aroloe.

NAKO: - Ena e ntse e le ntlha e tsosang khang ... Ha ho e-s'o be le ts'ebetsong leha e le efe ea ts'ebetsong ea "Vasma" (Web Assembly) e le hore motho a ka ahlola ka mokhoa o sa tsitsang. Ka maikutlo, e: bohle rea utloisisa hore binary e lokela ho ba kapele, empa ts'ebetsong ea hona joale ea V8 e sebetsa hantle haholo.

AG: - E.

NAKO: - Ho bokella moo ho sebetsa hantle haholo mme ha se nnete hore ho tla ba le molemo o moholo.

AG: - Kopano ea Marang-rang e boetse e etsoa ke banna ba baholo.

NAKO: - Ho bonahala ho 'na hore ho ntse ho le thata ho ahlola Web Assembly. Ho se ho e-na le lipuisano ka lilemo tse ngata joale, empa ho na le lintho tse fokolang tsa sebele tse ka utluoang.

AG: - Mohlomong. Re tla bona.

NAKO: - Ha re na mathata ka mokokotlo ... Mohlomong re lokela ho tlohela mathata ana ka pele? Ke hobane'ng ha u ea moo?

AG: - Re tlameha ho boloka basebetsi ba moleng o ka pele.

Lipapatso tse ling 🙂

Kea leboha ka ho lula le rona. Na u rata lingoliloeng tsa rona? U batla ho bona litaba tse ling tse khahlisang? Re tšehetse ka ho etsa odara kapa ho khothaletsa metsoalle, cloud VPS bakeng sa batho ba ntlafatsang ho tloha ho $ 4.99, analogue e ikhethang ea li-server tsa boemo ba ho kena, e iqapetsoeng ke rona bakeng sa hau: 'Nete eohle ka VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ho tloha $19 kapa mokhoa oa ho arolelana seva? (e fumaneha ka RAID1 le RAID10, ho fihla ho li-cores tse 24 le ho fihla ho 40GB DDR4).

Dell R730xd makhetlo a 2 a theko e tlase sebakeng sa data sa Equinix Tier IV se Amsterdam? Ke mona feela 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV ho tloha $199 naheng ea Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ho tloha $99! Bala ka Mokhoa oa ho haha ​​​​infrastructure Corp. sehlopha ka tšebeliso ea li-server tsa Dell R730xd E5-2650 v4 tse jang li-euro tse 9000 bakeng sa penny?

Source: www.habr.com

Eketsa ka tlhaloso