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
Roman Liutikov
May 22, 2016
Programming
1
210
ClojureScript, что ты такое?
KharkivJS #6 21.05.2015
Roman Liutikov
May 22, 2016
Tweet
Share
More Decks by Roman Liutikov
See All by Roman Liutikov
ClojureScript × Type Inference
roman01la
0
43
React Kyiv – Dec 19, 2017
roman01la
1
220
React & ClojureScript in production at Attendify
roman01la
0
190
Web Apps performance & JavaScript compilers
roman01la
3
120
Introduction to React.js
roman01la
0
78
React Native: Native Mobile Development in JavaScript @ LvivJS 2016
roman01la
0
140
React Native: Are we there yet? (Pokémon edition) @ VinnytsiaJS '16
roman01la
0
380
React Native: Native mobile development with JavaScript
roman01la
0
180
ClojureScript: what are you?
roman01la
2
130
Other Decks in Programming
See All in Programming
250830 IaCの選定~AWS SAMのLambdaをECSに乗り換えたときの備忘録~
east_takumi
0
390
アプリの "かわいい" を支えるアニメーションツールRiveについて
uetyo
0
220
テストコードはもう書かない:JetBrains AI Assistantに委ねる非同期処理のテスト自動設計・生成
makun
0
250
アセットのコンパイルについて
ojun9
0
120
Navigation 2 を 3 に移行する(予定)ためにやったこと
yokomii
0
130
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
120
HTMLの品質ってなんだっけ? “HTMLクライテリア”の設計と実践
unachang113
4
2.7k
testingを眺める
matumoto
1
140
Android端末で実現するオンデバイスLLM 2025
masayukisuda
1
120
「待たせ上手」なスケルトンスクリーン、 そのUXの裏側
teamlab
PRO
0
480
🔨 小さなビルドシステムを作る
momeemt
3
670
Improving my own Ruby thereafter
sisshiki1969
1
160
Featured
See All Featured
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
12
1.1k
Side Projects
sachag
455
43k
Automating Front-end Workflow
addyosmani
1370
200k
Faster Mobile Websites
deanohume
309
31k
A Modern Web Designer's Workflow
chriscoyier
696
190k
How to Think Like a Performance Engineer
csswizardry
26
1.9k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
RailsConf 2023
tenderlove
30
1.2k
Designing for Performance
lara
610
69k
Site-Speed That Sticks
csswizardry
10
810
A Tale of Four Properties
chriscoyier
160
23k
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