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
200
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
34
React Kyiv – Dec 19, 2017
roman01la
1
220
React & ClojureScript in production at Attendify
roman01la
0
170
Web Apps performance & JavaScript compilers
roman01la
3
120
Introduction to React.js
roman01la
0
73
React Native: Native Mobile Development in JavaScript @ LvivJS 2016
roman01la
0
120
React Native: Are we there yet? (Pokémon edition) @ VinnytsiaJS '16
roman01la
0
320
React Native: Native mobile development with JavaScript
roman01la
0
170
ClojureScript: what are you?
roman01la
2
120
Other Decks in Programming
See All in Programming
Java 22 Overview
kishida
1
180
try! Swift Tokyo 2024 参加報告 / try! Swift Tokyo 2024 Report
hironytic
0
200
AWS CDKコントリビュートTIPS / aws-cdk-contribution-tips
gotok365
2
120
Site Reliability Engineering for GMO
pyama86
8
1k
TYPO3 v13 – The road to LTS: What's new and new APIs
luisasofie_xoxo
0
200
2 週間で Twitter Bot を作ってみた
contour_gara
0
340
What We Can Learn From OSS
inouehi
0
420
Code Reviews
bkuhlmann
4
890
From Spring Boot 2 to Spring Boot 3 with Java 22 and Jakarta EE
ivargrimstad
0
1.2k
Git Rebase
bkuhlmann
11
1.6k
if constexpr文はテンプレート世界のラムダ式である
faithandbrave
3
640
R言語の環境構築と基礎 Tokyo.R 112
bob3bob3
0
260
Featured
See All Featured
A Modern Web Designer's Workflow
chriscoyier
689
190k
The Illustrated Children's Guide to Kubernetes
chrisshort
31
46k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
14
1.5k
Producing Creativity
orderedlist
PRO
337
39k
Large-scale JavaScript Application Architecture
addyosmani
504
110k
For a Future-Friendly Web
brad_frost
172
9k
How to train your dragon (web standard)
notwaldorf
73
5.2k
Code Reviewing Like a Champion
maltzj
514
39k
Ruby is Unlike a Banana
tanoku
96
10k
Web Components: a chance to create the future
zenorocha
305
41k
How STYLIGHT went responsive
nonsquared
92
4.8k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
14
1.6k
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