Alexey Grachev: Gaa Frontend

Nzukọ Kyiv Go Mee 2018:

Alexey Grachev: Gaa Frontend

Na-edu: - Ndewo, unu niile! Daalụ maka ịnọ ebe a! Taa, anyị nwere ndị ọkà okwu abụọ - Lyosha na Vanya. A ga-enwe abụọ ọzọ ma ọ bụrụ na anyị nwere oge zuru ezu. Okwu mbụ bụ Alexey Grachev, ọ ga-agwa anyị banyere GopherJS.

Alexey Grachev (nke a ga - eme - AG): – Abụ m onye nrụpụta Go, ana m ede ọrụ webụ na Go. Mgbe ụfọdụ, ị ga-emerịrị ihu ihu, mgbe ụfọdụ ị ga-eji aka gị banye na ya. Achọrọ m ikwu maka ahụmịhe m na nyocha n'ime Go on frontend.

Akụkọ a bụ nke a: mbụ anyị ga-ekwu maka ihe mere anyị ji chọọ ịgba ọsọ Go na frontend, mgbe ahụ, anyị ga-ekwu maka otu esi eme nke a. Enwere ụzọ abụọ - Mgbakọ Weebụ na GopherJS. Ka anyị hụ ihe ọnọdụ nke ngwọta ndị a na ihe a ga-eme.

Kedu ihe dị njọ na frontend?

Onye ọ bụla kwenyere na ihe niile dị mma na frontend?

Alexey Grachev: Gaa Frontend

Ọ bụ na ezughị ule? Nrụpụta nwayo? Ecosystem? Ọ dị mma.

Banyere ihu ihu, okwu ahụ otu onye n'ime ndị mmepe kwuru n'akwụkwọ ya na-amasị m:

Alexey Grachev: Gaa Frontend

Javascript enweghị usoro ụdị. Ugbu a, m ga-akpọ aha nsogbu ndị m zutere n’oge ọrụ m ma kọwaa otú e si edozi ha.

Ụdị usoro n'ozuzu enweghị ike ịkpọ ụdị usoro na Javasript - enwere ahịrị ndị na-egosi ụdị ihe ahụ, mana n'eziokwu nke a enweghị ihe jikọrọ ya na ụdị. A na-edozi nsogbu a na TypeScript (ihe mgbakwunye na Javasript) na Flow (ihe nlele ụdị static na Javascript). N'ezie, frontend eruola n'ókè nke idozi nsogbu nke a ọjọọ ụdị usoro na Javascript.

Alexey Grachev: Gaa Frontend

Enweghị ọbá akwụkwọ ọkọlọtọ na ihe nchọgharị dị ka nke a - enwere ụfọdụ ihe arụnyere na ọrụ "anwansi" na ihe nchọgharị. Mana na Javascript enweghị ọbá akwụkwọ ọkọlọtọ dị ka nke a. A dozila nsogbu a otu ugboro site na jQuery (onye ọ bụla jiri jQuery jiri ụdị prototype niile, ndị enyemaka, ọrụ ndị achọrọ iji rụọ ọrụ). Ugbu a onye ọ bụla na-eji Lodash:

Alexey Grachev: Gaa Frontend

Oku oku hell. Echere m na onye ọ bụla hụrụ koodu Javascript ihe dị ka afọ 5 gara aga, ọ dịkwa ka "noodle" nke mgbagwoju anya dị egwu nke callbacks. Ugbu a edozila nsogbu a (site na ntọhapụ nke ES-15 ma ọ bụ ES-16), agbakwunyere nkwa na Javascript na onye ọ bụla nwere ike iku ume ruo nwa oge.

Alexey Grachev: Gaa Frontend

Ruo mgbe Promice hell rutere ... Amaghị m otú ụlọ ọrụ na-aga n'ihu na-achịkwa, ma ha na-ebuba onwe ha mgbe niile n'ime ọhịa dị iche iche. Anyị jisiri ike mee hel na nkwa. Mgbe ahụ anyị doziri nsogbu a site n'ịgbakwunye ihe ochie - async/echere:

Alexey Grachev: Gaa Frontend

A na-edozi nsogbu ahụ na asynchrony. Async/echere bụ oge ochie ama ama n'asụsụ dị iche iche. Python na ndị ọzọ nwere usoro a - ọ dị ezigbo mma. A doziri nsogbu.

Kedu nsogbu anaghị edozi? The exponentially na-abawanye mgbagwoju nke frameworks, mgbagwoju nke gburugburu ebe obibi na mmemme n'onwe ha.

