ЛКИ
Библиотека C для создания пользовательских интерфейсов.
Оглавление
- Оглавление
- Введение
- Основные характеристики
- Обзор функций
- Архитектура
- Быстрый старт
- Документация
- Дорожная карта
- Вклад
- Часто задаваемые вопросы
- Лицензия
Введение
中文版说明文档
LCUI — это библиотека, написанная на C, для создания графических пользовательских интерфейсов. Его цель — изучить и опробовать на практике новые способы разработки пользовательских интерфейсов, характеризующиеся небольшим размером, простотой использования и предоставлением удобных инструментов разработки, помогающих разработчикам быстро создавать настольные приложения с графическими пользовательскими интерфейсами.
LC происходит от инициалов имени автора. Изначально библиотека создавалась для того, чтобы помочь автору разрабатывать небольшие проекты и приобретать опыт разработки. Однако автор не получил конкурентного преимущества на рынке труда, где полно специалистов по C/C++, и поэтому ему пришлось работать в сфере веб-интерфейсной разработки. В результате LCUI теперь склоняется к интеграции технологий из веб-интерфейса.
Основные характеристики
- Кроссплатформенность: поддерживает Windows и Linux.
- Полностью настраиваемые компоненты: компоненты сохраняют единообразный внешний вид и поведение на разных платформах.
- Встроенный CSS-движок: поддерживает использование CSS для определения стиля и макета пользовательского интерфейса, что упрощает начало работы для тех, у кого есть опыт веб-разработки.
- Предоставляет современные инструменты разработки. Эти инструменты позволяют использовать язык TypeScript с синтаксисом JSX, библиотеку React и другие технологии веб-интерфейса для написания пользовательских интерфейсов.
Обзор функций
Об опыте разработки приложений LCUI можно узнать из следующего скриншота:
- Разработка компонентов в стиле React: написание файлов конфигурации пользовательского интерфейса с использованием TypeScript. Благодаря сочетанию преимуществ TypeScript, синтаксиса JSX и библиотеки LCUI React вы можете кратко описать структуру интерфейса, зависимости ресурсов, состояния компонентов, привязку данных и привязку событий.
- Различные методы написания таблиц стилей: Tailwind CSS, CSS-модули, Sass и глобальный CSS.
- Маршрутизатор на основе файловой системы: организует страницы приложения в виде каталога, где каждая страница соответствует каталогу. Путь к каталогу служит маршрутом для этой страницы. Благодаря встроенному маршрутизатору приложений вы можете легко реализовать переключение страниц и навигацию без ручной настройки маршрута.
- Удобная и современная библиотека значков: значки взяты из библиотеки fluentui-system-icons с частичной настройкой в соответствии с характеристиками LCUI и предлагают схожие шаблоны использования.
- Инструмент разработки из командной строки: запустите команду
lcui build
для предварительной обработки файлов конфигурации в каталоге приложения, затем сгенерируйте соответствующий исходный код C и файлы ресурсов.
Архитектура
Со временем LCUI был построен на основе различных библиотек:
- lib/yutil: служебная библиотека, предоставляющая общие структуры данных и функции.
- lib/pandagl: PandaGL (графическая библиотека Panda), предлагающая управление шрифтами, макет текста, ввод-вывод изображений, обработку графики и возможности рендеринга.
- lib/css: механизм синтаксического анализа и выбора CSS, обеспечивающий возможности анализа и выбора CSS.
- lib/ptk: библиотека Platform Toolkit, предлагающая кросс-платформенные унифицированные API-интерфейсы, связанные с системой, включая цикл сообщений, управление окнами, метод ввода и т. д.
- lib/thread: библиотека потоков, обеспечивающая возможности кросс-платформенной многопоточности.
- lib/timer: библиотека таймера, обеспечивающая возможность выполнения задач через регулярные промежутки времени.
- lib/ui: базовая библиотека пользовательского интерфейса, предоставляющая основные возможности пользовательского интерфейса, такие как управление компонентами пользовательского интерфейса, очередь событий, вычисление стилей и рисование.
- lib/ui-xml: библиотека синтаксического анализа XML, обеспечивающая возможность создания пользовательского интерфейса из содержимого файла XML.
- lib/ui-cursor: библиотека курсоров, предлагающая возможности рисования курсора.
- lib/ui-server: сервер пользовательского интерфейса, обеспечивающий возможность сопоставления компонентов пользовательского интерфейса с системными окнами.
- lib/ui-router: менеджер маршрутизатора, предлагающий возможности сопоставления маршрутов и навигации.
- lib/ui-widgets: предопределенная библиотека базовых компонентов, предоставляющая основные компоненты пользовательского интерфейса, такие как текст, кнопки, полосы прокрутки и т. д.
- lib/worker: библиотека рабочих потоков, предоставляющая простые возможности взаимодействия и управления рабочими потоками.
Быстрый старт
Прежде чем начать, вам необходимо установить на свой компьютер следующее программное обеспечение:
- Git: инструмент контроля версий, используемый для загрузки исходного кода примера проекта.
- XMake: инструмент сборки, используемый для сборки проекта.
- Node.js: среда выполнения JavaScript, используемая для запуска инструмента разработки командной строки LCUI.
Затем выполните следующие команды в окне командной строки:
# Install the LCUI command-line development tool
npm install -g @lcui/cli
# Create an LCUI application project
lcui create my-lcui-app
После этого следуйте подсказкам команд.
Документация
- Интернет-документация
- Запрос комментариев (RFC)
- Журнал изменений
- Рекомендации по внесению взносов
Учебники
- Список дел: изучите основные концепции и использование LCUI, а также то, как использовать его для создания интерфейсов и реализации управления состоянием, обновлений интерфейса и взаимодействий.
- Рендеринг анимации ткани: перепишите исходный код JavaScript существующей программы моделирования ткани на языке C и используйте графическую библиотеку cairo для рендеринга ткани. Затем примените LCUI для реализации воспроизведения и взаимодействия анимации структуры.
- Браузер. Используя веб-браузер, используйте LCUI для реализации аналогичной структуры интерфейса, макета, стиля и функций управления несколькими вкладками. Используйте функцию управления маршрутизацией LCUI для реализации управления состоянием страниц и навигации с несколькими вкладками, а также простой страницы просмотра файлов. (Это руководство устарело, вклад в его обновление приветствуется)
Ссылки
Некоторые функции LCUI и связанных с ним проектов созданы на основе других проектов с открытым исходным кодом. Вы можете обратиться к их документации, чтобы понять основные концепции и использование.
- DirectXTK: ссылка на исходный код пошагового таймера.
- Vue Router: справочник по менеджеру маршрутизатора. Некоторые функции также ссылаются на исходный код Vue Router.
- Next.js: справочник по методам определения маршрута.
Дорожная карта
Вот предстоящие предметы:
- ЛКИ
- Улучшите дизайн API.
- Улучшите движок CSS, чтобы он поддерживал
inherit
, !important
и escape-символы. - Добавьте серверную часть SDL, чтобы заменить библиотеку lib/ptk.
- Адаптируйтесь к другим графическим библиотекам с открытым исходным кодом для повышения производительности рендеринга.
- Инструменты командной строки
-
lcui build --watch
: постоянно отслеживать изменения файлов и автоматически перестраивать их. -
lcui dev-server
: аналогично webpack-dev-server, создает приложение LCUI в виде веб-сайта, на котором разработчики могут просматривать интерфейсы в браузере. - Добавьте кеш сборки, чтобы пересобирать только изменившиеся файлы.
- Библиотека компонентов React. Ссылаясь на некоторые библиотеки компонентов веб-интерфейса (например, radix, shadcn/ui), разработайте библиотеку компонентов TypeScript + React, подходящую для приложений LCUI, повторно используя компоненты из библиотеки компонентов LC Design.
- Документация
- Учебники
- Запрос комментариев (RFC)
Вклад
Думаете, LCUI обновляется медленно? Есть много способов внести свой вклад в LCUI.
- Сообщайте об ошибках и помогайте нам проверять исправления по мере их поступления.
- Поделитесь некоторыми интересными идеями, связанными с разработкой графического интерфейса, на странице вопросов.
- Найдите комментарии FIXME в исходном коде и попытайтесь их исправить.
- Финансируйте вопросы, которые вас интересуют, на IssueHunt, чтобы привлечь к участию других разработчиков.
- Просмотрите изменения исходного кода.
- Внесите свой вклад в исправление ошибок.
LCUI принял кодекс поведения, определенный в Соглашении с вкладчиками. Этот документ используется во многих сообществах с открытым исходным кодом, и мы считаем, что он хорошо отражает наши ценности. Дополнительную информацию см. в Кодексе поведения.
Часто задаваемые вопросы
Это ядро браузера? Или библиотека разработки, такая как Electron, которая интегрирует среду браузера?
Нет, вы можете думать об этом как о традиционной библиотеке разработки графического интерфейса, в которой применяются некоторые веб-технологии.
Поскольку он поддерживает использование языка TypeScript, почему бы мне не использовать Electron?
Да, если у вас есть опыт веб-разработки и вы хотите изучить Electron, то Electron, очевидно, будет лучшим выбором.
Учитывая текущие возможности LCUI, он в первую очередь подходит для удовлетворения личных потребностей автора и разработки простых инструментов.
Почему мне следует выбирать LCUI вместо других библиотек/фреймворков с графическим интерфейсом?
Мы предлагаем вам отдать приоритет другим библиотекам/фреймворкам графического интерфейса.
Как насчет поддержки CSS?
Ниже приведен список поддерживаемых функций CSS. Проверено поддерживается (Но не означает полную поддержку). Свойства, не указанные в списке, не поддерживаются по умолчанию.
Охват функций CSS
- по правилам
- ключевые слова
- селекторы
- единицы
- характеристики
Лицензия
Проект LCUI выпущен под лицензией MIT.