Alexey Grachev: Téigh Frontend

Kyiv Go Meetup Bealtaine 2018:

Alexey Grachev: Téigh Frontend

Luaidhe: - Dia duit gach duine! Go raibh maith agat as a bheith anseo! Tá beirt chainteoirí oifigiúla againn inniu - Lyosha agus Vanya. Beidh dhá cheann eile ann má bhíonn go leor ama againn. Is é Alexey Grachev an chéad chainteoir, inseoidh sé dúinn faoi GopherJS.

Alexey Grachev (dá ngairfear anseo feasta – AG): – Is forbróir Go mé, agus scríobhaim seirbhísí gréasáin in Go. Uaireanta caithfidh tú déileáil leis an tosaigh, uaireanta caithfidh tú dul isteach ann de láimh. Ba mhaith liom labhairt faoi mo thaithí agus mo thaighde ar Go on the frontend.

Is é seo an finscéal: ar dtús labhróimid faoin bhfáth ar mhaith linn Rith ar aghaidh, agus ansin labhróimid faoi conas is féidir é seo a dhéanamh. Tá dhá bhealach ann - Web Assembly agus GopherJS. Feicfimid cad é stádas na réitigh seo agus cad is féidir a dhéanamh.

Cad atá cearr leis an frontend?

An aontaíonn gach duine go bhfuil gach rud go breá leis an tosaigh?

Alexey Grachev: Téigh Frontend

Nach bhfuil go leor tástálacha ann? Tógáil mall? Éiceachóras? Go breá.

Maidir leis an aghaidh, is maith liom an luachan a dúirt duine de na forbróirí aghaidh ina leabhar:

Alexey Grachev: Téigh Frontend

Níl córas cineáil ag Javascript. Anois ainmneoidh mé na fadhbanna a tháinig orm le linn mo chuid oibre agus míneoidh mé conas a réitítear iad.

Is ar éigean is féidir córas cineál a thabhairt ar an gcóras cineáil i Javasript - tá línte ann a léiríonn cineál an réada, ach i ndáiríre níl baint ar bith aige seo le cineálacha. Réitítear an fhadhb seo i TypeScript (breiseán do Javasript) agus Flow (seiceálaí cineál statach i Javascript). I ndáiríre, tá an frontend sroichte cheana féin an pointe a réiteach ar an bhfadhb de chóras cineál olc i Javascript.

Alexey Grachev: Téigh Frontend

Níl aon leabharlann chaighdeánach sa bhrabhsálaí mar sin - tá roinnt rudaí ionsuite agus feidhmeanna “draíochta” i mbrabhsálaithe. Ach i Javascript níl aon leabharlann caighdeánach mar sin. Réitíodh an fhadhb seo uair amháin ag jQuery (d’úsáid gach duine jQuery leis na fréamhshamhlacha, na cúntóirí, na feidhmeanna go léir a bhí ag teastáil chun oibriú). Anois úsáideann gach duine Lodash:

Alexey Grachev: Téigh Frontend

Ifreann glaoch ar ais. Sílim go bhfaca gach duine cód Javascript thart ar 5 bliana ó shin, agus d'fhéach sé cosúil le "noodle" de intricacy dochreidte glaonna ar ais. Anois go bhfuil an fhadhb seo réitithe (le scaoileadh ES-15 nó ES-16), tá geallúintí curtha le Javascript agus is féidir le gach duine breathe níos éasca ar feadh tamaill.

Alexey Grachev: Téigh Frontend

Go dtí gur tháinig Promice ifreann ... níl a fhios agam conas a éiríonn leis an tionscal tosaigh, ach i gcónaí tiomáinte siad iad féin i roinnt dufair aisteach. D’éirigh linn ifreann a dhéanamh de réir gealltanais freisin. Ansin réitigh muid an fhadhb seo trí primitive nua a chur leis - sioncronaigh/fanacht:

Alexey Grachev: Téigh Frontend

Réitítear an fhadhb le asincrony. Is primitive coitianta go leor é Async / await i dteangacha éagsúla. Tá an cur chuige seo ag Python agus daoine eile - tá sé maith go leor. Fadhb réitithe.

Cén fhadhb nach bhfuil réiteach? Castacht mhéadaitheach easpónantúil na gcreataí, castacht an éiceachórais agus na gclár féin.

