

Стас
23.11.2016
10:18:37
Такой подход проповедуется в Реакт/Редакс. Работаю с ним уже пол года после 2-х лет на первом Ангуляре. Затрата ресурсов мозга выше раза в 2 с таким подходом ). А если увлечься глубокими пробрасываниями параметров, то будет совсем плохо, по этому здесь важно соблюдать баланс, а лучше просто установить правило - Не прокидывать параметры дальше первого уровня. Это если Реакт)), а если Ангуляр, то, как Алексей сказал, просто инжектишь сервис с нужными данными в компонент, чтоб не получать их сверху.
На предыдущем большом проекте юзал подход с самодостаточными Фабриками(Сервисами). У них был свои инкапсулированные поля с данными (типа {title: '', collection: []}) в которые вызванные из этой же фабрики рэст-апи-методы (типа getTitle, getCollection) записывали данные. Такой подход удобен, если эти данные нужно было юзать в совершенно разных местах в приложении без повторных запросов, пользуясь их синглотонностью. Прокидывать не было необходимости, собстно это вполне обычно для Ангуляр


Ilya
23.11.2016
10:26:40
Не согласен. За вью уже отвечает браузер.
Я разрабатывал wpf и silverlight и это боль везде: финит стейт машина (рано или поздно). Нет, компоненты гораздо более гибкие чем стандартный mvvm

魯
23.11.2016
10:48:36
А как можно заменить?

Google

Stas
23.11.2016
10:49:31

魯
23.11.2016
10:51:30
Спасибо, посмотрю

Alexander
23.11.2016
11:18:50
кстати, раз речь зашла о RX. зацените код, нормально ли написано или можно эффективней? смысл: батчинг реквестов к API
setTimeout(() => { this._batchQueue.next(request); }, 0);
return this._ongoingBatches
.filter((batchResponse: BatchResponseItem<T>) => batchResponse.id === requestId)
.map((batchResponse: BatchResponseItem<T>) => batchResponse.response)
.first();
this._ongoingBatches = this._batchQueue
.asObservable()
.bufferTime(50)
.filter((x: RequestInfo[]) => x.length > 0)
.flatMap(requests => this.processRequests(requests))
.share();
первое сообщение - это метод request, второе сообщение (где идет инициализация ongoingBatches - код из конструктора сервиса)

Mikhail
23.11.2016
12:37:51

Maksim
23.11.2016
12:49:54
Алексей и сделал :D

Алексей
23.11.2016
13:35:27

Каїн
23.11.2016
13:55:53
Столько новых слов

Mikhail
23.11.2016
14:01:36
прокликал доклад и увидел, что DCI ты только на слайде упомянул
где там конкретно на примерах из JS что-то? или бла-бла-юзайте-DCI-это-круто-даже-в-JS?

Алексей
23.11.2016
14:09:57

Google

Алексей
23.11.2016
14:15:11
Про полноценный DCI чуть попозже сделаю видео.

Dmitry
23.11.2016
14:35:59
привет, а кто может подсказать с основами?

Алексей
23.11.2016
14:36:29

Dmitry
23.11.2016
14:36:49
+

Nikita
23.11.2016
14:38:33
Quick start guide может подсказать

Алексей
23.11.2016
14:39:14
https://angular.io ( начать с quickstart )
https://egghead.io/courses/angular-2-fundamentals
Для начала более чем достаточно

Dmitry
23.11.2016
14:41:59
ty!

Алексей
23.11.2016
15:53:25
Вынеси список в отдельный Service и делай inject в везде где нужно.
Просто серивис со списком маркеров - его отдаешь в в нужные компоненты. Можно какой-то пример? Возможно просто не понимаю правильно вопрос
да

Andrey
23.11.2016
19:05:24
Подскажите плиз как можно выполнить определенную функцию несколько раз с разными промежутками времени между запусками. Типа сначала короткие просежутки потом больше большн
В rxjs есть что то для такой задачки?

Алексей
23.11.2016
19:06:38

Andrey
23.11.2016
19:23:02
Алексей спасибо большое сэкономили мне море времени

Alexey
23.11.2016
21:27:45
кто подскажет, как можно глобально детектить смену роута?
сделал через events this._router.events.subscribe

Алексей
23.11.2016
22:16:55
Ты про ngrx/store или про сервисы? извини пока не очень понял вопроса

Alexey
23.11.2016
22:27:13

Google

Ostap
23.11.2016
22:30:07


Алексей
23.11.2016
22:36:22
ngrx/store это просто Redux который переписан с помощью Observable
Главное что в базе - Redux.
Почему Redux - об этом есть документация ( на русском )
https://github.com/rajdee/redux-in-russian
(почитайте все подпункты из пункта 1)
Главное это предсказуемость при росте. Unidirectional Data Flow (Однонаправленные изменения) - помогает нам не удивляться "откуда здесь это число" - вы всегда можете проследить откуда что взялось и почему.
Ну и много интересных иструментов - таких как почти бесплатный undo/redo, отладчик с путешествием во времени, почти бесплатный HMR, автогенерация тестов и много еще других приятных плюшек
Вообще есть 2 обертки для Redux для Angular 2
1) https://github.com/angular-redux/ng2-redux (легкая обертка для Redux - что позволяте много чего переиспользовать экосистему Redux и ее мидлвары)
2) https://github.com/ngrx/store
Это переписанный Redux. Переписанный на дизайн паттерне Observable из RxJs что делает Redux его более приятным и совместимым с Angular 2. Но мы теряем экосисмему (она фоктически переписывается заново)


Dmitry
24.11.2016
08:16:34
@Ai_boy где я могу ознакомиться с вашими докладами?

Alexey
24.11.2016
09:16:56
в чайлд модуле если добавить компонент в declarations: [] то он будет доступен только внутри этого чайлд модуля, если добавить компонент в exports: [] то он будет доступен парент модулям которые импортируют данный модуль
оО, куда делся вопрос на который я отвечал?

Nikita
24.11.2016
09:19:28
я удалил, думал никто не ответил. решил перефразировать, а потом твое сообщение пришло.
с чайлдами я понял. а вот с парентом не могу разобраться. вот у меня AppModule в который заимпортирован AdminModule. у App есть компонент Auth, но когда я пытаюсь использовать его в модуле Admin все валится

Stas
24.11.2016
09:28:40
выдели auth в отдельный модуль
и импортируй модуль

Alexey
24.11.2016
09:30:13
сверху вниз компоненты не шарятся по дереву модулей
сделай SharedModule подключи туда все что нужно в exports: []
и импортируй в AdminModule
и в AppModule если нужно

Nikita
24.11.2016
09:31:28
хмм, спасибо

Mikhail
24.11.2016
09:49:13
Можно как-то хранить данные при перехоже с предыдущего линка?
Эта группа больше не существует