Alexey Grachev: Go Frontend

Taron Kyiv Go Mayu 2018:

Alexey Grachev: Go Frontend

Jagora: - Sannu duka! Na gode da kasancewa a nan! A yau muna da masu magana da hukuma guda biyu - Lyosha da Vanya. Za a sami ƙarin biyu idan muna da isasshen lokaci. Mai magana na farko shine Alexey Grachev, zai gaya mana game da GopherJS.

Alexey Grachev (nan gaba - AG): – Ni mai haɓaka Go ne, kuma ina rubuta ayyukan yanar gizo a cikin Go. Wani lokaci dole ne ku yi hulɗa da gaba, wani lokacin kuma dole ne ku shiga ciki da hannu. Ina so in yi magana game da gwaninta da bincike a cikin Go on frontend.

Labarin shine wannan: da farko zamuyi magana game da dalilin da yasa muke son gudu Go a gaba, sannan zamuyi magana game da yadda za'a iya yin hakan. Akwai hanyoyi guda biyu - Majalisar Yanar Gizo da GopherJS. Bari mu ga menene matsayin waɗannan mafita da abin da za a iya yi.

Me ke damun gaba?

Shin kowa ya yarda cewa komai yana da kyau tare da gaba?

Alexey Grachev: Go Frontend

Shin babu isassun gwaje-gwaje? Gina a hankali? Tsarin muhalli? Lafiya.

Game da gaba, ina son maganar da ɗaya daga cikin masu haɓaka gaba ya ce a cikin littafinsa:

Alexey Grachev: Go Frontend

Javascript bashi da tsarin nau'in. Yanzu zan bayyana matsalolin da na ci karo da su a yayin aikina kuma in bayyana yadda ake magance su.

Nau'in tsarin gabaɗaya da wuya a iya kiransa da nau'in tsarin a Javasript - akwai layukan da ke nuna nau'in abun, amma a zahiri wannan ba shi da alaƙa da nau'ikan. Ana magance wannan matsalar a cikin TypeScript (ƙara zuwa Javasript) da Flow (mai duba nau'in nau'i a cikin Javascript). A zahiri, gaban gaba ya riga ya kai ga warware matsalar tsarin nau'in mara kyau a cikin Javascript.

Alexey Grachev: Go Frontend

Babu daidaitaccen ɗakin karatu a cikin burauzar kamar haka - akwai wasu abubuwan da aka gina a ciki da ayyukan “sihiri” a cikin masu binciken. Amma a cikin Javascript babu daidaitaccen ɗakin karatu kamar haka. An riga an warware wannan matsalar sau ɗaya ta jQuery (kowa ya yi amfani da jQuery tare da duk samfuri, mataimaka, ayyukan da ake buƙata don aiki). Yanzu kowa yana amfani da Lodash:

Alexey Grachev: Go Frontend

Callback jahannama. Ina tsammanin kowa ya ga lambar Javascript kimanin shekaru 5 da suka wuce, kuma ya yi kama da "noodle" na wani abu mai ban mamaki na kiran baya. Yanzu an warware wannan matsala (tare da sakin ES-15 ko ES-16), an ƙara alkawuran zuwa Javascript kuma kowa yana iya numfashi da sauƙi na ɗan lokaci.

Alexey Grachev: Go Frontend

Har sai Promice jahannama ya isa ... Ban san yadda masana'antun gaba-gaba ke gudanarwa ba, amma koyaushe suna fitar da kansu cikin wani daji mai ban mamaki. Mun kuma yi nasarar yin jahannama bisa alkawuran. Sannan mun magance wannan matsalar ta ƙara sabon tsoho - async/jira:

Alexey Grachev: Go Frontend

An magance matsalar asynchony. Async/wait sanannen sananne ne a cikin yaruka daban-daban. Python da sauransu suna da wannan hanyar - yana da kyau sosai. An warware matsalar.

Wace matsala ce ba a warware ba? Ƙaƙƙarfan ƙaƙƙarfan ƙayyadaddun tsarin aiki, da sarƙaƙƙiyar yanayin muhalli da shirye-shiryen kansu.