Alexey Grachev: Téigh Frontend

  • Tá comhréir javascript beagán aisteach. Tá a fhios againn go léir na fadhbanna a bhaineann le sraith agus réad a chur leis agus scéalta grinn eile.
  • Is paraidím ilghnéitheach é Javascript. Is córas an-phráinneach é seo anois nuair atá an t-éiceachóras an-mhór:
    • scríobhann gach duine i stíleanna éagsúla - scríobhann cuid acu go struchtúrach, scríobhann cuid acu go feidhmiúil, scríobhann forbróirí éagsúla go difriúil;
    • ó phacáistí éagsúla, paradigms éagsúla nuair a úsáideann tú pacáistí éagsúla;
    • tá go leor “spraoi” le ríomhchlárú feidhmiúil i Javasript - bhí an leabharlann rambda le feiceáil agus anois ní féidir le haon duine cláir atá scríofa sa leabharlann seo a léamh.

  • Cuireann sé seo go léir isteach go mór ar an éiceachóras, agus tá sé tar éis fás thar a bheith. Níl na pacáistí comhoiriúnach lena chéile: tá cuid acu bunaithe ar ghealltanais, tá cuid acu bunaithe ar shioncronú/fanacht, tá cuid acu bunaithe ar aisghlaonna. Scríobhann siad freisin i bparaidí éagsúla!
  • Déanann sé seo an tionscadal deacair a choimeád ar bun. Tá sé deacair fabht a aimsiú mura bhfuil tú in ann an cód a léamh.

Cad is Comhthionól Gréasáin ann?

Tháinig na daoine cróga ó Fhondúireacht Mozilla agus roinnt cuideachtaí eile suas lena leithéid de rud mar Web Assembly. Cad é seo?

Alexey Grachev: Téigh Frontend

  • Is meaisín fíorúil é seo a tógadh isteach sa bhrabhsálaí a thacaíonn leis an bhformáid dhénártha.
  • Faigheann cláir dhénártha ann agus déantar iad a fhorghníomhú beagnach go dúchais, is é sin, ní gá don bhrabhsálaí na “núdail” de chód javascript a pharsáil gach uair.
  • Tá tacaíocht dearbhaithe ag gach brabhsálaí.
  • Ós rud é gur bytecode é seo, is féidir leat tiomsaitheoir a scríobh do theanga ar bith.
  • Tá ceithre mhórbhrabhsálaí seolta cheana féin le tacaíocht Tionól Gréasáin.
  • Táimid ag súil le tacaíocht dúchais in Go luath. Cuireadh an ailtireacht nua seo leis cheana: GOARCH=wasm GOOS=js (go luath). Go dtí seo, de réir mar a thuigim é, níl sé feidhmiúil, ach tá ráiteas ann go mbeidh sé cinnte in Go.

Cad atá le déanamh anois? GopherJS

Cé nach bhfuil tacaíocht againn do Web Assembly, tá traspiler cosúil le GopherJS.

Alexey Grachev: Téigh Frontend

  • Aistrítear cód Go go Javascript “íon”.
  • Ritheann sé i ngach brabhsálaí - níl aon ghnéithe nua ann a fhaigheann tacaíocht ó bhrabhsálaithe nua-aimseartha amháin (is é seo Vanilla JS, a ritheann ar rud ar bith).
  • Tá tacaíocht ann do bheagnach gach rud atá ag Go, lena n-áirítear goroutines agus cainéil ... gach rud a bhfuil grá againn agus a bhfuil an oiread sin eolais againn air.
  • Tacaítear leis an leabharlann chaighdeánach iomlán nach mór, ach amháin na pacáistí sin nach ndéanann sé aon chiall tacú leo sa bhrabhsálaí: syscall, glan-idirghníomhaíochtaí (tá cliant glan/http ann, ach níl aon fhreastalaí ann, agus déantar aithris ar an gcliant trí XMLHttpRequest). Go ginearálta, tá an leabharlann chaighdeánach iomlán ar fáil - anseo tá sé sa bhrabhsálaí, anseo tá Go's stdlib, a bhfuil grá againn.
  • Is féidir an t-éiceachóras iomlán pacáiste in Go, gach réiteach tríú páirtí (templating, etc.) a thiomsú ag baint úsáide as GopherJS agus a reáchtáil sa bhrabhsálaí.

Tá sé an-éasca GopherJS a fháil - níl ann ach pacáiste Go rialta. Rachaimid, agus tá ordú GopherJS againn chun an feidhmchlár a thógáil:

