Riot.js представляет собой лёгкий и гибкий фреймворк для создания
компонентов пользовательского интерфейса. Развёртывание приложений на
Riot.js требует правильной организации файлов, настройки сборщика и
подготовки окружения. Основой развёртывания является компиляция тегов
.riot в чистый JavaScript, что позволяет интегрировать
компоненты в любой проект, использующий стандартные веб-технологии.
Для начала необходимо установить необходимые инструменты:
npm install -g @riotjs/cli
npm install @riotjs/compiler --save-dev
@riotjs/cli позволяет выполнять сборку компонентов через
командную строку, а @riotjs/compiler используется для
интеграции в систему сборки, например, Webpack или Rollup. После
установки компоненты компилируются командой:
riot src/components dist
где src/components — директория с тегами
.riot, а dist — папка для скомпилированных
JS-файлов.
Статическое окружение подразумевает использование веб-сервера без
серверной логики (например, Nginx, Apache, GitHub Pages). После
компиляции .riot файлов в JavaScript создаётся единый файл
или набор файлов, которые подключаются к HTML.
Структура проекта может выглядеть так:
dist/
js/
app.js
css/
style.css
index.html
HTML подключение:
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Riot.js App</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<my-app></my-app>
<script src="js/app.js"></script>
</body>
</html>
Важно убедиться, что все зависимости корректно подключены, а пути к файлам совпадают с фактической структурой проекта.
Для более сложных проектов целесообразно использовать сборщики.
Webpack позволяет автоматически компилировать .riot теги,
минифицировать код и организовать работу с внешними библиотеками.
Пример настройки Webpack:
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
module: {
rules: [
{
test: /\.riot$/,
exclude: /node_modules/,
use: [
{
loader: '@riotjs/webpack-loader',
options: { hot: false }
}
]
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader']
}
]
},
resolve: {
extensions: ['.js', '.riot']
}
};
Команда для сборки:
npx webpack --mode production
Сборка создаёт один оптимизированный файл bundle.js,
который готов для развёртывания на любом веб-сервере.
Node.js окружение позволяет использовать Riot.js совместно с серверной логикой. Основные подходы:
Для SSR используется пакет @riotjs/server:
const riot = require('@riotjs/server');
const fs = require('fs');
const template = fs.readFileSync('./src/components/my-app.riot', 'utf-8');
const html = riot.render(template, { title: 'Пример' });
console.log(html);
Полученный HTML можно вставлять в серверный шаблон, обеспечивая быстрый первый рендер и улучшенную индексацию поисковыми системами.
Riot.js легко интегрируется с современными облачными решениями:
FROM node:20-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npx webpack --mode production
EXPOSE 3000
CMD ["node", "server.js"]
Особое внимание уделяется правильной маршрутизации и кэшированию, чтобы новые версии компонентов автоматически обновлялись у пользователей.
Для крупномасштабных проектов рекомендуется:
bundle.v1.0.0.js) для контроля кэша.Правильная организация сборки и развёртывания обеспечивает стабильность работы приложения, лёгкость интеграции и масштабирование проекта в будущем.