light-fw-cli-core 0.4.0

Ядро CLI Light: анализ проекта, управление компонентами и light.lock
Documentation

Light

Light — декларативный реактивный GUI-фреймворк для Rust. Вы пишете HTML-разметку с директивами (v-if, v-for, v-model), описываете состояние реактивными свойствами (#[proxy]), а Light компилирует шаблоны на этапе сборки в Rust-код, строящий виртуальный DOM. Окна создаются на winit, а программно нарисованный кадр показывается через softbuffer; wgpu доступен отдельной фичей wgpu-backend.

  • Компиляция вместо интерпретации. Шаблоны превращаются в Rust на этапе сборки: в рантайме нет HTML-парсера и интерпретатора разметки.
  • Гранулярная реактивность. Изменение свойства перерисовывает только зависящие узлы виртуального дерева.
  • Нативные окна. Безрамочные окна, кастомный titlebar, модальные окна и несколько окон — из коробки.
  • Платите только за используемое. Каждая подсистема — Cargo-фича; код выключенных возможностей не попадает в бинарник.
  • Компактные бинарники. Программный рендеринг через softbuffer включён по умолчанию: release-сборка демо занимает ~1.7 MB вместо ~7.7 MB с wgpu.

Статус

Текущая версия — 0.4.0. Проект в стадии пре-1.0: публичный API ещё не стабилен и может меняться между минорными версиями.

Быстрый старт

Cargo.toml:

[package]

name = "my-app"

version = "0.1.0"

edition = "2024"



[dependencies]

light = { git = "https://github.com/gifoff/light" }

src/main.rs:

use light::prelude::*;

#[template("templates/app.html")]
#[proxy]
struct App {
    #[default("Мир".to_owned())]
    name: String,
}

impl App {
    fn greet(&self) {
        self.set_name(format!("Привет, {}!", self.name()));
    }
}

fn main() -> light::Result<()> {
    light::run(App::new())
}

templates/app.html:

<window title="My App" width="480" height="320">
    <div direction="vertical" padding="16">
        <h1>Привет, {{ name }}!</h1>
        <button @click="greet">Поздороваться</button>
    </div>
</window>
cargo run

Крейты воркспейса

Крейт Назначение
light Мета-крейт: реэкспортирует ядро, макросы и подключённые компоненты.
light-fw-core Ядро: виртуальный DOM, реактивность, раскладка, отрисовка, окно.
light-fw-macros Процедурные макросы #[template] и #[proxy].
light-fw-html Разбор HTML-шаблонов для макросов.
light-fw-element-form Компонент-элемент: <checkbox>, <radio>, <select>/<option>.
light-fw-behavior-validation Компонент-поведение: required, :validator, @validate.
light-fw-cli Утилита light: проверка проекта и управление компонентами.
light-fw-cli-core Ядро CLI: анализ проекта, light.lock, управление компонентами.

Документация

Ссылки

  • Основной репозиторий: GitHub
  • Зеркало: GitVerse

Лицензия

Распространяется под лицензией MIT OR Apache-2.0 на ваш выбор. Полные тексты — в файлах LICENSE-MIT и LICENSE-APACHE.