Перейти к содержимому

Сервер разработки

Раздавайте каталог с перезагрузкой страниц через elide dev или elide serve, запускайте обработчик в стиле Fetch и сервер на нескольких контекстах Elide.

На этой странице

elide dev и elide serve раздают каталог с файлами или запускают серверный скрипт.

elide dev ./public
elide serve ./dist
КомандаАдрес по умолчаниюПерезагрузка при изменении файлов
elide dev127.0.0.1:3000HTML-страницы, если раздаётся каталог
elide serve127.0.0.1:8080Нет

Каталог запускает файловый сервер; скрипт выполняется как программа и не перезагружается.

0:09 / 0:09
ФлагДействие
--host HOSTХост для привязки.
--port PORTПорт для привязки.
--no-tuiПростой вывод журнала вместо TUI.
--no-watchТолько dev: без отслеживания и перезагрузки.
--contexts=NЗапускает N копий приложения; auto выбирает число по ядрам CPU. Только в Linux.

Раздача каталога

ЗапросОтвет
/, /docs, /docs/Файл index.html каталога
Каталог без index.html404; списков содержимого каталогов нет
/about, когда есть только about.html404; ссылайтесь на about.html
Скрытый файл, например /.env404. /.well-known/ раздаётся.
Символическая ссылка за пределы каталога или .. в пути404
POST и другие методы405 от elide serve; elide dev отвечает как на GET
  • Content-Type определяется по расширению файла: text/html; charset=utf-8, text/css, text/javascript, application/json, application/wasm, image/png и так далее.
  • Файлы отправляются целиком, без сжатия, без ETag, Last-Modified и Cache-Control; запросы Range и условные запросы получают полный ответ 200. Для кеширования и сжатия поставьте перед сервером CDN или обратный прокси.
  • elide dev добавляет в каждую HTML-страницу скрипт перезагрузки и перезагружает её при изменении любого файла в каталоге.

Запуск обработчика fetch

// entrypoint.mjs
export default {
  async fetch(request) {
    return new Response("ok");
  },
};
elide serve entrypoint.mjs

elide run entrypoint.mjs тоже запускает сервер — на экспортированных hostname и port или на 127.0.0.1:8080. Elide.serve({ port: 3005, fetch }) использует собственный адрес с любой командой.

Сервер на нескольких контекстах

elide serve --contexts=4 entrypoint.mjs
  • Каждый контекст выполняет модуль точки входа один раз и хранит собственные глобальные переменные, поэтому счётчик запросов считает по каждому контексту отдельно.
  • Соединение остаётся в одном контексте всё время своей жизни, включая запросы keep-alive.
  • Если один контекст падает, сервер останавливается.

Для более тонкой настройки задайте engine.contexts в elide.pkl; см. Контексты движка.

Примеры

Была ли эта страница полезной?