Alexey Grachev: Lọ Frontend

Kiev Go Ipade May 2018:

Alexey Grachev: Lọ Frontend

Fidio: - Bawo ni gbogbo eniyan! O ṣeun fun wiwa nibi! Loni a ni awọn agbọrọsọ osise meji - Lyosha ati Vanya. Meji yoo wa ti a ba ni akoko to. Agbọrọsọ akọkọ jẹ Alexey Grachev, yoo sọ fun wa nipa GopherJS.

Alexey Grachev (lẹhinna - AG): – Emi ni Go Olùgbéejáde, ati ki o Mo kọ awọn iṣẹ ayelujara ni Go. Nigba miiran o ni lati koju iwaju iwaju, nigbami o ni lati wọle pẹlu ọwọ. Mo fẹ lati sọrọ nipa iriri mi ati iwadii sinu Go lori iwaju.

Àlàyé ni eyi: akọkọ a yoo sọrọ nipa idi ti a fẹ lati ṣiṣe Lọ lori iwaju iwaju, lẹhinna a yoo sọrọ nipa bi o ṣe le ṣe eyi. Awọn ọna meji lo wa - Apejọ wẹẹbu ati GopherJS. Jẹ ki a wo kini ipo ti awọn solusan wọnyi jẹ ati kini o le ṣee ṣe.

Kini aṣiṣe pẹlu iwaju iwaju?

Ṣe gbogbo eniyan gba pe ohun gbogbo dara pẹlu iwaju iwaju?

Alexey Grachev: Lọ Frontend

Ṣe awọn idanwo ko to bi? Kọ o lọra? Eto ilolupo? O dara.

Nipa iwaju iwaju, Mo fẹran agbasọ ti ọkan ninu awọn olupilẹṣẹ iwaju sọ ninu iwe rẹ:

Alexey Grachev: Lọ Frontend

Javascript ko ni eto iru kan. Ni bayi Emi yoo daruko awọn iṣoro ti Mo koju lakoko iṣẹ mi ati ṣalaye bi wọn ṣe yanju.

Eto iru ni gbogbogbo ko le pe ni iru eto ni Javasript - awọn laini wa ti o tọka iru nkan naa, ṣugbọn ni otitọ eyi ko ni nkankan lati ṣe pẹlu awọn oriṣi. Iṣoro yii ni ipinnu ni TypeScript (afikun-un si Javasript) ati Sisan (ṣayẹwo iru-aimi ni Javascript). Lootọ, iwaju iwaju ti de aaye ti yanju iṣoro ti eto iru buburu ni Javascript.

Alexey Grachev: Lọ Frontend

Ko si ile-ikawe boṣewa ninu ẹrọ aṣawakiri bii iru bẹ - diẹ ninu awọn nkan ti a ṣe sinu ati awọn iṣẹ “idan” wa ninu awọn aṣawakiri. Sugbon ni Javascript ko si boṣewa ìkàwé bi iru. Iṣoro yii ti yanju ni ẹẹkan nipasẹ jQuery (gbogbo eniyan lo jQuery pẹlu gbogbo awọn apẹẹrẹ, awọn oluranlọwọ, awọn iṣẹ ti o nilo lati ṣiṣẹ). Bayi gbogbo eniyan lo Lodash:

Alexey Grachev: Lọ Frontend

Callback apaadi. Mo ro pe gbogbo eniyan ri Javascript koodu nipa 5 odun seyin, ati awọn ti o dabi a "nudulu" ti ẹya alaragbayida intricacy ti callbacks. Bayi a ti yanju iṣoro yii (pẹlu idasilẹ ti ES-15 tabi ES-16), awọn ileri ti fi kun si Javascript ati pe gbogbo eniyan le simi rọrun fun igba diẹ.

Alexey Grachev: Lọ Frontend

Titi Promice apaadi de ... Emi ko mọ bi awọn iwaju-opin ile ise ṣakoso awọn, sugbon ti won nigbagbogbo wakọ ara wọn sinu diẹ ninu awọn ajeji igbo. A tun ṣakoso lati ṣe apaadi lori awọn ileri. Lẹhinna a yanju iṣoro yii nipa fifi alakoko tuntun kun - async/duro:

Alexey Grachev: Lọ Frontend

Iṣoro pẹlu asynchrony ti yanju. Async/duro jẹ olokiki olokiki ni ọpọlọpọ awọn ede. Python ati awọn miiran ni ọna yii - o dara pupọ. Isoro yanju.

Isoro wo ni ko yanju? Idiju ti o pọ si ti awọn ilana, idiju ti ilolupo ati awọn eto funrararẹ.

Alexey Grachev: Lọ Frontend

  • Javascript sintasi ni a bit ajeji. Gbogbo wa mọ awọn iṣoro pẹlu fifi ohun orun kun ati ohun kan ati awọn awada miiran.
  • Javascript jẹ olona-paradigm. Eyi jẹ eto titẹ ni pataki ni bayi nigbati ilolupo eda ba tobi pupọ:
    • gbogbo eniyan kọwe ni awọn aza oriṣiriṣi - diẹ ninu awọn kikọ ni igbekale, diẹ ninu kọ iṣẹ ṣiṣe, awọn olupilẹṣẹ oriṣiriṣi kọ ni awọn ọna oriṣiriṣi;
    • lati awọn idii oriṣiriṣi, awọn apẹrẹ oriṣiriṣi nigbati o lo awọn idii oriṣiriṣi;
    • “funfun” pupọ wa pẹlu siseto iṣẹ ni Javasript - ile-ikawe rambda ti han ati ni bayi ko si ẹnikan ti o le ka awọn eto ti a kọ sinu ile-ikawe yii.

  • Gbogbo eyi ṣe ipa nla lori ilolupo eda abemi, ati pe o ti dagba ni iyalẹnu. Awọn idii ko ni ibamu pẹlu ara wọn: diẹ ninu awọn da lori awọn ileri, diẹ ninu awọn da lori async / duro, diẹ ninu awọn da lori callbacks. Wọn tun kọ ni orisirisi awọn paradigms!
  • Eyi jẹ ki iṣẹ akanṣe naa nira lati ṣetọju. O soro lati wa kokoro ti o ko ba le ka koodu naa.

Kini Apejọ Ayelujara?

Awọn eniyan ti o ni igboya lati Mozilla Foundation ati nọmba awọn ile-iṣẹ miiran wa pẹlu iru nkan bi Apejọ wẹẹbu. Kini eyi?

Alexey Grachev: Lọ Frontend

  • Eyi jẹ ẹrọ foju kan ti a ṣe sinu ẹrọ aṣawakiri ti o ṣe atilẹyin ọna kika alakomeji.
  • Awọn eto alakomeji wa nibẹ ati pe o fẹrẹ ṣe ni abinibi, iyẹn ni, ẹrọ aṣawakiri ko nilo lati sọ gbogbo “nudulu” ti koodu JavaScript ni gbogbo igba.
  • Gbogbo awọn aṣawakiri ti kede atilẹyin.
  • Niwọn igba ti eyi jẹ bytecode, o le kọ akopọ fun eyikeyi ede.
  • Awọn aṣawakiri mẹrin pataki tẹlẹ ti gbe pẹlu atilẹyin Apejọ wẹẹbu.
  • A n reti atilẹyin abinibi ni Go laipẹ. A ti fi kun faaji tuntun yii: GOARCH=wasm GOOS=js (laipe). Nitorinaa, bi MO ṣe loye rẹ, kii ṣe iṣẹ ṣiṣe, ṣugbọn alaye kan wa pe dajudaju yoo wa ni Go.

Kini lati ṣe ni bayi? GopherJS

Lakoko ti a ko ni atilẹyin fun Apejọ wẹẹbu, transpiler kan wa bi GopherJS.

Alexey Grachev: Lọ Frontend

  • Go koodu ti wa ni gbigbe sinu “funfun” Javascript.
  • Ṣiṣe ni gbogbo awọn aṣawakiri - ko si awọn ẹya tuntun ti o ni atilẹyin nipasẹ awọn aṣawakiri ode oni (eyi ni Vanilla JS, eyiti o nṣiṣẹ lori ohunkohun).
  • Atilẹyin wa fun fere ohun gbogbo ti Go ni, pẹlu awọn gorutines ati awọn ikanni ... ohun gbogbo ti a nifẹ ati mọ pupọ.
  • O fẹrẹ jẹ pe gbogbo ile-ikawe boṣewa ni atilẹyin, ayafi fun awọn idii wọnyẹn ti ko ni oye lati ṣe atilẹyin ninu ẹrọ aṣawakiri: syscall, awọn ibaraenisepo net (nẹtiwọọki / alabara http wa, ṣugbọn ko si olupin, ati pe alabara jẹ apẹẹrẹ nipasẹ XMLHttpRequest). Ni gbogbogbo, gbogbo ile-ikawe boṣewa wa - nibi o wa ninu ẹrọ aṣawakiri, eyi ni Go's stdlib, eyiti a nifẹ.
  • Gbogbo ilolupo ilolupo ni Go, gbogbo awọn solusan ẹni-kẹta (awoṣe, bbl) le ṣe akopọ nipa lilo GopherJS ati ṣiṣe ni ẹrọ aṣawakiri.

GopherJS rọrun pupọ lati gba - o kan package Go deede. A lọ gba, ati pe a ni aṣẹ GopherJS lati kọ ohun elo naa:

Alexey Grachev: Lọ Frontend

Eyi jẹ iru kekere hello aye...

Alexey Grachev: Lọ Frontend

...Eto Go deede, package fmt ile-ikawe deede ati Binding Js lati de ọdọ API ẹrọ aṣawakiri naa. Println yoo bajẹ yipada si akọọlẹ console ati ẹrọ aṣawakiri yoo kọ “Hello gophers”! O rọrun naa: a ṣe GopherJS kọ - a ṣe ifilọlẹ ni ẹrọ aṣawakiri - ohun gbogbo ṣiṣẹ!

Kini o ni ni akoko yii? Awọn isopọ

Alexey Grachev: Lọ Frontend

Awọn abuda wa fun gbogbo awọn ilana js olokiki:

  • JQuery;
  • Angular.js;
  • D3.js fun igbero ati ki o ṣiṣẹ pẹlu ńlá data;
  • Fesi.js;
  • VueJS;
  • Atilẹyin paapaa wa fun Electron (iyẹn ni, a le kọ awọn ohun elo tabili tẹlẹ lori Electron);
  • ati ohun ti o dun julọ ni WebGL (a le ṣe awọn ohun elo ti o ni kikun, pẹlu awọn ere pẹlu awọn aworan 3D, orin ati gbogbo awọn ti o dara);
  • ati ọpọlọpọ awọn abuda miiran si gbogbo awọn ilana JavaScript olokiki ati awọn ile-ikawe.

ilana

  1. Ilana wẹẹbu kan wa tẹlẹ ni idagbasoke pataki fun GopherJS - Vecty. Eyi jẹ afọwọṣe kikun ti React.js, ṣugbọn ni idagbasoke nikan ni Go, pẹlu awọn pato ti GopherJS.
  2. Awọn baagi ere wa (iyalẹnu!). Mo ti ri awọn meji julọ gbajumo:
    • Engo;
    • Ebiten.

Emi yoo fi awọn apẹẹrẹ meji han ọ ti ohun ti o dabi ati ohun ti o le kọ tẹlẹ ninu Go:

Alexey Grachev: Lọ Frontend

Tabi aṣayan yii (Emi ko le rii ayanbon 3D, ṣugbọn boya o wa):

Alexey Grachev: Lọ Frontend

Kini mo nse?

Bayi ile-iṣẹ ipari iwaju wa ni iru ipo pe gbogbo awọn ede ti o kigbe tẹlẹ lati Javascript yoo yara sibẹ. Bayi ohun gbogbo yoo ṣe akojọpọ sinu “Awọn apejọ wẹẹbu”. Kini a nilo lati gba aaye ẹtọ wa nibẹ gẹgẹbi Gophers?

Alexey Grachev: Lọ Frontend

Go ti ro pe o jẹ ede siseto System, ati pe ko si awọn ile-ikawe fun ṣiṣẹ pẹlu UI. Nibẹ ni nkankan, sugbon o jẹ idaji abandoned, idaji ti kii-iṣẹ.

Ati pe ni bayi ni aye to dara lati ṣe awọn ile-ikawe UI ni Go ti yoo ṣiṣẹ lori GopherJS! O le nipari kọ ara rẹ ilana! Eleyi jẹ akoko ti o le kọ kan ilana, ati awọn ti o yoo jẹ ọkan ninu awọn akọkọ ati ki o gba tete olomo, ati awọn ti o yoo wa ni a star (ti o ba jẹ kan ti o dara ilana).

O le ṣe deede ọpọlọpọ awọn idii oriṣiriṣi ti o ti wa tẹlẹ ninu ilolupo Go si awọn pato ti ẹrọ aṣawakiri (fun apẹẹrẹ, ẹrọ Awoṣe). Wọn yoo ṣiṣẹ tẹlẹ, o le ṣe awọn asopọ irọrun ki o le ni rọọrun mu akoonu naa taara ni ẹrọ aṣawakiri. Pẹlupẹlu, o le ṣe, fun apẹẹrẹ, iṣẹ kan ti o le ṣe ohun kanna lori olupin ati ni iwaju-ipari, lilo koodu kanna - ohun gbogbo ti awọn olupilẹṣẹ iwaju-opin fẹ (nikan ni Go).

O le kọ ere kan! Igbadun nikan ni...

Iyẹn ni gbogbo ohun ti Mo fẹ sọ.

Alexey Grachev: Lọ Frontend

Awọn ibeere

Ibeere (lẹhin ti a tọka si bi Q): – Ṣe Mo kọ ni Go tabi Js?

AG: - O kọ awọn ọna ṣiṣe, awọn ikanni, awọn ẹya, ifibọ - ohun gbogbo ni Go… O ṣe alabapin si iṣẹlẹ kan, ṣe iṣẹ kan nibẹ.

NI: – Nitorina ni mo kọ ni "ihoho" Js?

AG: – Rara, o kọ bi ẹnipe ni Go ki o sopọ si API ẹrọ aṣawakiri (API ko yipada). O le kọ awọn ìde tirẹ ki a fi awọn ifiranṣẹ ranṣẹ si ikanni - ko nira.

NI: – Kini nipa alagbeka?

AG: – Mo dajudaju rii: awọn ifunmọ wa fun alemo Cordova ti Js nṣiṣẹ. Ni React Native - Emi ko mọ; boya o wa, boya ko (Emi ko paapa nife). Ẹrọ ere N-go ṣe atilẹyin awọn ohun elo alagbeka mejeeji - mejeeji iOS ati Android.

NI: - Ibeere nipa Apejọ Ayelujara. Siwaju ati siwaju sii aaye ti wa ni gbigba soke, pelu awọn funmorawon ati "zipping"... Ṣe a ko ni pa awọn iwaju-opin aye ni ọna yi ani diẹ sii?

AG: - Apejọ wẹẹbu jẹ ọna kika alakomeji, ati alakomeji nipasẹ aiyipada ko le wa ni itusilẹ ikẹhin diẹ sii ju ọrọ lọ… O fa si akoko asiko, ṣugbọn eyi jẹ kanna bi fifaa iwe-ikawe Javascript boṣewa nigbati ko si, nitorinaa a lo diẹ ninu awọn Lodash. Emi ko mọ iye ti Lodash gba.

NI: - O han ni o kere ju akoko ṣiṣe lọ ...

AG: – Ni “funfun” Javascript?

NI: - Bẹẹni. A funmorawon ṣaaju ki o to firanṣẹ…

AG: - Ṣugbọn eyi jẹ ọrọ ... Ni gbogbogbo, megabyte kan dabi pupọ, ṣugbọn eyi ni gbogbo (o ni gbogbo akoko asiko). Nigbamii ti, o kọ ọgbọn iṣowo ti ara rẹ, eyiti yoo mu alakomeji rẹ pọ si nipasẹ 1%. Nítorí jina Emi ko ri yi pipa frontend. Pẹlupẹlu, Apejọ wẹẹbu yoo ṣiṣẹ ni iyara ju Javascript lọ fun idi ti o han gbangba - ko nilo lati ṣe itupalẹ.

NI: - Eyi tun jẹ aaye ariyanjiyan ... Ko si sibẹsibẹ imuse itọkasi eyikeyi ti "Vasma" (Apejọ wẹẹbu) ki ọkan le ṣe idajọ lainidi. Ni imọran, bẹẹni: gbogbo wa loye pe alakomeji yẹ ki o yarayara, ṣugbọn imuse lọwọlọwọ ti V8 kanna jẹ daradara.

AG: - Bẹẹni.

NI: - Akopọ nibẹ ṣiṣẹ dara pupọ ati pe kii ṣe otitọ pe anfani nla yoo wa.

AG: - Apejọ wẹẹbu tun ṣe nipasẹ awọn eniyan nla.

NI: – O dabi si mi pe o jẹ ṣi soro lati lẹjọ Web Apejọ. Awọn ibaraẹnisọrọ ti wa fun ọpọlọpọ ọdun ni bayi, ṣugbọn awọn aṣeyọri gidi diẹ wa ti o le ni rilara.

AG: - Boya. A yoo ri.

NI: - A ko ni awọn iṣoro lori ẹhin ... Boya o yẹ ki a fi awọn iṣoro wọnyi silẹ ni iwaju iwaju? Kini idi ti o fi lọ sibẹ?

AG: - A ni lati tọju oṣiṣẹ ti awọn oṣiṣẹ iwaju-iwaju.

Diẹ ninu awọn ipolowo 🙂

O ṣeun fun gbigbe pẹlu wa. Ṣe o fẹran awọn nkan wa? Ṣe o fẹ lati rii akoonu ti o nifẹ si diẹ sii? Ṣe atilẹyin fun wa nipa gbigbe aṣẹ tabi iṣeduro si awọn ọrẹ, awọsanma VPS fun awọn olupilẹṣẹ lati $ 4.99, afọwọṣe alailẹgbẹ ti awọn olupin ipele-iwọle, eyiti a ṣẹda nipasẹ wa fun ọ: Gbogbo otitọ nipa VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps lati $19 tabi bi o ṣe le pin olupin kan? (wa pẹlu RAID1 ati RAID10, to awọn ohun kohun 24 ati to 40GB DDR4).

Dell R730xd 2x din owo ni Equinix Tier IV ile-iṣẹ data ni Amsterdam? Nikan nibi 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV lati $199 ni Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - lati $99! Ka nipa Bii o ṣe le kọ Infrastructure Corp. kilasi pẹlu awọn lilo ti Dell R730xd E5-2650 v4 apèsè pa 9000 yuroopu fun Penny?

orisun: www.habr.com

Fi ọrọìwòye kun