Alexey Grachev: Téigh Frontend

Dia duit ar domhan chomh beag seo...

Alexey Grachev: Téigh Frontend

...Clár Go rialta, pacáiste gnáthleabharlainne fmt rialta agus Binding Js chun API an bhrabhsálaí a bhaint amach. Déanfar Println a thiontú go log consól ar deireadh agus scríobhfaidh an brabhsálaí “Hello gophers”! Tá sé chomh simplí sin: déanaimid tógáil GopherJS - seolann muid é sa bhrabhsálaí - oibríonn gach rud!

Cad atá agat faoi láthair? ceangail

Alexey Grachev: Téigh Frontend

Tá ceangail ann do gach creat js a bhfuil tóir orthu:

  • JQuery;
  • uilleach.js;
  • D3.js le haghaidh sonraí móra a bhreacadh agus a oibriú;
  • React.js;
  • VueJS;
  • tá tacaíocht fiú le haghaidh Leictreon (is é sin, is féidir linn iarratais deisce a scríobh ar Leictreon cheana féin);
  • agus is é an rud is greannmhaire ná WebGL (is féidir linn feidhmchláir lánghrafacha a dhéanamh, lena n-áirítear cluichí le grafaicí 3D, ceol agus na nithe go léir);
  • agus go leor ceangail eile le gach creat agus leabharlann javascript a bhfuil an-tóir orthu.

Creat

  1. Tá creat gréasáin forbartha cheana féin go sonrach le haghaidh GopherJS - Vecty. Is analóg iomlán é seo de React.js, ach níor forbraíodh é in Go ach amháin, le sonraí GopherJS.
  2. Tá málaí cluiche (iontas!). Fuair ​​​​mé an dá cheann is coitianta:
    • Engo;
    • Ebiten.

Taispeánfaidh mé cúpla sampla duit den chuma atá air agus cad is féidir leat a scríobh cheana féin in Téigh:

Alexey Grachev: Téigh Frontend