Alexey Grachev: Go Frontend

  • Javascript syntax abu ne mai ban mamaki. Dukanmu mun san matsalolin da ke tattare da ƙara tsararraki da abu da sauran barkwanci.
  • Javascript shine Multi-paradigm. Wannan tsari ne mai matsi musamman a yanzu lokacin da yanayin yanayin ya yi girma sosai:
    • kowa yakan yi rubutu da salo daban-daban - wasu suna rubutu da tsari, wasu suna rubutu da aiki, masu haɓaka daban-daban suna rubutu ta hanyoyi daban-daban;
    • daga fakiti daban-daban, sigogi daban-daban lokacin da kuke amfani da fakiti daban-daban;
    • Akwai "fun" da yawa tare da shirye-shirye masu aiki a Javasript - ɗakin karatu na rambda ya bayyana kuma yanzu babu wanda zai iya karanta shirye-shiryen da aka rubuta a cikin wannan ɗakin karatu.

  • Duk wannan yana yin babban tasiri a kan yanayin muhalli, kuma ya girma sosai. Fakitin ba su dace da juna ba: wasu sun dogara ne akan alkawuran, wasu suna dogara ne akan async / jira, wasu suna dogara ne akan kira baya. Suna kuma rubuta a cikin sigogi daban-daban!
  • Wannan ya sa aikin yana da wahalar kiyayewa. Yana da wuya a sami kwaro idan ba za ku iya karanta lambar ba.

Menene Majalisar Yanar Gizo?

Jajirtattun mutane daga gidauniyar Mozilla da wasu kamfanoni da dama sun fito da wani abu kamar Majalisar Yanar Gizo. Menene wannan?

Alexey Grachev: Go Frontend

  • Wannan na'ura ce ta kama-da-wane da aka gina a cikin burauzar da ke goyan bayan tsarin binary.
  • Shirye-shiryen binary suna isa can kuma ana aiwatar da su kusan na asali, wato, mai binciken ba ya buƙatar tantance duk “noodles” na lambar javascript kowane lokaci.
  • Duk masu bincike sun ayyana goyan baya.
  • Tunda wannan bytecode ne, zaku iya rubuta mai tarawa ga kowane harshe.
  • Manyan masu bincike huɗu sun riga sun yi jigilarsu tare da tallafin Majalisar Yanar Gizo.
  • Muna sa ran goyan bayan gida a Go nan ba da jimawa ba. An riga an ƙara wannan sabon gine-gine: GOARCH=wasm GOOS=js (nan da nan). Ya zuwa yanzu, kamar yadda na fahimta, ba aiki ba ne, amma akwai wata magana cewa tabbas za ta kasance a cikin Go.

Me za a yi yanzu? GopherJS

Duk da yake ba mu da goyan bayan Majalisar Yanar Gizo, akwai mai jujjuyawa kamar GopherJS.

Alexey Grachev: Go Frontend

  • Ana jujjuya lambar Go zuwa cikin “tsarkake” Javascript.
  • Yana gudana a cikin duk masu bincike - babu wasu sabbin abubuwa waɗanda masu binciken zamani kawai ke tallafawa (wannan shine Vanilla JS, wanda ke gudana akan kowane abu).
  • Akwai goyon baya ga kusan duk abin da Go yana da, ciki har da goroutines da tashoshi ... duk abin da muke so kuma mun sani sosai.
  • Kusan dukkanin ɗakunan karatu na yau da kullun ana tallafawa, ban da waɗancan fakiti waɗanda ba su da ma'ana don tallafawa a cikin mai binciken: syscall, hulɗar yanar gizo (akwai abokin ciniki na net/http, amma babu sabar, kuma ana kwaikwayi abokin ciniki ta hanyar XMLHttpRequest). Gabaɗaya, ana samun daidaitaccen ɗakin karatu gabaɗaya - anan yana cikin mashigar bincike, ga Go's stdlib, wanda muke ƙauna.
  • Dukkanin yanayin yanayin fakitin a cikin Go, duk mafita na ɓangare na uku (samfurin, da sauransu) ana iya haɗa su ta amfani da GopherJS kuma a yi aiki a cikin mai bincike.

GopherJS yana da sauƙin samu - kunshin Go ne na yau da kullun. Za mu je samu, kuma muna da umarnin GopherJS don gina aikace-aikacen:

Alexey Grachev: Go Frontend

Wannan ita ce yar karamar duniya hello...

Alexey Grachev: Go Frontend

...Shirin Go na yau da kullun, fakitin fmt na ɗakin karatu na yau da kullun da Binding Js don isa API mai binciken. Println daga ƙarshe za'a canza zuwa log log kuma mai binciken zai rubuta "Sannu gophers"! Yana da sauƙi: muna gina GopherJS - mun ƙaddamar da shi a cikin mai bincike - duk abin yana aiki!

Me kuke da shi a halin yanzu? Daure

Alexey Grachev: Go Frontend

Akwai ɗauri ga duk mashahurin tsarin js:

  • JQuery;
  • Angular.js;
  • D3.js don tsarawa da aiki tare da manyan bayanai;
  • Amsa.js;
  • VueJS;
  • akwai ma tallafi ga Electron (wato, za mu iya riga mun rubuta aikace-aikacen tebur akan Electron);
  • kuma mafi ban sha'awa shine WebGL (za mu iya yin cikakkun aikace-aikacen hoto, ciki har da wasanni tare da zane-zane na 3D, kiɗa da duk kyawawan abubuwa);
  • da sauran ɗauri masu yawa ga duk mashahurin tsarin javascript da ɗakunan karatu.

tsarin

  1. Akwai tsarin gidan yanar gizon da aka riga aka haɓaka musamman don GopherJS - Vecty. Wannan cikakken analogue ne na React.js, amma an haɓaka shi kawai a cikin Go, tare da ƙayyadaddun GopherJS.
  2. Akwai jakunkuna na wasa (mamaki!). Na sami mafi shaharar guda biyu:
    • Engo;
    • Ebiten.

Zan nuna muku misalai biyu na yadda yake kama da abin da kuka riga kuka iya rubutawa a cikin Go:

Alexey Grachev: Go Frontend

Ko wannan zaɓi (Ba zan iya samun mai harbi 3D ba, amma watakila akwai):

Alexey Grachev: Go Frontend

Me nake bayarwa?

Yanzu masana'antar gaba-gaba tana cikin yanayin da duk harsunan da a baya suka yi kuka daga Javascript za su garzaya wurin. Yanzu duk abin da za a harhada shi a cikin "Web Assemblies". Me ya kamata mu dauki matsayin mu na Gophers?

Alexey Grachev: Go Frontend

Go yana ɗaukan al'ada cewa yaren shirye-shiryen tsarin ne, kuma kusan babu ɗakunan karatu don aiki tare da UI. Akwai wani abu, amma an bar shi rabin, rabin ba ya aiki.

Kuma yanzu shine kyakkyawan damar yin ɗakunan karatu na UI a cikin Go waɗanda zasu gudana akan GopherJS! Kuna iya ƙarshe rubuta tsarin ku! Wannan shi ne lokacin da za ku iya rubuta tsarin, kuma zai kasance ɗaya daga cikin na farko da kuma samun tallafi da wuri, kuma za ku zama tauraro (idan yana da kyakkyawan tsari).

Kuna iya daidaita fakiti daban-daban da yawa waɗanda ke cikin tsarin yanayin Go zuwa ƙayyadaddun mai binciken (misali, injin Samfura). Za su riga sun yi aiki, za ku iya yin ɗaure masu dacewa ta yadda za ku iya sauƙaƙe abubuwan da ke ciki kai tsaye a cikin mai bincike. Bugu da ƙari, za ku iya yin, alal misali, sabis ɗin da zai iya yin abu iri ɗaya akan uwar garken da kuma a gaba-gaba, ta amfani da lambar guda ɗaya - duk abin da masu haɓakawa na gaba suke so (kawai a yanzu a cikin Go).

Kuna iya rubuta wasa! Don jin daɗi kawai...

Abin da nake so ke nan ke nan.

Alexey Grachev: Go Frontend

Tambayoyi

Tambaya (nan gaba ana kiranta Q): - Shin zan rubuta a Go ko Js?

AG: - Kuna rubuta abubuwan yau da kullun, tashoshi, tsari, haɗawa - duk abin da ke cikin Go… Kuna biyan kuɗi zuwa wani taron, wuce aiki a can.

B: - Don haka na rubuta a cikin "tsirara" Js?

AG: - A'a, kuna rubuta kamar a cikin Go kuma ku haɗa zuwa API mai bincike ( API ɗin bai canza ba). Kuna iya rubuta abubuwan haɗin ku don aika saƙonni zuwa tashar - ba shi da wahala.

B: – Me game da wayar hannu?

AG: - Tabbas na gani: akwai ɗaure don facin Cordova wanda Js ke gudanarwa. In React Native - Ban sani ba; watakila akwai, watakila ba (Ban yi sha'awar musamman ba). Injin wasan N-go yana goyan bayan aikace-aikacen hannu biyu - duka iOS da Android.

B: - Tambaya game da Majalisar Yanar Gizo. Ana ɗaukar ƙarin sararin samaniya, duk da matsawa da "zipping" ... Shin ba za mu kashe ƙarshen duniya ta wannan hanyar ba?

AG: – Majalisar Yanar Gizo tsari ne na binary, kuma binary ta tsohuwa ba zai iya kasancewa a cikin sakin ƙarshe ba fiye da rubutu… An ja ku zuwa lokacin aiki, amma wannan daidai yake da fitar da daidaitaccen ɗakin karatu na Javascript lokacin da ba ya nan, don haka mu amfani da wasu Lodash. Ban san nawa Lodash ke ɗauka ba.

B: – Babu shakka kasa da lokacin gudu...

AG: - A cikin "tsarki" Javascript?

B: - Da. Mu danne shi kafin mu aika...

AG: - Amma wannan rubutu ne ... Gabaɗaya, megabyte yana kama da yawa, amma wannan ke nan (kana da cikakken lokacin gudu). Bayan haka, kuna rubuta dabarun kasuwancin ku, wanda zai haɓaka binary ɗin ku da 1%. Ya zuwa yanzu ban ga wannan yana kashe gaba ba. Bugu da ƙari, Majalisar Yanar Gizo za ta yi aiki da sauri fiye da Javascript don dalili mai ma'ana - ba ya buƙatar yin nazari.

B: - Wannan har yanzu batu ne mai rikitarwa ... Har yanzu ba a sami wani aiwatar da "Vasma" (Majalisar Yanar Gizo) ta yadda mutum zai iya yin hukunci ba tare da wata shakka ba. A zahiri, a: duk mun fahimci cewa binary ya kamata ya zama da sauri, amma aiwatar da V8 na yanzu yana da inganci sosai.

AG: - Da.

B: - Tattara a can yana aiki da kyau sosai kuma ba gaskiyar cewa za a sami babban fa'ida ba.

AG: – Majalisar Yanar Gizo kuma manyan mutane ne ke yin su.

B: – Ga alama a gare ni cewa yana da wuya a yi hukunci a Majalisar Yanar Gizo. An yi ta tattaunawa shekaru da yawa yanzu, amma akwai ƴan nasarori na gaske da za a iya ji.

AG: - Wataƙila. Za mu gani.

B: - Ba mu da matsaloli a kan baya ... Wataƙila ya kamata mu bar waɗannan matsalolin a gaba? Me yasa za ku je can?

AG: - Dole ne mu kiyaye ma'aikatan gaba-gaba.

Wasu tallace-tallace 🙂

Na gode da kasancewa tare da mu. Kuna son labaran mu? Kuna son ganin ƙarin abun ciki mai ban sha'awa? Goyon bayan mu ta hanyar ba da oda ko ba da shawara ga abokai, girgije VPS don masu haɓakawa daga $ 4.99, analog na musamman na sabar matakin shigarwa, wanda mu muka ƙirƙira muku: Duk gaskiyar game da VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps daga $19 ko yadda ake raba sabar? (akwai tare da RAID1 da RAID10, har zuwa 24 cores kuma har zuwa 40GB DDR4).

Dell R730xd 2x mai rahusa a cibiyar bayanan Equinix Tier IV a Amsterdam? Nan kawai 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV daga $199 a cikin Netherlands! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - daga $99! Karanta game da Yadda ake gina Infrastructure Corp. aji tare da amfani da sabar Dell R730xd E5-2650 v4 masu darajan Yuro 9000 akan dinari?

source: www.habr.com

Add a comment