MobX (без дополнительных расширений), насколько я понимаю, решает одну проблему: точечное (и поэтому эффективное) обновление UI без перерендера всего дерева.
Redux решает проблему структурирования бизнес-данных приложения и управления состоянием, но в части обновления UI он работает неэффективно, полагаясь на эффективность рендера Реакта (зря) и некоторые простые оптимизации (тоже зачастую нерабочие).
Идеальным было бы (ну, по крайней мере, для меня) совмещение этих двух подходов. Возможно, именно этим и занимается mobx-state-tree.
В плане управления и структурирования состояния для меня Redux вполне норм, если обмазаться хелпер-либами (но это изнанка простоты редакса). В плане оптимизации рендеринга Редакс ужасен.
Было бы круто их совместить, но без заморочек MobX типа описания классов для всего.
Нет, ПХП-подход — это писать в файле страницы всю логику, начиная от запросов в базу.
JSX — это обычный шаблонизатор для HTML, который имеет хорошую и максимально приближенную к Javascript модель для программирования шаблонов.
И да, внутри JSX нельзя ходить в базу и делать запросы на сервер, как нельзя их делать, например, в шаблонах Ангуляра (хотя можно делать в компонентах).
Собственно, мой вопрос заключается в следующем: для полноценного SSR необходимо грузить стейт на сервере, рендерить страницу, а потом стейт сериализировать в страницу (в тег script обычно).
Судя по архитектуре MobX, в котором модели являются классами, моделям требуется специальный сериализатор.
Это действительно сервисы, а не попытка сделать модули, которые вызываются через HTTP
Есть несколько готовых микросервисов, которые можно использовать в проекте
Функционал приложения предполагает, что разработанные микросервисы можно будет переиспользовать в дальнейшем
Есть требования по поддержке предыдущих версий АПИ — запустить инстанс микросервиса, собранный из определенной ревизии проще, чем поддерживать несколько версий в исходниках (тут, конечно, остается вопрос версионирования базы, но он будет решаться и так, и так).
Обычно сливают не за "собственное мнение, отличное от большинства", а за "Собственное Мнение, Отличное От большинства, которые вообще дураки и не понимают Глубины Моей Правоты И Бездны Своего Невежества".
Разницу между а) исходным текстом и б) результатом компиляции уловили?
Спасибо, вы мне просто как глаза открыли.
Для компилируемых языков типа TS проверка переменных на соотвествие типов производиться только на этапе компиляции.
Но нет гарантии, что типы, выведенные при компиляции, будут такими же и во время выполнения. Поэтому в тайпскрипте (как, кстати, и в С++) — типизация слабая (но статическая). А, например, в C# (без неуправляемого кода) — типизация сильная.
Напомню, что изначальная дискуссия была по вопросу, есть ли в тайпскрипте сильная типизация.
На этом дискуссию завершаю, ваш хамский тон и отношение к собеседникам, как к дуракам, мне неприятно.
Статическая типизация — типы проверяются при компиляции.
Динамическая типизация — типы проверяются во время выполнения.
Тут уже менее четкое разделение:
Сильная типизация — тип значения переменной определен, и во время выполнения программы не изменяется
Слабая типизация — одно и то же значение может интерпретироваться как разные типы
Тайпскрипт добавляет опциональную статическую типизацию — она действует только во время компиляции. Но во время выполнения тайпскрипта уже не существует, и типизация динамическая и слабая, как в джаваскрипте.
Тайпскрипт привносил бы сильную типизацию только в том гипотетическом случае, если бы он генерировал код проверок типов во время выполнения (чего он не делает).
Сильная типизация — это когда каждая переменная имеет свой тип во время выполнения, и попытка записать туда значение другого типа (без приведения типов) вызовет ошибку.
В Джаваскрипте типизация динамическая, тип переменной определяется типом текущего записанного туда значения.
Тайпскрипт добавляет в джаваскрипт аннотации типов, которые, тем не менее, не могут изменить динамическую природу языка. Там можно кастовать все в any и записывать что угодно во что угодно, даже включив все флаги компилятора.
Пишу это, потому что это важно понимать тем, кто изучает тайпскрипт, и хочет понять мотивацию, например, его системы типов.
MobX (без дополнительных расширений), насколько я понимаю, решает одну проблему: точечное (и поэтому эффективное) обновление UI без перерендера всего дерева.
Redux решает проблему структурирования бизнес-данных приложения и управления состоянием, но в части обновления UI он работает неэффективно, полагаясь на эффективность рендера Реакта (зря) и некоторые простые оптимизации (тоже зачастую нерабочие).
Идеальным было бы (ну, по крайней мере, для меня) совмещение этих двух подходов. Возможно, именно этим и занимается mobx-state-tree.
В плане управления и структурирования состояния для меня Redux вполне норм, если обмазаться хелпер-либами (но это изнанка простоты редакса). В плане оптимизации рендеринга Редакс ужасен.
Было бы круто их совместить, но без заморочек MobX типа описания классов для всего.
Нет, ПХП-подход — это писать в файле страницы всю логику, начиная от запросов в базу.
JSX — это обычный шаблонизатор для HTML, который имеет хорошую и максимально приближенную к Javascript модель для программирования шаблонов.
И да, внутри JSX нельзя ходить в базу и делать запросы на сервер, как нельзя их делать, например, в шаблонах Ангуляра (хотя можно делать в компонентах).
Ну по идее статья написана именно для таких людей? Те, кто пробовал и redux, и mobx, обычно имеют собственное мнение.
Собственно, мой вопрос заключается в следующем: для полноценного SSR необходимо грузить стейт на сервере, рендерить страницу, а потом стейт сериализировать в страницу (в тег script обычно).
Судя по архитектуре MobX, в котором модели являются классами, моделям требуется специальный сериализатор.
Поддерживают ли модели MobX сериализацию?
Вы делали SSR на MobX?
А можете поподробнее рассказать: это граждане в личный авто должны устанавливать глонасс?
Возможно, в деревне два брадобрея, и они бреют друг друга. В условии парадокса в посте не сказано, что он в деревне один.
Писать микросервисы имеет смысл, когда:
Обычно сливают не за "собственное мнение, отличное от большинства", а за "Собственное Мнение, Отличное От большинства, которые вообще дураки и не понимают Глубины Моей Правоты И Бездны Своего Невежества".
Так с++ собирается под разные платформы, а пайтон и джаваскрипт запускаются на разных платформах.
Получит этот герой-глава команды только ненависть электората и поливание грязью в купленных (читай, всех) СМИ за деньги ста семей.
Эхх, если бы так все просто было бы...
Утверждения, может, и противоположные, но в реальности разница в том, как ты хочешь отдать: по-хорошему, или по-плохому. К сожалению.
DateTimeOffset — это не локальное время. Это абсолютное плюс оффсет (указывающий локальное время источника).
В данном случае эта разница чисто косметическая. Типа "чайник долго закипает" и "чайник долго не закипает".
Как по мне, так такие Пупкины как раз и являются опорой разных античеловеческих режимов.
Тем, что невозможно узнать локальное время события в таймзоне источника события.
Спасибо, вы мне просто как глаза открыли.
Но нет гарантии, что типы, выведенные при компиляции, будут такими же и во время выполнения. Поэтому в тайпскрипте (как, кстати, и в С++) — типизация слабая (но статическая). А, например, в C# (без неуправляемого кода) — типизация сильная.
Напомню, что изначальная дискуссия была по вопросу, есть ли в тайпскрипте сильная типизация.
На этом дискуссию завершаю, ваш хамский тон и отношение к собеседникам, как к дуракам, мне неприятно.
Тут есть небольшая путаница в терминологии:
Тут уже менее четкое разделение:
Тайпскрипт добавляет опциональную статическую типизацию — она действует только во время компиляции. Но во время выполнения тайпскрипта уже не существует, и типизация динамическая и слабая, как в джаваскрипте.
Тайпскрипт привносил бы сильную типизацию только в том гипотетическом случае, если бы он генерировал код проверок типов во время выполнения (чего он не делает).
Сильная типизация — это когда каждая переменная имеет свой тип во время выполнения, и попытка записать туда значение другого типа (без приведения типов) вызовет ошибку.
В Джаваскрипте типизация динамическая, тип переменной определяется типом текущего записанного туда значения.
Тайпскрипт добавляет в джаваскрипт аннотации типов, которые, тем не менее, не могут изменить динамическую природу языка. Там можно кастовать все в
anyи записывать что угодно во что угодно, даже включив все флаги компилятора.Пишу это, потому что это важно понимать тем, кто изучает тайпскрипт, и хочет понять мотивацию, например, его системы типов.