Креативненько, но в рамках связывания по событиям работается не чуть не хуже. ООП с парадигмой реактивного программирования вполне справляется.
|
Ага, только приходится руками подписываться и руками же не забывать отписываться. Атомы же абстрагируют от необходимости подписки-отписки. Прочитал значение - значит ты от него зависишь. Всё.
|
Доброго времени суток
начинаю разбираться с данным паттерном что давольно сложно для меня)) + наткнулся на GitHub на такую либу (https://github.com/zynga/atom) на мой взгляд она попроще чем ваша (на много)) так вот хотелось бы узнать ваше мнение |
А как быть с контекстом выполнения? Вся связь атомов происходит в глобальном контексте, на клиенте это вкладка браузере. Обновил страницу - состояние атомов сбросил.
А вот на сервере так сделать нельзя, т.к. сервер обслуживает множество пользователей и контекст не может быть глобальным на процесс ноды, а должен быть на запрос или на пользователя. В изоморфном приложении static-переменные использовать нельзя. Из кода непонятно, как это решено. Все атомы взаимодействуют неявно через static переменные. |
Цитата:
да никак . либо сохранять где-то, либо ... сохранять где-то :) (localStorage) сохранение состояния - бич объектно ориентированного программирования. а окромя ООП у нас ничего то и нету... |
Контекст, как место, где это состояние хранится.
Все дело в том, что атомы не являются чистыми функциями. Внутри они содержат обращения к глобальным переменным. Так устроен механизм их автоподписки друг на друга. В случае сервера так делать нельзя, т.к. состояние будет общее для всех запросов, а разные запросы могут приходить от разных людей. Вот оригинальный класс атома: https://github.com/nin-jin/pms-jin/b...m/prop/atom.ts В коде есть куча static методов и переменных. Я немного изменил атом, таким образом, что контекст можно передавать в конструктор: https://github.com/zerkalica/frp-ato...er/lib/prop.ts А вообще, велосипеды это все, для асинхронного управления состоянием есть менее сырые технологии: flux, nuclear-js, immutable.js |
Часовой пояс GMT +3, время: 05:36. |