Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Javascript в Go – Aleksei Shaikhaleev
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
GopherCon Russia
April 13, 2019
Programming
99
0
Share
Javascript в Go – Aleksei Shaikhaleev
GopherCon Russia
April 13, 2019
More Decks by GopherCon Russia
See All by GopherCon Russia
Go Profiling from Bottom Up - Felix Geisendörfer
gopherconrussia
0
240
Learning Unsung Gotchas of Go - Rashmi Nagpal
gopherconrussia
1
290
Прозрачный gRPC-proxy один-ко-многим - Андрей Смирнов
gopherconrussia
0
160
Из Python в Go и обратно - Андрей Минкин
gopherconrussia
0
170
Оптимизация работы с PostgreSQL в Go: от 50 до 5000 RPS - Иван Осадчий
gopherconrussia
0
200
Пакет embed: распаковка знаний - Илья Данилкин
gopherconrussia
0
260
За пару мгновений до main() - Олег Ковалев
gopherconrussia
0
150
Тестирование в Go c Ginkgo и Gomega - Александр Егурнов
gopherconrussia
0
140
Building an Autoscaling HTTP Proxy for Kubernetes - Aaron Schlesinger
gopherconrussia
0
140
Other Decks in Programming
See All in Programming
事業会社でのセキュリティ長期インターンについて
masachikaura
0
230
条件判定に名前、つけてますか? #phperkaigi #c
77web
2
950
Kubernetesでセルフホストが簡単なNewSQLを求めて / Seeking a NewSQL Database That's Simple to Self-Host on Kubernetes
nnaka2992
0
200
Coding as Prompting Since 2025
ragingwind
0
680
AWS re:Invent 2025の少し振り返り + DevOps AgentとBacklogを連携させてみた
satoshi256kbyte
2
140
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
230
安いハードウェアでVulkan
fadis
1
890
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
310
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
120
「速くなった気がする」をデータで疑う
senleaf24
0
140
ネイティブアプリとWebフロントエンドのAPI通信ラッパーにおける共通化の勘所
suguruooki
0
240
感情を設計する
ichimichi
5
760
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
5.9k
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
4 Signs Your Business is Dying
shpigford
187
22k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
2.7k
Embracing the Ebb and Flow
colly
88
5k
How GitHub (no longer) Works
holman
316
150k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
GraphQLとの向き合い方2022年版
quramy
50
14k
Faster Mobile Websites
deanohume
310
31k
The untapped power of vector embeddings
frankvandijk
2
1.7k
Making Projects Easy
brettharned
120
6.6k
How to Talk to Developers About Accessibility
jct
2
170
Transcript
Javascript в Go Aleksei Shaikhaleev, backend dev @Travelpayouts.com
Контентные проекты Сайты о путешествиях
Мы делаем классные встраиваемые виджеты
Нам нужен умный прокси! Источник данных Прокси Источник данных Источник
данных Виджет — специализированные языки выражений например, Common Expression Language https://github.com/google/cel-go
— специализированные языки выражений например, Common Expression Language https://github.com/google/cel-go
— скриптовые языки программирования Python, PHP, Ruby, Lua, Javascript Что делать?
Что делать? — специализированные языки выражений например, Common Expression Language
https://github.com/google/cel-go — скриптовые языки программирования Python, PHP, Ruby, Lua, Javascript
Что делать? — специализированные языки выражений например, Common Expression Language
https://github.com/google/cel-go — скриптовые языки программирования Python, PHP, Ruby, Lua, Javascript — Go биндинги к существующим движкам: Google V8, duktape
Окей, а что с Javascript в Go? — Go биндинги
к существующим движкам: Google V8, duktape — Интерпретаторы написанные на Go https://github.com/robertkrimen/otto https://github.com/dop251/goja
Окей, а что с Javascript в Go? — Go биндинги
к существующим движкам: Google V8, duktape — Интерпретаторы написанные на Go https://github.com/robertkrimen/otto https://github.com/dop251/goja
Otto:
Конфиг:
JS parser:
JS parser:
Грабли и костыли: — Интеграционные тесты, используем golden files —
Нельзя вместить в мастер и задеплоить на продакшен, пока тесты не станут зелеными
Тесты: — Интеграционные тесты
Тесты: — Интеграционные тесты — Нельзя вместить в мастер и
задеплоить на продакшен, пока тесты не станут зелеными
Как сделать удобно?
Наивный бенчмарк: — сделать лучше версионирование парсеров, автоматически откатывать, если
что пошло не так
Что хочется улучшить? — сделать лучше версионирование парсеров, автоматически откатывать,
если что пошло не так — перейти на более быстрый интерпретатор JS
Что хочется улучшить? — сделать лучше версионирование парсеров, автоматически откатывать,
если что пошло не так — перейти на более быстрый интерпретатор JS — сделать автоматическую проверку JS литерами
Что хочется улучшить? — сделать лучше версионирование парсеров, автоматически откатывать,
если что пошло не так — перейти на более быстрый интерпретатор JS — сделать автоматическую проверку JS линтерами
Стоила игра свеч? — Javascript в Го можно интерпретировать в
продакшене — Даже внутренние утилиты должны быть удобными
Что ещё? @nimdraugsael я на Гитхабе и в Твиттере Встраиваемые
интерпретаторы для Go: https://github.com/avelino/awesome-go#embeddable-scripting-languages Интерпретаторы JS: https://github.com/robertkrimen/otto https://github.com/dop251/goja