Что нового?
Основные цели
- Разделить проект на мелкие библиотеки (isomorphic helpers, rendering, template engines, data layer, logger, i18n, config, uhr)
- Позволить работать с любой библиотекой для отрисовки (web-components, react, vue, deku...)
- Отвязаться от жесткой структуры проекта
- Сделать новую спецификацию компонентов
Строгая струкутра проекта
Плюсы
Быстрый старт
Watch mode на сервере
Namespace сущностей
Не нужно думать о сборке
Минусы
Затраты ресурсов на поддержку механизма namespacing'а
Нет возможности группировать сущности в рамках одной папки
Нет возможности изменить инструмент сборки если это потребуется
Строгая струкутра проекта
Решение:
Строгая струкутра проекта
Чего коснулось?
Строгая струкутра проекта
Чего коснулось?
Строгая струкутра проекта
class Component {
  template (ctx) {
    return `
     Hello ${ctx.name}.
     <cat-nested></cat-nested>
    `;
  }
  // Rest methods here (bind, unbind, render)...
}
module.exports = {
  constructor: Component,
  children: [
    {
      name: 'nested' // Local name, not available for other components
      component: require('../nested'),
      watcher: {
        name: ['path', 'to', 'name']
      } // Support function definition, applyed for all tags <cat-nested>
      props: {
        size: 'big',
        isVisible: true
      }
    }
  ]
}Улучшения в компонентах
Автогенерируемые ID
<Slot> [WIP]
Hydration/Dehydration [WIP]
Отныне не требуется указание уникального id
Указание содержимого внутри тела компонента.
Сейчас требуется кэшировать state асинхронных экшенов внутри проекта, нужно от этого избавиться.
Исследования
Переезд на Webpack
Подумать о том как максимально избавить приложение от предварительной компиляции.
Отказ от Babel
Посмотреть на скорость сборки приложения
Когда уже будет?
Alpha - на этой неделе. Без новых улучшений. Нужно для того чтобы опробовать сборку, структуру проекта, и начать миграцию.
Beta - после первого разработческого feedback'а. Эта версия должна содержать в себе все вещи которые нужны что мигрировать текущий проект на новую версию без проблем.
Release Candidate - версия которая уходит на регрессионное тестирование. Проект полностью переехал и с точки зрения разработчика готов к тестированию.
Stable/Release - версия которая готова к релизу приложения и содержит в себе все запланированые улучшения проекта.
Полный список изменений
Сatbee 3.0.0 - Работа с Cookie, Redirect, Headers + Routing + Event Bus + структура проекта на Service Locator. Отправляет в Document Renderer команды: Render, InitWithState, UpdateState. В каждый метод передает Routing Context.
Catbee Web Components 1.0.0 - Имплементация DocumentRenderer на основе Web Components / Morphdom / Appstate.
Appstate 2.0.0 - Отвязанный от namespace релиз Appstate.
Catbee i18n 1.0.0 - Имплементация i18n на основе Python Babel, содержит в себе несколько пакетов, таких как i18n-base-methods, i18n-handlebars-helpers, i18n-cli итд...
Catbee Devtools 1.0.0 - Расширение для упрощения tracking'а сигналов.
Полный список изменений
Сatbee Config 1.0.0 - Имплементация изоморфной конфигурации созданная для простой работы с разными окружениями.
Catbee Logger 1.0.0 - Имплементация системы логов с системой расширений (транспорты, preset'ы).
Catbee Handlebars 5.0.0 - Новая версия template provider с трансофрмацией и require hook
Catbee Docs - Вебсайт с документацией.
Catberry-Locator 2.0.0 - Новая версия Catberry Locator без инъекций через $.