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
ClojureScript, что ты такое?
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Roman Liutikov
May 22, 2016
Programming
220
1
Share
ClojureScript, что ты такое?
KharkivJS #6 21.05.2015
Roman Liutikov
May 22, 2016
More Decks by Roman Liutikov
See All by Roman Liutikov
ClojureScript × Type Inference
roman01la
0
47
React Kyiv – Dec 19, 2017
roman01la
1
230
React & ClojureScript in production at Attendify
roman01la
0
200
Web Apps performance & JavaScript compilers
roman01la
3
140
Introduction to React.js
roman01la
0
92
React Native: Native Mobile Development in JavaScript @ LvivJS 2016
roman01la
0
160
React Native: Are we there yet? (Pokémon edition) @ VinnytsiaJS '16
roman01la
0
410
React Native: Native mobile development with JavaScript
roman01la
0
200
ClojureScript: what are you?
roman01la
2
140
Other Decks in Programming
See All in Programming
AI 時代のソフトウェア設計の学び方
masuda220
PRO
29
11k
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.1k
inferと仲良くなる10分間
ryokatsuse
1
350
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
460
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
150
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
430
3Dシーンの圧縮
fadis
1
580
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
320
Old Dog, New Tricks: The Java 25 Reinvention - JNation
bazlur_rahman
0
140
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
330
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
1.9k
Featured
See All Featured
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.8k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.5k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.8k
YesSQL, Process and Tooling at Scale
rocio
174
15k
SEOcharity - Dark patterns in SEO and UX: How to avoid them and build a more ethical web
sarafernandez
0
190
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.5k
We Have a Design System, Now What?
morganepeng
55
8.2k
Facilitating Awesome Meetings
lara
57
6.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.9k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
ClojureScript что ты такое? Роман Лютиков
Зачем мне другой язык для веба?
Возможные причины • Я делаю сложные интерфейсы • Я хочу
быть более эффективным • Я устал от JavaScript
Зачем нам языки компилируемые в JavaScript? • Я все еще
хочу разрабатывать в вебе • Но сложность систем растет с каждым днем • Мне нужны соответствующие инструменты • Меньше сложности и неочевидности
Что же выбрать?
Идеальный язык должен быть… • Простым • Выразительным • Минимум
синтаксических конструкций • …
None
None
None
(CAR (CDR (CAR '((A B C) D E F))))
Сервер Клиент
(defn double [x] (* x 2)) (double 4)
function double(x) { return x * 2; } (defn double
[x] (* x 2))
Влияние на JavaScript • Неизменяемые структуры данных • Интерактивная разработка
• Единое глобальное состояние • Трансдьюсеры • Деструктурирование • Остаточные параметры
ClojureScript • Функциональное программирование • Неизменяемые структуры данных • Отличная
стандартная библиотека • Интерактивная разработка • Надежная экосистема • Мощный оптимизирующий компилятор
Где это можно использовать? • Сервер: JVM, Node.js • Клиент:
ClojureScript + React.js • Mobile: ClojureScript + React Native
Совместимость с JavaScript • Доступ к window в пространстве имен
js • Модули: AMD, CommonJS, ES2015 • Набор функций для работы с примитивами JS
Инструменты Код • Atom, LightTable, Vim, Emacs, … • Parinfer
Инструменты Сборка
Инструменты Сборка • Leiningen (зависимости и сборка) • Figwheel (перезагрузка
кода) • Devcards (разработка UI в изоляции)
None
Инструменты Отладка • Source maps • Dirac (Chrome DevTools для
CLJS)
None
Инструменты Тестирование • cljs.test • doo
SPA • Reagent + re-frame • Om • Rum
Библиотеки • clojars.org • cljsjs.github.io • clojurewerkz.org • www.clojure-toolbox.com
С чего начать? • jsbin.com • cljsfiddle.com • clojurescript.net •
planck-repl.org
Что почитать? • clojurescript.ru • kanaka.github.io/clojurescript/web/synonym.html • clojuredocs.org • github.com/clojure/clojurescript/wiki
• gitter.im/dev-ua/clojure • clojurians.net
Недостатки ClojureScript • Синтаксис Лиспа (высокий порог входа) • Непопулярность
• Меньше вакансий, чем на JavaScript
Ну и зачем мне язык, с которым сложно найти работу?
Чтобы расти как разработчик • Чтобы улучшать свои инструменты •
Чтобы перенимать практики • Чтобы не замыкаться в рамках одного языка/ парадигмы • Чтобы быть лучшим разработчиком
(вопросы?) Спасибо! @roman01la