This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-07-19
Channels
- # admin-announcements (2)
- # aws-lambda (3)
- # beginners (66)
- # boot (61)
- # cider (1)
- # cljs-dev (17)
- # clojure (100)
- # clojure-austin (4)
- # clojure-brasil (1)
- # clojure-canada (8)
- # clojure-quebec (6)
- # clojure-russia (48)
- # clojure-sg (6)
- # clojure-spec (37)
- # clojure-uk (61)
- # clojure-ukraine (2)
- # clojurescript (80)
- # core-async (13)
- # cursive (20)
- # datascript (37)
- # datomic (2)
- # defnpodcast (4)
- # emacs (5)
- # funcool (3)
- # hoplon (11)
- # jobs (7)
- # juxt (26)
- # lein-figwheel (48)
- # leiningen (3)
- # luminus (3)
- # om (34)
- # om-next (5)
- # onyx (5)
- # protorepl (6)
- # re-frame (10)
- # reagent (9)
- # rethinkdb (16)
- # ring-swagger (5)
- # spacemacs (14)
- # specter (54)
- # untangled (36)
- # vim (75)
- # yada (1)
Я тут нынче много очень пишу CLJC кода и соответсвенно тестов к ним. Не могу унифицировать никак тестирование асинхронного кода. Проблема заключается в том что при CLJ можно просто заюзать promise и потом в конце теста соответсвенно заблокировать его пока он не зарезолвиться. А при CLJS подходе надо все оборачивать в (async done …
где вызывать done когда все закончилось и оно зараза макрос ко всему прочему. Может кто видел какое решение (скорее всего еще одни макрос) для таких кейсов? Или может какие другие либы
кто юзает https://github.com/funcool/promesa ? Думаю дропнуть core.async, отговорите меня
@nicola: На мобайле, всякие хттп запросики, React Native native communcation тоже все асинхронное на коллбеках
1 В будущем думаю бек написать и пере-использовать большую часть логики уже на кложуре
2 Тестирую и разрабатываю в кложуре, ибо в репле могу сделать (-> (clj-http url) my-function)
ибо можно сделать блокирующий вызов. Если писать на cljs только то будет (-> (http-req url) my-function #(print %))
и прочее-прочее, блокирующий вызов не сделать 😞
@artemyarulin: кор асинк жеж и на клиенте можно
@misha: Можно-можно, у меня так на нем и сделано - все на нем. Но вот чота задумался дропнуть и взять промисы ибо у меня очень простые все кейсы
:language-in and :language-out
Configure the input and output languages for the closure library. May be :ecmascript3, ecmascript5, ecmascript5-strict, :ecmascript6-typed, :ecmascript6-strict, :ecmascript6 or :no-transpile.
никто не пробовал ES6 да еще и typed генерить для CLJS?неа, самого CLJS https://github.com/clojure/clojurescript/wiki/Compiler-Options#language-in-and-language-out
сегодня только обсуждали снова cljs + js. У нас есть палитра компонентов в большом ES6 + webpack приложении можно ли заатачить их cljs проекту чтобы собирать все вместе с помощью cljs. Ну чтоб не было двух бандлов и запущенного сборщика webpack и figwheel параллельно
хм, у гугла есть свой транспайлер для ES6 > ES5 https://github.com/google/traceur-compiler. Хотя может сам Google Closure может подхватить es6 js код. Но вроде можно рядом с CLJS положить пачку JS и все вместе запускать, в ридми фигвила вроде даже было что-то про такое. Или нет, не помню чтот
http://lukevanderhart.com/2011/09/30/using-javascript-and-clojurescript.html можно, но если хочется их в общий бандл собирать нужно будет дополнительно экстерны писать
если я правильно понял о чем вопрос
и если я правльно помню cljs сейчас не может давать на выходе ES6, только 5 или 3
@rmuslimov: а figwheel будет перезагружать внешние реакт компоненты как react-hot-reload?
ограничения closure компайлера
будет ли релодиться видимо зависит от того как хранить стейт, если это просто компоненты очень даже doable
@delaguardo: там была реализация через foreigh-libs http://mneise.github.io/posts/2015-08-04-week-9-and-10.html
> Но вроде можно рядом с CLJS положить пачку JS и все вместе запускать, в ридми фигвила вроде даже было что-то про такое. Или Ну получается сделать два файлы от JS и от CLJS. и два ватчера повесить, как то не айс мне кажется
надо будет посмотреть, спасибо
вообщем текущая идея взять rollup.js/browerify.js и вызывать генерацию через preprocess как выше указанной ссылке
@artemyarulin babel - лучший выбор по заверениям Андрея Листочкина, вроде бы в этом докладе было https://www.youtube.com/watch?v=NLPC3EHtiBU
@comerc: Дада, для ЖС то бабел безусловно самый няшный. Я просто думал что мож Traceur интегрируется с Closure как-нить (или он уже там внутри используется кста хз)
короч, если тебе нужно в просто браузере и для просто людей - то я б без него обошелся, к сожалению. Если у тебя админка, в которую не будут ходить с андроида или убогих компов, то тогда ноу проблемос.
не согласен. Ничто не тормозит так как делает это скала
почему тогда за скалу платят больше чем за кложу?)
я тут спрашивал сегодня как унифицировать асинхронные тесты с CLJC, поиск по гитхабу выдал хелпер для core.async. Не составит труда изменить для промисов и прочих коллбеков
(defn test-async "Asynchronous test awaiting ch to produce a value or close."
[ch]
#?(:clj (a/<!! ch)
:cljs (async done
(a/take! ch (fn [_] (done))))))
(deftest a-test
(test-async
(async/go …))