Alexey Grachev: Gaa Frontend

  • Okwu Javascript dịtụ iche. Anyị niile maara nsogbu ndị dị na ịgbakwunye nhazi na ihe na njakịrị ndị ọzọ.
  • Javascript bụ multi paradigm. Nke a bụ usoro dị egwu ugbu a mgbe gburugburu ebe obibi dị ukwuu:
    • onye ọ bụla na-ede n'ụdị dị iche iche - ụfọdụ na-ede ihe nhazi, ụfọdụ na-ede ọrụ, ndị mmepe dị iche iche na-ede n'ụzọ dị iche iche;
    • site na ngwugwu dị iche iche, paradigms dị iche iche mgbe ị na-eji ngwugwu dị iche iche;
    • enwere ọtụtụ "ọchị" na mmemme na-arụ ọrụ na Javasript - ọbá akwụkwọ rambda pụtara ma ugbu a ọ nweghị onye nwere ike ịgụ mmemme edere n'ọbá akwụkwọ a.

  • Ihe a niile na-enwe mmetụta dị ukwuu na gburugburu ebe obibi, ma ọ tolitela nke ukwuu. Ngwunye ndị ahụ ekwekọghị na ibe ha: ụfọdụ dabere na nkwa, ụfọdụ dabere na async / chere, ụfọdụ dabere na oku oku. Ha na-edekwa n'ụdị dị iche iche!
  • Nke a na-eme ka ọrụ ahụ sie ike idowe. O siri ike ịchọta ahụhụ ma ọ bụrụ na ịnweghị ike ịgụ koodu ahụ.

Kedu ihe bụ Mgbakọ Webụ?

Ụmụ okorobịa ndị nwere obi ike sitere na Mozilla Foundation na ọtụtụ ụlọ ọrụ ndị ọzọ wepụtara ihe dị ka Mgbakọ Webụ. Kedu ihe bụ ihe a?

Alexey Grachev: Gaa Frontend

  • Nke a bụ igwe mebere n'ime ihe nchọgharị na-akwado usoro ọnụọgụ abụọ.
  • Mmemme ọnụọgụ abụọ na-erute ebe ahụ, a na-egbukwa ya ihe fọrọ nke nta ka ọ bụrụ nwa afọ, ya bụ, ihe nchọgharị ahụ adịghị mkpa ịtụgharị "noodles" niile nke koodu javascript oge ọ bụla.
  • Ihe nchọgharị niile ekwupụtala nkwado.
  • Ebe ọ bụ na nke a bụ bytecode, ị nwere ike ide ihe nchịkọta maka asụsụ ọ bụla.
  • Isi ihe nchọgharị anọ ejirila nkwado Mgbakọ Webụ ebubata.
  • Anyị na-atụ anya nkwado obodo na Go n'oge adịghị anya. Agbakwụnyela ihe owuwu ọhụrụ a: GOARCH=wasm GOOS=js (n'oge adịghị anya). Ruo ugbu a, dịka m ghọtara ya, ọ naghị arụ ọrụ, mana enwere nkwupụta na ọ ga-abụrịrị na Go.

Kedu ihe ị ga-eme ugbu a? GopherJS

Ọ bụ ezie na anyị enweghị nkwado maka Mgbakọ Weebụ, enwere transpiler dị ka GopherJS.

Alexey Grachev: Gaa Frontend

  • A na-atụgharị koodu Go ka ọ bụrụ "dị ọcha" Javascript.
  • Na-agba ọsọ na ihe nchọgharị niile - enweghị atụmatụ ọhụụ nke naanị ihe nchọgharị ọgbara ọhụrụ na-akwado (nke a bụ Vanilla JS, nke na-agba na ihe ọ bụla).
  • Enwere nkwado maka ihe fọrọ nke nta ka ọ bụrụ ihe niile Go nwere, gụnyere goroutines na ọwa ... ihe niile anyị hụrụ n'anya ma mara nke ukwuu.
  • A na-akwado ihe fọrọ nke nta ka ọ bụrụ ọbá akwụkwọ ọkọlọtọ dum, ma e wezụga nchịkọta ndị ahụ na-enweghị isi ịkwado na ihe nchọgharị: syscall, net interactions (enwere onye ahịa net/http, ma ọ dịghị ihe nkesa, na onye ahịa na-eṅomi site na XMLHttpRequest). N'ozuzu, ọbá akwụkwọ ọkọlọtọ dum dị - ebe a ọ dị na ihe nchọgharị, ebe a bụ Go's stdlib, nke anyị hụrụ n'anya.
  • Usoro gburugburu ngwungwu niile dị na Go, ihe ngwọta ndị ọzọ niile (templating, wdg) nwere ike ịchịkọta site na iji GopherJS ma na-agba ọsọ na ihe nchọgharị ahụ.

GopherJS dị mfe ịnweta - ọ bụ naanị ngwugwu Go mgbe niile. Anyị ga-enweta, ma anyị nwere iwu GopherJS iji wuo ngwa:

