Это очень крутое проекта, основанное на JavaScript-временной среде Deno, облачном проекте, который предоставляет множество публичных услуг в Rust для выполнения команд операций в среде Deno. TS-скрипты Deno могут сосредоточиться на бизнес-логике. Проект запускается за доли секунды, аналогично Deno Deploy, с возможностью онлайн управления запусками и остановками Deno, а также онлайн редактированием кода, поддерживающим продукт и арендаторов.
Запуск происходит за доли секунды, полностью совместимо со всей экосистемой Deno, обеспечивая изолированность окружений для нескольких проектов.
Rust, Deno, JavaScript, TypeScript
Совместимость с первичной экосистемой Deno, механизмы работы Deno
Как решить проблему повторного прослушивания порта при запуске веб-проекта
V8 может работать только в одном потоке, как осуществляется взаимодействие между потоками
Реализация шлюза (gateway)
Арендаторская среда выполнения (runtime)
# основные компоненты
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
Это административный веб-проект управления для 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 (редактор кода)
### Скриншот проекта
Управление (запуск экземпляра проекта)

Онлайн-редактор кода

## Автор Cassie <348040933@qq.com>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )