Kyiv Go Meetup May 2018:
Moderators: - Hi omnes! Gratias ago tibi, quia hic est! Hodie duos oratores officiales habemus - Lyosha et Vanya. Duo erunt, si satis temporis habemus. Primus orator est Alexey Grachev, ille narrabit nobis de GopherJS.
Alexey Grachev (infra β AG); β Ire elit sum, et officia interretiali scribo in Go. Aliquando tibi frontend agere, interdum manually ingredi. De experientia et investigatione mea loqui volo in fronte.
Legenda haec est: primum loquemur cur currere velimus Perge in fronte, tunc loquemur quomodo id fieri possit. Dupliciter - Conventus interreti et GopherJS. Videamus quid sit harum solutionum status et quid fieri possit.
Quid mali in frontend?
Omnesne consentiunt omnia cum frontend pulchrum esse?
Nonne satis probat? Tardus aedificabis? Ecosystem? Fine.
Quoad frontendum, placet illud unum e primordium tincidunt in suo libro dixisse:
Javascript systema typus non habet. Nunc nominabo problemata, quae in cursu operis mei inciderunt, et quomodo solvantur explicabimus.
Systema genus in genere vix dici potest systema typum in Javasript - sunt lineae quae rationem obiecti indicant, sed re vera hoc nihil ad typos habet. Solvitur haec quaestio in TypeScript (an addendi in Javasript) et influentia (typum tessellatum static in Javascript). Profecto frontis punctum iam pervenit ad problema solvendum systema speciei mali in Javascript.
Nulla norma bibliothecae in navigatro ut talis - sunt quaedam aedificata in obiectis et functiones "magicas" in navigatoribus. Sed in Javascript nulla est bibliotheca norma talis. Quaestio haec a jQuery semel iam solvebatur (quisque usus est jQuery cum omnibus prototypis, auxiliis, muneribus ad operandum necessariis). Nunc omnes utitur Lodash;
Infernum callback. Omnes opinor codicem Javascript viderunt abhinc circiter 5 annos, et quasi "noodle" incredibilis callbacks intricatae videntur. Hoc problema iam solutum est (emissione ES-15 vel ES-16), promissa Javascript addita sunt et omnes ad tempus facilius respirare possunt.
Donee Promice infernum advenit... Nescio quomodo industria anterioris finis administrat, sed semper se in tesca aliqua depellunt. Nos etiam de promissis infernum facere potuimus. Tunc hanc quaestionem solvimus addito novo primitivo - async/expectato:
Difficultas asynchrony solvitur. Async/expectandum est primitivae satis popularis in variis linguis. Python et alii hunc aditum habent - satis est bonum. Problema solverant.
Quae quaestio non solvitur? Exponentialiter crescens multiplicitas compagum, multiplicitas oecosystematis et programmatum ipsarum.
- Javascript syntaxing is a bit strange. Omnes novimus problemata cum additamento ordinata et obiecto et aliis iocis.
- Javascript is multi-paradigma. Haec ratio nunc maxime urget cum ecosystematis permagna est;
- omnes diversimode scribit, quidam structuram scribunt, quidam officiatorie scribunt, diversae tincidunt diversimode scribunt;
- ex diversis fasciculis, diversa paradigmata, cum diversis fasciculis uteris;
- multus of "fun" cum programmatione functionis in Javasript - bibliotheca rambda apparuit et nunc nemo programmata in hac bibliotheca legere potest.
- Ex his omnibus magnum momentum in oecosystematis facit, et incredibiliter crevit. Fasciculi inter se repugnant: quaedam promissionibus nituntur, quaedam in async/exspecta, quaedam callbacks nituntur. Scribunt etiam in diversis paradigmatibus!
- Hoc consilium difficile conservare facit. Cimex invenire difficile est si codicem legere non potes.
Quid est Conventus Web?
Fortissimi viri guys ex Fundatione Mozilla et plures aliae societates cum tali re congressi sunt ut interreti Conventus. Quid est hoc?
- Haec machina virtualis in navigatro aedificata est quae forma binaria sustinet.
- Progressiones binarii illuc perveniunt et paene innatam efficiuntur, id est, navigatrum omni tempore "noodles codicem suggillationis omnibus partibus egere non oportet.
- Omnes navigatores subsidium declaraverunt.
- Cum hoc bytecodea sit, pro quavis lingua compilator scribere potes.
- Quattuor navigatores maiores iam navem cum auxilio interretiali Conventus fecerunt.
- Patria subsidium exspectamus in Ite mox. Haec nova architectura iam adiecta est: GOARCH=wasm GOOS=js (mox). Quantum, ut intelligo, non est muneris, sed est enuntiatio definite in Go.
Quid nunc agis? GopherJS
Dum subsidium interretialem non habemus, transpilator est sicut GopherJS.
- Ite signum in Javascript "purum" translatum est.
- Currit in omnibus navigatoribus - nullae sunt novae notae quae solum a modernis navigatoribus sustentantur (hoc est Vanilla JS, quod in aliquid currit).
- Adsunt fere omnia quae Go habet, inter goroutines et canales ... omnia quae tam amamus ac novimus.
- Fere tota bibliotheca vexillum sustinetur, exceptis illis fasciculis quae nullum sensum ad sustentationem in navigatro facit: syscall, rete interationes (est retia/http client, sed non server, et client per XMLHttpRequest aemulatur). In genere, tota bibliotheca vexillum praesto est - hic in navigatro est, hic est Go's stdlib, quem amamus.
- Tota sarcina ecosystem in Go, omnes solutiones tertiae factionis (temptandi, etc.) componi possunt utens GopherJS et in navigatro currere.
GopherJS facillime est - suus iustus regularis sarcina Go. Vadimus, et habemus GopherJS mandatum aedificandi applicationis;
Hic est tam parvus mundus salve...
...Propositum regularis Go, bibliotheca regularis regulae fmt sarcina et Binding Js ut ad pasco API perveniat. Println tandem convertetur ad stipes consolandas et navigatrum scribet "Salve gophers"! Simplex est: nos aedificamus GopherJS β eam in navigatro deducimus β omnia opera!
Quid habes in tempore? Vincula
Sunt ligamenta omnium popularium compagum;
- JQuery;
- Angular.js;
- D3.js ad insidiandum et operandum cum magna notitia;
- React.js;
- VueJS;
- etiam subsidium est electronico (id est, escritorio applicationes in Electron scribere iam possumus);
- et res iocosa est WebGL (plene applicationes graphicae reddere possumus, ludos cum 3D graphicis, musicis et omnibus comibus facere);
- ac multae aliae ligaturae ad omnes tabulas populares tabulas et bibliothecas pertinentes.
Framework
- Artus interretialis iam nominatim explicatus est GopherJS - Vecty. Haec est similitudo plenae curvatae React.js, sed solum in Go, cum specialibus GopherJS.
- Sacculi ludi sunt (mirum!). Duos populares inveni;
- Engo;
- Ebiten.
Duo exempla monstrabo quid similis sit et quid in Go iam scribere possis:
Vel hanc optionem (3D jaculatorem invenire non potui, sed forte est);
Quid offero?
Nunc industria ante-finis in eo statu est ut omnes linguae quae antea ex Javascript clamaverunt, illuc irruant. Nunc omnia compilata sunt in "Conventus Telae". Quid opus est nobis opportunum locum ibi accipere Gopherum?
Ite tradito sumpsit eam linguam programmandi systematicam esse, et nullae fere bibliothecae cum UI operandi sunt. Est aliquid, sed dimidium relictum est, dimidium non functionis.
Et nunc est bona facultas faciendi bibliothecas UI in Go qui percurret GopherJS! Scribere tandem potes compagem tuam! Hoc est tempus quo compaginem scribere potes, et prima adoptio erit prima, et stella eris (si bona compago est).
Multum diversis fasciculis adaptare potes qui iam in Go ecosystem ad specialia navigatoris (exempli gratia: Template engine). Iam operabuntur, ligaturas commodas facere potes ut facile contentus directe in navigatro reddere possis. Plus potes facere, exempli gratia, officium quod idem praestare potest in servo et in fronte-finem, eodem codice utens - omnia quae ante-finem tincidunt similia (tantum nunc in Go).
Ludum scribere potes! Iustus pro fun...
Haec omnia volui dicere.
quaestiones
Quaeritur (infra post Q); β Go vel Js scribo?
AG: - Conscribitis consuetudines, vias, structuras, implicans - omnia in Go... Subscribis eventum, functionem ibi transi.
IN: β Sic scribo in nudo Js?
AG: β Imo, scribis quasi in Go et coniunge navigatro API (API non mutatum). Tuas ligaturas scribere potes ut epistulae ad canalem mittantur - difficile non est.
IN: - Quid de mobili?
AG: β Certo vidi: ligaturae sunt ad panni Cordubenses quod Js currit. In React Nativum - Nescio; fortasse est, fortasse non erat (non eram magnopere quaero). N-go ludus machinalis utrumque applicationes mobiles - iOS et Android sustinet.
IN: - Quaestio de Conventu interreti. Magis magisque spatium comprehenditur, non obstante compressione et "zipping"... Nonne hoc modo magis etiam ante-finem mundum occidemus?
AG: β Conventus interretialis forma binaria est, et binarius per defaltam non potest esse in ultima remissione plus quam textus... Ad runtime traheris, sed hoc idem est ac trahere vexillum bibliothecae Javascripte cum ibi non est, ita nos. uti aliquo Lodash. Nescio quantum Lodash capit.
IN: - Patet minus quam runtime...
AG: - In "puro" Javascript?
IN: - Ita. Comprimamus ante mittentes...
AG: β Sed hic textus est... Fere megabyte multum similis videtur, sed omnia (habetis totum runtime). Deinde logica negotia tua scribis, quae binarium tuum per 1% augebit. Hactenus non video hanc frontem occidere. Praeterea Conventus interretialis celerius quam Javascript operabitur ob manifestam causam - non opus est ut parsed.
IN: - Hoc punctum controversiae adhuc est... Nondum est aliqua exsecutio relationis "Vasma" (Conventus interreti) ut sine ambiguitate iudicare possit. Ratione, sic: omnes intellegimus binarium celerius esse, sed exsecutio eiusdem V8 efficax est.
AG: - Ita.
IN: β Compilatio ibi operatur vere frigidissima et non est magnum commodum futurum.
AG: β Conventus interretialis etiam magnis guys fiunt.
IN: β Mihi adhuc difficile videtur iudicare Conventus Web. Colloquia multos annos iam fuerunt, sed paucae res gestae verae sunt quae sentiri possunt.
AG: β Fortasse. Videbimus.
IN: β Problemata in tergo non habemus... Fortasse has difficultates in fronte relinquere debemus? Quid illuc?
AG: - Baculum opificum anterioris lineae servare debemus.
Quidam ads
Gratias tibi ago pro manendo nobiscum. Placetne tibi vasa nostra? Vis videre plus interesting contentus? Suscipe nos ponendo ordinem vel commendando amicos;
Dell R730xd 2x vilius in Equinix Tier IV centri Amstelodami? Tantum hic
Source: www.habr.com