@angular2Эта группа больше не существует

Страница 87 из 179
Стас
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
А как можно заменить?
https://youtu.be/wi3wPzReKZQ?t=19m42s

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 - код из конструктора сервиса)

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

Алексей
23.11.2016
13:35:27
omg, все чаще слышу DCI от фронтендеров кто где вброс сделал, что вдруг про него вспомнили?
Я делал вброс в докладе про SOLID (для Single Responsibility) https://www.youtube.com/watch?v=wi3wPzReKZQ Плюс есть очень шорошая статья https://habrahabr.ru/post/151169/ (статья на хабре - для Ruby но можно легко адаптировать в JS) Плюс надо будет наверно отдельный доклда о DCI в Angular 2 и React.

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

Mikhail
23.11.2016
14:01:36
прокликал доклад и увидел, что DCI ты только на слайде упомянул

где там конкретно на примерах из JS что-то? или бла-бла-юзайте-DCI-это-круто-даже-в-JS?

Алексей
23.11.2016
14:09:57
где там конкретно на примерах из JS что-то? или бла-бла-юзайте-DCI-это-круто-даже-в-JS?
Там пример из Single Responsibility - упрощенная версия DCI. Потрать 10 минут - посмотри

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

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

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
Подскажите плиз как можно выполнить определенную функцию несколько раз с разными промежутками времени между запусками. Типа сначала короткие просежутки потом больше большн
Rx.Observable.range(1,3) .delayWhen((i) => Rx.Observable.interval(i * 5000)) .subscribe(console.log.bind(console)) Или если нужен Random (от 0 до 5 секунд) Rx.Observable.range(1,3) .delayWhen((i) => Rx.Observable.interval(Math.random() * 5000)) .subscribe(console.log.bind(console))

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
сделал через events this._router.events.subscribe
Да. Рекомендуют еще проверять сам эвент внутри subscribe, чтобы он был val instanceof NavigationEnd http://stackoverflow.com/a/33548895/474290

Ты про ngrx/store или про сервисы? извини пока не очень понял вопроса

Google
Ostap
23.11.2016
22:30:07
Ты про ngrx/store или про сервисы? извини пока не очень понял вопроса
Я присоеденюсь про ngrx/store. Нужен и если да, то если оч кратко - почему. Спасибо

Алексей
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
Можно как-то хранить данные при перехоже с предыдущего линка?

Страница 87 из 179

Эта группа больше не существует Эта группа больше не существует