Pull to refresh
-1
0.1

User

Send message
Да, при том, что Microsoft держится в сторонке от всей этой VR-движухи. В отличие от той же Sony с ее PS VR.
Хотя по слухам вроде бы обещают подружить XBOX и всякие окулусы/вайвы, но это не точно.
Там разные типы «эксклюзивов». Перед некоторыми играми идет фраза «Xbox One & Windows 10 Exclusive», а перед другими «Xbox One & Windows 10 Launch Exclusive», что значит, игра выйдет на других платформах через несколько дней/недель/месяцев.
Забавный опрос) Ну как можно называть маленькую библиотечку Redux фреймворком? Или React сам по себе? Или библиотеку RxJX? И т.д.
Я там в конце сделал сноску, что в редких случаях все же допускаю их использование. Но только в тех случаях, когда реально без этого не обойтись, как правило для сессионных данных. Ну хотя бы тот же токен пользователя надо как-то хранить, а не заставлять его авторизовываться заново, если ему приспичит нажать F5.
Очевидно, своей простотой и поддержкой браузерами по-умолчанию. Плюс, грамотное использование localStorage решает вопрос, когда пользователь в вашем SPA-приложении пытается открыть ссылку в новой вкладке.
При создании SPA, те самые элементы, которые на серверных языках я бы реализовывал через хранение данных в сессии (тот же профиль пользователя), приходится использовать storage-ы и модели, которые получают данные из них.

Т.е., поставленную вами задачу я бы решал следующим образом: создал отдельный компонент Layout, который будет показываться по-умолчанию на страницах и содержит компонент c шапкой, в котором отображаются данные авторизованного пользователя, которые берутся из сессии (т. е. из storage-а). Обновлять данные в шапке можно по ngDoCheck, а чтобы это никак не сказалось на производительности, в механизм нашей сессионной модели несложно добавить проверку на последнее изменение по Timestamp-у.

Конкретно всё это безобразие можно реализовать и другими способами (от предложенного общего сервиса, до синглтона-хранилища-состояний). Но у использования того же localStorage в данном конкретном примере очевидны свои плюсы.

Но это, опять же, если я правильно понял ваш пример. Часто годятся и «оутпуты до корня». Пример: личный кабинет пользователя — корневой компонент. При создании загружает актуальные данные о пользователе и хранит их в себе. Имеет два дочерних компонента: Presentational — лэйаут (использую в нем transclusion посредством ng-content) отрисовывающий шапку, футер, и место, куда будет помещен второй дочерний компонент с формой редактирования данных пользователя. По сути, в данной схеме будет использован всего один output — от компонента с формой редактирования до корневого личного кабинета. Который после получения новых данных о пользователе тут же отобразит их в лэйауте (в шапке, без всяких ngDoCheck). И в такой схеме я вообще не вижу необходимость какого-то глобального стейта.
Вот у вас есть несколько несвязанных компонент, каждая из которых подтягивает копию некоторого стейта с бекенда

Исходя из моих принципов, у меня в любой момент времени нет нескольких несвязанных компонентов, общающихся с бэком. Всегда есть только один корневой (грубо говоря, текущая страница) привязанный к текущему роуту. Если роут меняется (не путать с изменением параметра роута), то этот компонент уничтожается, и создается новый компонент согласно новому роуту. И уже он грузит свой актуальный стейт с бэка.
Не использую общий глобальный стейт и придерживаюсь обычно следующих принципов:

  1. деление компонентов по типу Presentational и Container Components (https://medium.com/@dan_abramov/smart-and-dumb-components-7ca2f9a7c7d0)
  2. каждый «корневой» компонент (как правило, привязанный к опредленному роуту) получает свое актуальное состояние с бэка при инициализации или изменении параметров роута
  3. корневые компоненты между собой не общаются, только через бэк
  4. корневой компонент как правило является Container Component-ом и для отрисовки передает/получает свойства своего состояния через цепочки input/output дочерним Presentational Component-ам (или, если куски большие, разбивать на несколько дочерних Container Component-ов

Как правило, если все сделать грамотно, деревья не получаются слишом многоуровневыми и никаких проблем при передачи состояния вглубь и получения изменений через output-ы лично у меня не возникает.

Эти принципы подробно описаны в официальной документации Angular-а и, как мне показалось, являются тем самым angular way.

В редких случаях, допускаю хранение некоторых глобальных флагов и пр. в storage-ах.
Часто в подобных опросах такой вариант становится лидирующим и портит вид общей статистики. Именно для этого на хабре есть кнопка воздержаться.

В данный момент: Проголосовало 152 человека. Воздержалось 150 человек. Полагаю, эти 50% пользователи как раз таки «не используют» redux.
Знакомство с первым AngularJS у меня так и не состоялось, отпугнули как раз вот такие слухи о его сложности и неудобности. Но вот со второй версией случилась любовь с первого взгляда. Восхитило, насколько в нем все логично и просто устроено. Не считая, конечно, некоторой сложности в сетапе и сборке prod-версии (это был rc1, никакого Angular CLI еще не было в помине). Но, спасибо webpack-у за наше счастливое детство, сложности эти были легко преодолены.

К чему эти дифирамбы? Просто на главной странице документации redux написано, что его можно использовать с чем угодно, не только с react-ом, но и с Angular 2+. Но за все время разработки на последнем, я так и не смог придумать, для чего мне мог бы пригодиться redux.
Долго думал, зачем для Witcher 3 может понадобится максимальный приоритет в роутере)
Я, к сожалению, не могу сравнивать с ранними годами, могу только поделиться впечатлениями о своем детстве за 90-е. И мне довольно смешно наблюдать за современными родителями с их гиперопекой, педоистерией, при том, что мир за тридцать лет стал намного более удобным и безопасным.
Только на самом деле все происходит ровно наоборот. Меньше машин — быстрее поток, в 90-х гонять по проспекту в городе под 100 было нормой для водителей, камер не было, ГАИ с радарами попадались редко и водители заранее предупреждали друг друга. От пьяной езды можно было откупиться за не слишком большие деньги. На пешеходных переходах без светофоров не пропускали почти никогда.

Насчет ценных вещей, почти все дети ходят с смартфонами, телефонами, портативными приставками, плеерами и т.д. Случаев чтобы их пытались отобрать (говорю за своих племянников, детей друзей) не было от слова совсем. В моем детстве, проходя в одиночку через чужой двор с чем-нибудь ценным уровня сломанных наручных часов, новым пеналом или проездным на автобус, можно было лишиться этого с довольно высокой вероятностью.

Кстати, гопота во дворах почти исчезла, как тараканы в квартирах, как только массово начали появляться компьютерные клубы с контрой/районные компьютерные сети в домах, в начале нулевых. Просто раньше подросткам реально нечем было заняться, кроме как приставать ко всем во дворах и бухать по подъездам.
Я родился в городе с 500к населением в 86-ом. Практически за все 90-е годы могу сказать — эти годы не были безопасными для детей.
— все дворы были равномерно усеяны битым стеклом, в подъездах и рядом с ними не сложно было обнаружить кучки грязных шприцов.
— имея при себе что-то ценное, был большой шанс этого лишиться, шанс тем больше, чем дальше вы отошли от дома. Чем-то ценным мог быть старый, но красивый брелок, ученический проездной, наручные часы и т.д.
— пдд соблюдалось хуже — сложнее было контролировать, не было камер через каждый километр, пьяных за рулем было больше, поток машин был меньше, поэтому гоняли на дорогах больше.
— с медициной было хуже, не было платных клиник на каждом углу, а если бы и были, мало у кого были средства чтобы оплатить данные услуги, так как денег не хватало даже на еду. Аптека была одна на микрорайон и далеко не всегда в ней было то лекарство, которое вам требовалось. Порой приходилось обзванивать и искать по всему городу нужное средство.
— много было бродячих животных, вспышек бешенства
— в лес-посадке за домом временами находили избитых или мертвых людей. более всего меня тронул случай, когда нашли изнасилованный труп пятиклассницы из моей школы с сотней ножевых ранений (сам не видел, конечно, я в эту посадку дитем не ходил никогда, но все долго говорили об этом случае)
и т.д.

Сейчас, когда современные дети всегда на связи, можно отследить их положение хоть по GPS, да и айфоны у детей не редкость, а значит не особо их отжимают у детей, могу отметить, что современным детям живется НАМНОГО безопаснее.

Хз как там было в СССР в 60-80х годах, но наверняка значительно лучше, чем в 90-х.
Циклом правильную задержку не сделать, рекурсией элементарно решается
const delay = 50, f = function _f(i) {
	if (i > 100) return;
	setTimeout(() => {
		let s = '';
		if (i % 3 === 0) s += 'Miss';
		if (i % 5 === 0) s += 'Kiss';
		console.log(s ? s : i);
		_f(++i);
	}, delay);
};
f(1);
У меня от светлых букв на темном фоне очень сильно устают глаза. Плюс, строки белых букв как бы отпечатываются на сетчатке и я их потом очень долго вижу даже когда смотрю в сторону от монитора. С белым фоном/темными буквами такой проблемы нет.
Так одно другое не исключает же. Можно и большую красную кнопку от вендора для большинства, и web-API для всех остальных.
Я под новый год купил новый игровой ноут в 1.5 раза дешевле, с аналогичными характеристиками (только экран лучше, с разрешением 4К) от Alienware. Китайцы, вы чего?

Information

Rating
2,938-th
Location
Оренбургская обл., Россия
Registered
Activity