ermouth: (Default)
[personal profile] ermouth

За каникулы случился minor version upgrade – добавилось немножко вкусных фич. Заодно оказалось, что это 10-й юбилейный релиз, да.

В jQuery.my теперь есть внутрисистемный pub/sub и управляемое наследование.

Radio/ listen

Pub/sub организован по принципу радио – каналы и подписчики. Подписчики – контролы в приложениях, они могут апдейтиться на сообщение в канале.

В отличие от типичных чисто js-реализаций pub/sub, я заюзал DOM. Просто мне надо иногда ограничивать вещание, примерно вот так:

unnamed

То-есть какие-то каналы броадкастятся всем, а какие-то приложение может ограничивать и наружу не выпускать. А какие-то и вовсе просто глушить.

С учётом того, что $.my это loosely coupled система, такую функциональность – что по границам каждого приложения может проходить radio-relay c ретранслятором/обработчиком/глушилкой – оказалось не так просто сделать по канонам.

Любое $.my приложение может позаимствовать у соседа, например, какую-то всплывайку, чуток её декорировать и использовать как свою. Или даже не декорировать. И этот позаимствованный манифест должен вести себя, как родной, в том числе и в плане цензуры радио.

В общем, скомбинированные события jQuery и обычный pub/sub вполне решают проблему без создания каналов с частными именами. Также не нужен контроль за тем, жив ли ещё подписчик или его уже прибило по пути и это последние коллбэки в темноте дёргаются – то-есть можно не отписываться от канала в деструкторе, тебя автоматом отпишут по выбытию.

Expose / inherit

Пример с заимствованием кода у соседних приложений во время рантайма имеет ещё одну сторону – принимаемый сниппет по идее должен получать какие-то методы или данные от принимающей стороны.

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

Было бы удобно ей сразу передавать кукую-то ветку манифеста вызывающего приложения, отвечающую за БД. Это и раньше можно было делать, но надо было код писать – а он всегда исполняется после require. Теперь можно сразу фэйлить старт, если вызывающая форма не expose’ит какие-то нужные фичи.

В общем то, недавний редактор JSON написан как раз отчасти чтобы это всё потестить.

Картинки

Когда рисовал схему паб/саба, внезапно нашлось три картинки. Кажется, не публиковал – и напрочь забыл, по какому случаю вообще их рисовал. Интересно, двигательная активность в сочетании с провалами в памяти ггг.

unnamed1 unnamed (1) unnamed (2)

Каникулы кончились, на дворе адище, русский зима, –30. А я дома в трусах и у меня внезапно ядовитый паслён Solanum pseudocapsicum мало того, что зацвёл, но ещё и ягодки будут.

В общем, сдержанно-оптимистичный пост, да.

This account has disabled anonymous posting.
If you don't have an account you can create one now.
HTML doesn't work in the subject.
More info about formatting

Profile

ermouth: (Default)
ermouth

November 2021

S M T W T F S
 123456
78910111213
14151617181920
21 222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jul. 18th, 2025 06:09 am
Powered by Dreamwidth Studios