1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/stringlxd-deno-cool

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 6 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 16.03.2025 15:19 a4c28e2

Deno Cool

Введение

Это очень крутое проекта, основанное на JavaScript-временной среде Deno, облачном проекте, который предоставляет множество публичных услуг в Rust для выполнения команд операций в среде Deno. TS-скрипты Deno могут сосредоточиться на бизнес-логике. Проект запускается за доли секунды, аналогично Deno Deploy, с возможностью онлайн управления запусками и остановками Deno, а также онлайн редактированием кода, поддерживающим продукт и арендаторов.

Запуск происходит за доли секунды, полностью совместимо со всей экосистемой Deno, обеспечивая изолированность окружений для нескольких проектов.

Технологическая стопка

Rust, Deno, JavaScript, TypeScript

Технические идеи

Иdea реализации

Зависимости

Технические трудности

  1. Совместимость с первичной экосистемой Deno, механизмы работы Deno

  2. Как решить проблему повторного прослушивания порта при запуске веб-проекта

  3. V8 может работать только в одном потоке, как осуществляется взаимодействие между потоками

  4. Реализация шлюза (gateway)

  5. Арендаторская среда выполнения (runtime)

Библиотеки Rust

# основные компоненты
v8 #основной
deno_core #основная зависимость Deno от V8
deno_ast #парсер кода Deno
deno_ops #реализация Deno ops
serde_v8 #сериализация данных JSON
deno_runtime #высокоуровневое обертывание на основе deno_core
deno_npm #совместимость с библиотеками Node.js NPM
...

Структура директорий

deno-cool
├── Cargo.toml #файл зависимостей workerspace
├── cassie-cool #административный веб-проект управления
├── code #каталог хранения кода
│   ├── admin #название каталога совпадает с названием проекта
├── code_editor #редактор кода
├── context #основной пакет
├── demo #каталог примеров кода
│   ├── app.ts
│   ├── data.json
│   ├── demo.html
│   ├── deno.json
│   └── deno.lock
├── ext #расширение Deno
├── frontend #код фронтенда управления
├── lib #файлы сборки V8
│   ├── rusty_v8.lib
│   └── rusty_v8.sum
├── runtime #runtime Deno
├── service #вторичное обертывание основного пакета runtime Deno

Описание проекта cassie-cool

Это административный веб-проект управления для runtime Deno. Проект предназначен для управления проектами и runtime, а также выполняет роль маршрутизатора между несколькими проектами. Это упрощённая версия шлюза.

/// Главный вход
#[tokio::main]
async fn main() -> std::io::Result<()> {
  env_logger::init_from_env(env_logger::Env::new().filter_or("info", "info"));
  let file_table: web::Data<Mutex<HashMap<String, String>>> = web::Data::new(Mutex::new(HashMap::new()));
  log::info!("начало главного HTTP сервера по адресу http://127.0.0.1:9999");
  HttpServer::new(move || {
    // Это некорректно, будет работать только в текущем потоке
    App::new()
      .configure(api_routers)
      .app_data(file_table.clone())
      .app_data(web::Data::new(Client::default()))
      .wrap(middleware::Logger::default())
      .default_service(web::to(forward))
  })
  .bind(("127.0.0.1", bkp_port))?
  .run()
  .await
}
```Описание запросов к фронтенду проекта: если это запрос к API runtime Deno, API Deno должны быть спроектированы так, чтобы не конфликтовать с API проекта cassie-cool, и заголовок запроса должен содержать `product_code=` имя проекта на английском языке, чтобы запрос был направлен к правильному API.

## Построение и запуск проекта
### Построение кода
1: рекомендуется использовать последнюю версию Rust, команда обновления: `rustup update`
2: выполните команду `cargo build` в корне проекта
3: при возникновении ошибок, связанных с V8, скопируйте содержимое директории `/lib` в `/target/debug/gn_out/obj/`, перезапустите команду `cargo build`

### Запуск проекта
1: Первым запустите проект cassie-cool
2: Запустите ui frontend (управление)
3: Запустите code_editor (редактор кода)

### Скриншот проекта
Управление (запуск экземпляра проекта)
![Управление](./img1.png)
Онлайн-редактор кода
![Онлайн-редактор кода](./img2.png)

## Автор Cassie <348040933@qq.com>

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/stringlxd-deno-cool.git
git@api.gitlife.ru:oschina-mirror/stringlxd-deno-cool.git
oschina-mirror
stringlxd-deno-cool
stringlxd-deno-cool
master