Nó an rogha seo (ní raibh mé in ann shooter 3D a aimsiú, ach b'fhéidir go bhfuil sé ann):

Alexey Grachev: Téigh Frontend

Cad atá á thairiscint agam?

Anois tá an tionscal tosaigh i riocht go mbeidh na teangacha go léir a bhí ag caoineadh ó Javascript roimhe seo ag sileadh ann. Anois déanfar gach rud a thiomsú i “Chomhthionóil Ghréasáin”. Cad is gá dúinn chun ár n-áit dhlisteanach a ghlacadh ann mar Gophers?

Alexey Grachev: Téigh Frontend

Ghlac Go leis go traidisiúnta gur teanga ríomhchláraithe an Chórais í, agus nach bhfuil mórán leabharlanna ann chun oibriú leis an Chomhéadain. Tá rud éigin ann, ach tá sé leath tréigthe, leath neamhfheidhmeach.

Agus anois seans maith leabharlanna Chomhéadain a dhéanamh in Go a reáchtálfar ar GopherJS! Is féidir leat do chreat féin a scríobh ar deireadh! Is é seo an t-am nuair is féidir leat creat a scríobh, agus beidh sé ar cheann de na chéad cheann agus gheobhaidh tú uchtáil go luath, agus beidh tú ina réalta (más creat maith é).

Is féidir leat go leor pacáistí éagsúla atá san éiceachóras Téigh cheana féin a oiriúnú do shaintréithe an bhrabhsálaí (mar shampla, inneall Teimpléad). Oibreoidh siad cheana féin, is féidir leat ceangail áisiúil a dhéanamh ionas gur féidir leat an t-ábhar a sholáthar go díreach sa bhrabhsálaí go héasca. Ina theannta sin, is féidir leat, mar shampla, seirbhís a dhéanamh a fhéadfaidh an rud céanna a sholáthar ar an bhfreastalaí agus ar an taobh tosaigh, ag baint úsáide as an gcód céanna - gach rud is maith le forbróirí tosaigh (ach anois in Téigh).

Is féidir leat cluiche a scríobh! Díreach le haghaidh spraoi…

Sin go léir a theastaigh uaim a rá.

Alexey Grachev: Téigh Frontend

ceisteanna

Ceist (dá ngairtear Q anseo feasta): – An scríobhaim i Go nó Js?

AG: – Scríobhann tú gnáthaimh, cainéil, struchtúir, neadú – gach rud in Go... Síníonn tú d’imeacht, pasann tú feidhm ansin.

In: – Mar sin scríobhaim i Js “naked”?

AG: – Níl, scríobhann tú amhail is dá mba i Téigh agus ceangail leis an API brabhsálaí (níor athraigh an API). Is féidir leat do cheangail féin a scríobh ionas go seolfar teachtaireachtaí chuig an gcainéal - níl sé deacair.

In: – Cad mar gheall ar fhóin phóca?

AG: – Chonaic mé cinnte: tá ceangail ann don paiste Cordova a ritheann Js. In React Dúchasach - níl a fhios agam; b'fhéidir go bhfuil, b'fhéidir nach bhfuil (ní raibh suim ar leith agam). Tacaíonn an t-inneall cluiche N-go feidhmchlár soghluaiste - iOS agus Android araon.

In: – Ceist faoi Thionól Gréasáin. Tá níos mó agus níos mó spáis á thógáil, in ainneoin an chomhbhrúite agus an “zipping”... Nach maróidh muid an domhan tosaigh ar an mbealach seo níos mó fós?

AG: – Is formáid dhénártha é Web Assembly, agus ní féidir le dénártha a bheith san eisiúint deiridh níos mó ná téacs... Tá tú ag tarraingt ar am rite, ach tá sé seo mar an gcéanna le leabharlann chaighdeánach Javascript a tharraingt amach nuair nach bhfuil sé ann, mar sin táimid úsáid roinnt Lodash. Níl a fhios agam cé mhéad a thógann Lodash.

In: - Níos lú ná am rite ar ndóigh...

AG: – I Javascript “íon”?

In: - Tá. Déanaimid é a chomhbhrú roimh é a sheoladh ...

AG: – Ach seo téacs... Go ginearálta, is cosúil go leor meigibheart, ach sin uile (tá an t-am rite iomlán agat). Ansin, scríobhann tú do loighic ghnó féin, rud a mhéadóidh do dhénártha faoi 1%. Go dtí seo ní fheicim é seo ag marú an tosaigh. Ina theannta sin, oibreoidh Web Assembly níos tapúla ná Javascript ar an gcúis shoiléir - ní gá é a pharsáil.

In: – Is pointe conspóideach é seo fós... Níl aon chur i bhfeidhm tagartha “Vasma” (Tionól Gréasáin) fós ionas gur féidir le duine breithiúnas a thabhairt gan athbhrí. Go coincheapúil, tá: tuigimid go léir gur chóir go mbeadh dénártha níos tapúla, ach tá cur i bhfeidhm reatha an V8 céanna an-éifeachtach.

AG: - Sea.

In: – Oibríonn an tiomsú ann i ndáiríre an-fhionnuar agus ní fíoras é go mbeidh buntáiste mór ann.

AG: – Déanann guys móra an Tionól Gréasáin freisin.

In: – Feictear dom go bhfuil sé deacair fós breithiúnas a thabhairt ar Web Assembly. Tá comhráite ar siúl le blianta fada anois, ach is beag éachtaí is féidir a bhraith.

AG: - B'fhéidir. Feicfimid.

In: – Níl fadhbanna againn ar an backend... B'fhéidir gur cheart dúinn na fadhbanna seo a fhágáil ar an frontend? Cén fáth dul ann?

AG: – Ní mór dúinn foireann oibrithe líne tosaigh a choinneáil.

Roinnt fógraí 🙂

Go raibh maith agat as fanacht linn. An maith leat ár n-alt? Ar mhaith leat ábhar níos suimiúla a fheiceáil? Tacaigh linn trí ordú a dhéanamh nó moladh a thabhairt do chairde, scamall VPS d'fhorbróirí ó $4.99, analóg uathúil de fhreastalaithe leibhéal iontrála, a cheap muid duit: An fhírinne iomlán a insint faoi VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps ó $19 nó conas freastalaí a roinnt? (ar fáil le RAID1 agus RAID10, suas le 24 croíleacan agus suas le 40GB DDR4).

Dell R730xd 2x níos saoire i lárionad sonraí Equinix Tier IV in Amstardam? Ach anseo 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 teilifíse ó $199 san Ísiltír! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - ó $99! Léigh faoi Conas corprú bonneagair a thógáil. rang le húsáid freastalaithe Dell R730xd E5-2650 v4 fiú 9000 euro ar phingin?

Foinse: will.com

Add a comment