Alexey Grachev: Gaa Frontend

Nke a bụ obere ụwa ndewo...

Alexey Grachev: Gaa Frontend

... Mmemme Go na-aga n'ihu, ngwungwu fmt ọbá akwụkwọ oge niile na Binding Js iji ruo API ihe nchọgharị ahụ. Println ga-emecha gbanwee ka ọ bụrụ ndekọ njikwa na ihe nchọgharị ahụ ga-ede "Ndewo gophers"! Ọ dị mfe: anyị na-ewu GopherJS - anyị na-ebunye ya na ihe nchọgharị - ihe niile na-arụ ọrụ!

Kedu ihe ị nwere ugbu a? Njikọ

Alexey Grachev: Gaa Frontend

Enwere njide maka usoro js niile ama ama:

  • JQuery;
  • Angular.js;
  • D3.js maka nkata na-arụ ọrụ na nnukwu data;
  • Nzaghachi.js;
  • VueJS;
  • enwere nkwado maka Electron (ya bụ, anyị nwere ike dee ngwa desktọpụ na Electron);
  • na ihe na-atọ ọchị bụ WebGL (anyị nwere ike ịme ngwa ngwa, gụnyere egwuregwu nwere eserese 3D, egwu na ihe ọma niile);
  • yana ọtụtụ njikọ ndị ọzọ na usoro Javascript niile ama ama na ọba akwụkwọ.

Framework

  1. Enwere usoro webụ emeberela maka GopherJS - Vecty. Nke a bụ analog zuru oke nke React.js, mana naanị mepụtara na Go, yana nkọwapụta nke GopherJS.
  2. Enwere akpa egwuregwu (ihe ịtụnanya!). Achọtara m abụọ kacha ewu ewu:
    • Engo;
    • Ebiten.

Aga m egosi gị ọmụmaatụ ole na ole nke ihe ọ dị na ihe ị nwere ike dee na Go:

Alexey Grachev: Gaa Frontend

Ma ọ bụ nhọrọ a (Enweghị m ike ịhụ onye na-agba ụta 3D, mana enwere ike ọ dị):

Alexey Grachev: Gaa Frontend

Kedu ihe m na-enye?

Ugbu a ụlọ ọrụ dị n'ihu nọ n'ọnọdụ dị otú ahụ na asụsụ niile ndị na-ebebu site na Javascript ga-agba ọsọ ebe ahụ. Ugbu a, a ga-achịkọta ihe niile na "Mgbakọ Weebụ". Kedu ihe anyị kwesịrị iji were ọnọdụ kwesịrị ekwesị anyị dị ka ndị Gofa?

Alexey Grachev: Gaa Frontend

Go echerela na ọ bụ asụsụ mmemme Sistemu, ma ọ nweghị ụlọ akwụkwọ ọ bụla maka ịrụ ọrụ na UI. Enwere ihe, ma ọ bụ ọkara gbahapụrụ, ọkara anaghị arụ ọrụ.

Ma ugbu a bụ ezigbo ohere ịme ọba akwụkwọ UI na Go nke ga-agba ọsọ na GopherJS! Ị nwere ike imecha dee usoro nke gị! Nke a bụ oge mgbe ị nwere ike dee a kpuchie, na ọ ga-abụ otu n'ime ndị mbụ na-enweta n'oge doro, na ị ga-abụ kpakpando (ma ọ bụrụ na ọ bụ ezigbo framework).

Ị nwere ike ịmegharị ọtụtụ ngwugwu dị iche iche nke dịlarị na gburugburu ebe obibi Go na nkọwa nke ihe nchọgharị ahụ (dịka ọmụmaatụ, injin Template). Ha ga-arụ ọrụ ugbua, ị nwere ike ịme njikọ dị mma ka ị nwee ike ịmepụta ọdịnaya ozugbo na ihe nchọgharị ahụ. Na mgbakwunye, ị nwere ike ịme, dịka ọmụmaatụ, ọrụ nke nwere ike inye otu ihe ahụ na ihe nkesa na n'ihu, na-eji otu koodu - ihe niile na-amasị ndị mmepe na-amasị (naanị ugbu a na Go).

Ị nwere ike dee egwuregwu! Naanị maka ọchị...

Nke ahụ bụ ihe m chọrọ ikwu.

Alexey Grachev: Gaa Frontend

Ajụjụ gị

Ajụjụ (nke a na-akpọkwa Q): – M na-ede na Go ma ọ bụ Js?

AG: - Ị na-ede usoro, ọwa, nhazi, ntinye - ihe niile dị na Go ... Ị denye aha na ihe omume, nyefee ọrụ n'ebe ahụ.

Na: – Ya mere, m dee na "ọtọ" Js?

