Kiev Go Ipade May 2018:
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?
Ṣ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ẹ:
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.
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:
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ẹ.
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:
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ẹ.
- 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?
- 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.
- 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:
Eyi jẹ iru kekere hello aye...
...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ọ
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
- 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.
- 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:
Tabi aṣayan yii (Emi ko le rii ayanbon 3D, ṣugbọn boya o wa):
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?
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ọ.
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ẹ,
Dell R730xd 2x din owo ni Equinix Tier IV ile-iṣẹ data ni Amsterdam? Nikan nibi
orisun: www.habr.com