🐙 Павел
При программировании нужна компиляча.
🐙 Павел
Холодный проц и не дрожащие руки. %)
Vit@Lik
транспиляча
Vit@Lik
)))
Alexey
Коллеги, те кто уже перешли на Angular 2.0, поделитесь опытом как вы используете возможности Rx в который по дефолту обернут Http
Alexey
Какой дополнительный профит он может дать в организации потоков данных?
Alexey
Ну т.е мне понятно как его использовать вместо промисов map/flatMap/subscrube , но это то же самое что и сами промисы почти
Alexey
Т.е в каждом компоненте дергая сервис UserService.fetchUsers() мы создаем каждый раз новый Observable тут же на него подписываемся и потом он умирает
Alexey
если в другом месте нам понадобятся эти данные мы делаем то же самое
Alexey
но что-то мне подсказывает что Rx использовать надо по-другому
Alexey
подписываясь в нескольких местах на один Observable
Alexey
получая что-то типа one direction data flow как в Flux/Redux
Alexey
Не могу найти пока ни одной внятной статьи или примера кода как организовать data flow с Rx в Anular 2.0 приложениях или любых других
Alexey
если есть кто-то с большим опытом использования Rx, поделитесь опытом плз
Yan👀
@bro_science А у тебя есть какие-то статейки где вообще хотя бы простенькие примеры этого иллюстрируются охота поглядеть?)
Alexey
Примеры чего? Как работает Rx вообще? Или моего предположения про one direction data flow?
Yan👀
Rx && Angular 2.0)
Yan👀
о вроде нашел сам)
Alexey
https://angular.io/docs/ts/latest/guide/server-communication.html#!#http-client
Alexey
вот простой пример, который не отвечает на мой вопрос
Yan👀
ааа это) все понял)
Vit@Lik
про Rx тоже интересно:)
Vit@Lik
вообще да, можно предположить, что, что-то на подобии один observable в условном store на один action и какой-то store service @injectable() который все это соединяет
Vit@Lik
а ктото решает вопросы с парвами доступа внутри компонентов? есть какое-то красивое решение через декораторы? например ограничить доступ модулей напрямую к другим модулям
Vit@Lik
нашел, если кому интересно, декортаор доступа: https://gist.github.com/btroncone/cebec10b89540f5501dd
🐙 Павел
Смотришь, вроде папа с сыночком, а присмотрелся, да это ж декоратор доступа! 😁
Vit@Lik
😃
Sērhīī
как и весь блог, там хватает примеров по организации Rx+Ng2
Sērhīī
Ng2 сам есть реактивное приложение и Rx там как раз хорошо ложится
Vit@Lik
кто-то знает как называется color theme для js, как на github? интересно вместо monokai попробовать
Alexey
читай вот http://victorsavkin.com/post/133936129316/angular-immutability-and-encapsulation
Ну конкретна эта статья не про то совсем, поищу в других статьях у него в блоге раз вы говорите что есть примеры
Alexey
Ng2 сам есть реактивное приложение и Rx там как раз хорошо ложится
Ng2 что имеется в виду? сам фреймворк? или сайт angular.io ?
Sērhīī
фрейм конечно
Sērhīī
Ну и вообще отличный блог. Чувак, если что, сделал последний router для ng2
DB
третий который ?
Sērhīī
да
Sērhīī
У него там 2 статьи по нему в блоге есть
Alexey
если использовать Redux и Immutable то зачем вообще тогда Observable-паттерн применять? Мне на данном этапе кажется что надо выбирать что-то одно
Sērhīī
Самое хорошее в Observable - это фильтрация данных на лету, а также можно использовать всякие Subject, с ними все становится намного проще
Alexey
я не говорю что нельзя этого делать, я не вижу смысла просто в этом, если в Ng2 приложении использовать Redux и все данные компонентам пробрасывать через @Input то вопрос data flow уже отпадает и не важно какую обвязку мы используем для http будь то Observable или Promise (я сейчас не касаюсь специально дополнительных фич Rx типа filter, retry, debounce, cache и т.д)
Sērhīī
А смысл в Promise?
Sērhīī
У нас сам фрейм по есть реактивный, а получается, что Promise - просто пятая нога
Sērhīī
Просто многим оно привычнее, но не более того.
Alexey
что значит фрейм реактивный, объясните плз
Sērhīī
Вот как работает @input - это и есть реактивность
Sērhīī
Особенно в режиме push для компонента
Sērhīī
Почитай блог, там напрямую этот вопрос разбирается
Alexey
да не важно же как внутри работает @input, важно его внешнее API, а оно мало общего имеет с Rx, вы исользуете триггер ngOnChanges и опцию changeDetection , это никак нас не обязывает управлять самими данными отправляемыми в @input через Rx
Alexey
т.е я правильно понял что использовать Rx в самой логике приложения стоит хотя бы потому что разработчики ng2 его используют в самом фреймворке?
Vit@Lik
я так понял, что про реактивность тут имелось ввиду, что изменения на верхнем уровне сразу же отражаются на нижних, или я что то не так понял
Alexey
так и в ng1 вообще то было, если данные через атрибуты директив пробрасывать
Alexey
так и в React все работает, но и там и там для этого Rx не требуется
Sērhīī
Конечно не обязывает. Просто идеология ng2 - это реактивный фреймворк, поэтому логичнее и приложение разрабатывать в том ключе.
Vit@Lik
а втом, как управлять не обязательно юзать observable как мне кажеться - дело вкуса наверно
Sērhīī
так и в ng1 вообще то было, если данные через атрибуты директив пробрасывать
Ну так вот в отсутствии $watch нужно думать как строить цепочку - для этого в первую очередь и нужен Rx
Vit@Lik
я тоже за то, чтобы единому стилю придерживаться
Sērhīī
а втом, как управлять не обязательно юзать observable как мне кажеться - дело вкуса наверно
Rx просто будет быстрее, чем все остальное, что встроено в ng2 - оно просто для всего
Vit@Lik
ааа, вон что
Vit@Lik
бенчмарк бы
Sērhīī
Кто ж тебе даст. Каждое приложение уникально )
Sērhīī
Просто если брать Rx в зависимости и не использовать на полную - это странно
Vit@Lik
согласен
Sērhīī
Тем более, это очень удобно во многих случаях
Alexey
логично, поэтому я и пытаюсь понять как из него выжать максимум
Vit@Lik
надо бы побольше про эти экстеншены прочитать
Alexey
перефразирую изначальный вопрос, кто-нибудь использует Rx как альтернативу Redux/Flux? Чтобы данные из одного места броадкастить разным компонентам?
Sērhīī
Я сейчас вот во всю использую ReplaySubject для общих данных напрмер, когда они могут сами обновляться - остается только подписаться на изменения
Alexey
т.е использует ли кто-нибудь какие-то глобальные Observable?
Vit@Lik
а вот и ответ)))
Sērhīī
т.е использует ли кто-нибудь какие-то глобальные Observable?
Да, это удобнее, поскольку на эти данные легко вешать обработчики или налагать другие условия
Sērhīī
Планирую запилить некое подобие Redux в будущем, чтобы сторы обновлялись сами. И тогда зависимость от ng2 будет минимальной.
Alexey
а есть код на гитхабе у вас чтобы посмотреть?
Sērhīī
У меня нет. Это к сожалению закрытый проект. Но вот же в блоге пример реализации http://victorsavkin.com/post/137821436516/managing-state-in-angular-2-applications
Sērhīī
Там только в самом конце добавлены view ng2 - остальное Rx
Sērhīī
Ясно, что это не всем подойдет в их приложении, но получается, что теперь нет дурацких ограничений из ng1 и руки полностью развязаны - делай что хочешь
Sērhīī
Кроме Динамических компонент/шаблонов - вот за это "лучи ненависти"