AG: – Mba, ị na-ede ka ọ bụrụ na Go wee jikọọ na ihe nchọgharị API (API agbanwebeghị). Ị nwere ike dee njide nke gị ka ezipu ozi na ọwa - ọ dịghị ihe siri ike.

Na: – Gịnị banyere mobile?

AG: - Ahụrụ m n'ezie: enwere njikọ maka patch Cordova nke Js na-agba. Na React Native - Amaghị m; ma eleghị anya, ọ dị, ma eleghị anya, ọ bụghị (enweghị mmasị karịsịa). Igwe egwuregwu N-go na-akwado ma ngwa mkpanaka - ma iOS na gam akporo.

Na: – Ajụjụ gbasara Mgbakọ Webụ. A na-ewepụtakwu ohere, n'agbanyeghị mkpakọ na "zipping" ... Ọ bụ na anyị agaghị egbu ụwa n'ihu n'ụzọ dị otú a ọbụna karịa?

AG: - Mgbakọ Weebụ bụ usoro ọnụọgụ abụọ, ọnụọgụ abụọ site na ndabara enweghị ike ịbụ na ntọhapụ ikpeazụ karịa ederede ... A na-adọta gị na oge ọsọ ọsọ, mana nke a bụ otu ihe ahụ dị ka ịdọrọ ọbá akwụkwọ Javascript ọkọlọtọ mgbe ọ na-anọghị ya, yabụ anyị jiri ụfọdụ Lodash . Amaghị m ole Lodash na-ewe.

Na: - O doro anya na ọ na-erughị oge ịgba ọsọ ...

AG: - Na Javascript "dị ọcha"?

Na: - Ee. Anyị na-akpakọba ya tupu izipu ya...

AG: - Ma nke a bụ ederede ... N'ozuzu, megabyte yiri ka ọ dị ọtụtụ, ma nke ahụ bụ ihe niile (ị nwere oge niile). Na-esote, ị na-ede echiche azụmahịa nke gị, nke ga-abawanye ọnụọgụ abụọ gị site na 1%. Ruo ugbu a, ahụghị m nke a na-egbu frontend. Ọzọkwa, Mgbakọ Weebụ ga-arụ ọrụ ngwa ngwa karịa Javascript maka ihe doro anya - ọ dịghị mkpa ka atụgharị ya.

Na: - Nke a ka bụ ihe na-ese okwu ... Enwebeghị akwụkwọ ntinye aka nke "Vasma" (Mgbakọ Weebụ) ka mmadụ wee nwee ike ikpe ikpe n'enweghị mgbagha. N'echiche, ee: anyị niile ghọtara na ọnụọgụ abụọ kwesịrị ịdị ngwa ngwa, mana mmejuputa nke otu V8 dị ugbu a na-arụ ọrụ nke ọma.

AG: - Ee.

Na: - Nchịkọta ebe ahụ na-arụ ọrụ nke ọma na ọ bụghị eziokwu na a ga-enwe nnukwu uru.

AG: – Web Assembly bụkwa ndị nnukwu ụmụ okorobịa mere.

Na: – O yiri ka m na ọ ka siri ike ikpe Web Assembly. Enweela mkparịta ụka kemgbe ọtụtụ afọ ugbu a, mana enwere ezigbo mmezu ole na ole enwere ike ime.

AG: - Enwere ike. Anyị ga-ahụ.

Na: - Anyị enweghị nsogbu na azụ azụ ... Ma eleghị anya, anyị kwesịrị ịhapụ nsogbu ndị a n'ihu? Gịnị mere na-aga ebe ahụ?

AG: - Anyị ga-edobe onye ọrụ nke ndị ọrụ n'ihu.

Ụfọdụ mgbasa ozi 🙂

Daalụ maka ịnọnyere anyị. Akụkọ anyị ọ masịrị gị? Chọrọ ịhụ ọdịnaya na-adọrọ mmasị karị? Kwado anyị site n'itinye iwu ma ọ bụ ịkwado ndị enyi, igwe ojii VPS maka ndị mmepe sitere na $ 4.99, analog pụrụ iche nke sava ọkwa ntinye, nke anyị chepụtara maka gị: Eziokwu niile gbasara VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps site na $19 ma ọ bụ otu esi ekekọrịta ihe nkesa? (dị na RAID1 na RAID10, ruo 24 cores na ruo 40GB DDR4).

Dell R730xd 2x dị ọnụ ala na etiti data Equinix Tier IV na Amsterdam? Naanị ebe a 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV sitere na $199 na Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - sitere na $99! Gụkwuo banyere ya Kedu otu esi emepụta Infrastructure Corp. klas na iji Dell R730xd E5-2650 v4 sava kwesịrị 9000 euro maka otu penny?

isi: www.habr.com

Tinye a comment