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

OSCHINA-MIRROR/stringlxd-deno-cool

В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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