<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Chorda Blog</title>
        <link>https://chorda-docs.netlify.app/En/blog</link>
        <description>Chorda Blog</description>
        <lastBuildDate>Mon, 08 Nov 2021 00:00:00 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <item>
            <title><![CDATA[Root-Branch-Leaf]]></title>
            <link>https://chorda-docs.netlify.app/En/blog/rbl</link>
            <guid>rbl</guid>
            <pubDate>Mon, 08 Nov 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Стратегии построения веб-приложения]]></description>
            <content:encoded><![CDATA[<h1>Root-Branch-Leaf</h1><h2>Стратегии</h2><h3>Корневые стратегии (R)</h3><p>Приложение - набор глобально уникальных переменных и action-ов</p><p>Action-ы и значения собираются в отдельные реактивные переменные</p><p>Не предполагается явное создание реакций. Управление вложенными компонентами осуществляется через инжектирование. Таким образом обеспечивается IoC</p><p>Контракт (пропсы) отсутствуют</p><h3>Стратегии ветвей (B)</h3><p>Фрагменты - полноценные компоненты, имеющие собственные action-ы</p><p>Между вложенными элементами разделяются action-ы. Предполагается, что у каждого вложенного элемента может быть свой скоуп, это означает, что проброс значений должен выполняться явно</p><p>Контракт (пропсы) содержит как правило только инжекторы</p><p>Известно об action-ах контекстаю. Т.е. явно накладываются ограничения на контекст</p><h3>Стратегии листьев (L)</h3><p>Элементы - компоненты, которые используют только локальный скоуп</p><p>Между вложенными компонентами разделяются реактивные значения</p><p>Контракт (пропсы) содержит инжекторы и события</p><p>Сложные компоненты могут знать об action-ах контекста (или требовать их)</p><h2>Приложения</h2><h3>R-тип</h3><p>Глобальный store</p><p>Страница с формой ввода</p><h3>B-тип</h3><p>Изолированные части, объединенные подпиской</p><p>Микрофронтенды</p><h3>L-тип</h3><p>Нет store</p><p>Статическая страница с несвязанными виджетами</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Новая версия Chorda 3.1]]></title>
            <link>https://chorda-docs.netlify.app/En/blog/chorda-release-3_1</link>
            <guid>chorda-release-3_1</guid>
            <pubDate>Thu, 04 Nov 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Описание нововведений Chorda 3.1]]></description>
            <content:encoded><![CDATA[<p>Что нового? </p><ul><li>Новый встроенный рендерер</li><li>Joints и Reactions обрабатывают каждый элемент скоупа отдельно</li><li>Удалены лишние реинициализации при синхронизации компонентов</li><li>Реакции возвращают в качестве результата набор опций. Двигаемся к отказу от явного вызова patch</li><li>Добавлен метод init для инициализации скоупа</li><li>Переименование свойств</li><li>Изменена обработка callable в эффектах</li><li>Отказываемся от iterable</li></ul>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Новая версия Chorda 3.0]]></title>
            <link>https://chorda-docs.netlify.app/En/blog/chorda-release-3</link>
            <guid>chorda-release-3</guid>
            <pubDate>Mon, 25 Oct 2021 00:00:00 GMT</pubDate>
            <description><![CDATA[Описание нововведений Chorda 3.0]]></description>
            <content:encoded><![CDATA[<p>Что нового?</p><ul><li>&quot;Ленивый&quot; скоуп</li><li>Callable</li><li>Переименованы некоторые свойства</li><li>Упрощение joint-ов и контроль подписки</li><li>Вложенные обработчики событий</li><li>Служебные события</li><li>Ну и костыли typescript</li></ul><h2>&quot;Ленивый&quot; скоуп</h2><p>Передача скоупа раньше представляла из себя копирование содержимого родительского скоупа и слияние его с дочерним. Простая рабочая схема, но у нее были проблемы:</p><ul><li>лишние копирования ненужных свойств. Чем жирнее скоуп, тем больше копирований</li><li>ограниченное разрешение кросс-ссылок. Разрешение происходило только во время инициализации и не все компоненты скоупа могли быть доступны в этот момент</li></ul><p>Теперь скоуп разрешает переменные лениво и в новой последовательности:</p><ol><li>Инжектируемые переменные (определяются разработчиком)</li><li>Проецируемые переменные (задаются при использовании итераторов)</li><li>Инициализационные переменные (переменные по умолчанию)</li><li>Переменные контекста (передаются от родительского компонента)</li></ol><h2>Callable</h2><p>Новый тип объектов, содержащий функцию. На результат выполнения функции можно подписаться через раздел events. От computable отличается тем, что значением является функция и в первую очередь она предназначена для изменения других свойств скоупа</p><h2>Переименования</h2><p>Покинули чат: <code>scope</code>, <code>bindings</code></p><p>Появились: <code>injections</code>, <code>reactions</code>, <code>initials</code></p><h2>Joint-ы</h2><p>Теперь джоинты не привязаны к переменной скоупа, а подключаются ко всему скоупу. Все подписки, выполняемые во время джоинта, отзываются при удалении компонента</p><h2>События</h2><p>Для подключения к событиям теперь необходимо указывать прослушиваемую переменную. В первую очередь это сделано, чтобы не проверять весь скоуп в поисках зарегистрированных событий. Регистрация событий теперь не нужна</p><p>В разделе <code>events</code> можно подписываться на callable переменные</p><h2>Служебные события</h2><ul><li>afterInit</li><li>afterDestroy</li><li>afterSyncIndexed</li><li>afterSyncKeyed</li><li>afterAddKeyed</li><li>beforeRemoveKeyed</li><li>afterRender</li></ul><h2>Typescript</h2><p>Для корректного управления угадайкой (infer) следует использовать Blueprint/InferBlueprint. На данный момент это &quot;костыльное&quot; решение, т.к. другой альтернативы нет</p><p>Частичное применение генериков так же недоступно. Общая рекомендация: не модифицировать генерики ответа, работать только с расширением или приведением типов аргументов</p><h1>Концептуальные проблемы</h1><ul><li>невозможно использовать один узел в разных деревьях</li><li>использование VDOM, хотя есть полная информация об изменении DOM</li><li>невозможно клонирование или перенос поддерева</li></ul>]]></content:encoded>
        </item>
    </channel>
</rss>