Skip to content

Instantly share code, notes, and snippets.

@flancer64
Created October 31, 2024 08:30
Show Gist options
  • Save flancer64/1e2269d53d3e450862f1682488f363ff to your computer and use it in GitHub Desktop.
Save flancer64/1e2269d53d3e450862f1682488f363ff to your computer and use it in GitHub Desktop.
Основная философия и принципы Tequila Framework (TeqFW) для масштабируемой и модульной разработки на JavaScript.

Философия платформы TeqFW

Введение

Платформа Tequila Framework (далее — TeqFW) создана для упрощения распределённой разработки JavaScript-приложений слабо связанными командами разработчиков. Она полностью поддерживает ES6-модули, предоставляя уникальный подход к внедрению зависимостей и отказу от раннего связывания кода. Этот документ даёт общее понимание философии TeqFW, а для детализированных инструкций и примеров обращайтесь к другим документам в базе знаний.

Основные идеи TeqFW включают:

  • Использование чистого JavaScript без необходимости трансляции;
  • Опору на JSDoc вместо TypeScript для описания типов;
  • Модульную архитектуру на базе ES6-модулей;
  • Применение принципа инверсии контроля (IoC);
  • Поддержку уникальных пространств имён для адресации модулей;
  • Использование шаблонов для унификации структуры кода;
  • Набор соглашений, облегчающих распределённую разработку;
  • Чёткое разделение данных и функций в соответствии с принципами Гарвардской архитектуры;
  • Возможность динамической загрузки ES6-модулей из CDN во время выполнения.

Основные идеи

1. Чистый JavaScript

TeqFW работает исключительно с чистым JavaScript без необходимости трансляции кода, что упрощает отладку и ускоряет процесс разработки. Это позволяет разработчикам писать и проверять код напрямую без лишних шагов конверсии.

Резюме: Отказ от трансляции кода упрощает разработку и улучшает совместимость с разными средами.

2. JSDoc

Вместо использования TypeScript в TeqFW применяются JSDoc-аннотации для описания типов данных. Это облегчает работу с кодом, позволяет проводить статический анализ в IDE и обеспечивает свободу в разработке, которую TypeScript ограничивает более строгой типизацией.

Резюме: JSDoc обеспечивает преимущества типизации без жёстких ограничений, упрощая работу в разных средах.

3. Модульная архитектура

TeqFW использует ES6-модули как основную единицу структуры приложений. Каждый модуль может экспортировать отдельные сущности, а зависимости внедряются через конструкторы или фабрики. Модули объединяются в npm-пакеты, управляемые через package.json. Файл teqfw.json добавляет в npm-пакет информацию, необходимую для работы платформы TeqFW, например, правила преобразования пространств имён в файловую структуру для нахождения исходных кодов.

Резюме: ES6-модули обеспечивают модульность и гибкость структуры кода, управляемого через npm.

Подробнее о структуре модулей TeqFW читайте в документе "Модульная система TeqFW".

4. Инверсия контроля (IoC)

Основная идея IoC в TeqFW заключается в отказе от статического импорта модулей. Это обеспечивает единообразие работы как в браузере, так и в Node.js, позволяя разработчикам сосредотачиваться на высокоуровневой архитектуре, откладывая конкретизацию реализаций до запуска приложения.

Резюме: Инверсия контроля облегчает переносимость и модульность, позволяя сосредоточиться на архитектуре.

5. Пространства имён (Namespaces)

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

Резюме: Пространства имён позволяют эффективно управлять модулями и зависимостями.

Узнайте больше о пространствах имён в разделе "Работа с пространствами имён в TeqFW".

6. Шаблоны

TeqFW использует шаблоны для организации кода по типам компонентов, что помогает поддерживать единообразие структуры. Например, код может быть организован как DTO, сервисы, контроллеры и т.д.

Резюме: Шаблоны помогают стандартизировать код и улучшить его организацию.

7. Соглашения

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

Резюме: Соглашения упрощают распределённую разработку, делая код единообразным и предсказуемым.

8. Данные и функции

Код в приложениях TeqFW делится на код, описывающий структуры данных (DTO), и код, обрабатывающий эти данные. Обработчики данных работают по функциональной парадигме, максимально полагаясь на входные данные и минимизируя зависимость от внешних состояний.

Резюме: Разделение данных и функций упрощает поддержку и модульность кода.

Подробнее о DTO и обработчиках данных читайте в документе "Работа с данными в TeqFW".

9. Динамическая загрузка модулей из CDN

TeqFW предоставляет возможность динамической загрузки ES6-модулей во время выполнения приложения в браузере. Используя dynamic import и такие CDN, как JsDelivr или Unpkg, Контейнер Объектов может загружать любые модули напрямую из реестра npm-пакетов. Это означает, что приложения на платформе TeqFW могут обращаться к любому доступному ES6-модулю без предварительной установки или сборки, что значительно расширяет возможности и гибкость разработки.

Резюме: Динамическая загрузка модулей из CDN позволяет приложениям гибко подключать зависимости во время выполнения, используя широкий спектр пакетов из npm-реестра.

Заключение

TeqFW предоставляет мощный набор инструментов и подходов для эффективной и гибкой разработки JavaScript-приложений. Используя чистый JavaScript, JSDoc, модульную архитектуру и другие описанные идеи, разработчики могут создавать масштабируемые и поддерживаемые приложения, легко интегрируя новые модули и работая в распределённых командах.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment