Правильная организация файлов и папок является ключевым аспектом разработки приложений на Slim.js, обеспечивая удобство сопровождения, масштабирования и повторного использования компонентов. Slim.js — это легковесный JavaScript-фреймворк для построения реактивных веб-компонентов, ориентированный на модульность и минимальный overhead, что напрямую отражается на структуре проектов.
В проектах на Slim.js чаще всего выделяют следующие ключевые папки:
src/ — исходный код приложения.
Пример структуры внутри src/:
src/
components/
services/
utils/
app.js
index.htmlcomponents/ — отдельные
UI-компоненты.
Каждый компонент обычно располагается в своей папке, содержащей HTML, CSS и JS (или TypeScript) файлы.
Например:
components/
header/
header.js
header.html
header.css
footer/
footer.js
footer.html
footer.cssJS-файл компонента содержит класс или функцию с
использованием Slim.Component.
HTML-файл определяет шаблон компонента через
innerHTML или подключение через Shadow DOM.
CSS-файл обеспечивает локальные стили, часто изолируемые через scoped CSS или Shadow DOM.
services/ — бизнес-логика и работа
с данными.
Сервисы взаимодействуют с API, управляют состоянием приложения или обрабатывают данные.
Пример:
services/
apiService.js
authService.jsutils/ — вспомогательные
функции.
Повторно используемые утилиты, например, функции форматирования дат, работы с массивами или локального хранилища.
Пример:
utils/
formatDate.js
debounce.js
storage.jsassets/ — статические ресурсы.
Изображения, шрифты, иконки, глобальные стили.
Пример:
assets/
images/
fonts/
styles/
main.cssindex.html — точка входа.
Подключает основной JavaScript-файл (app.js) и
стили.
В Slim.js шаблон обычно содержит контейнер для рендеринга компонентов:
<body>
<div id="app"></div>
<script src="app.js"></script>
</body>Для крупных приложений целесообразно выделять типы компонентов:
Такое разделение упрощает поддержку и переиспользование компонентов в разных частях приложения.
В Slim.js рекомендуют использовать модульную структуру ES6:
// header.js
import { Component } from 'slim-js';
export default class Header extends Component {
constructor() {
super();
this.template = `
<header>
<h1>Заголовок приложения</h1>
</header>
`;
}
}
import.app.js выполняет роль центрального файла, где
происходит инициализация компонентов и настройка маршрутов, если
используется Slim.js Router.kebab-case или
camelCase, отражающие назначение.PascalCase.header.css) или с
префиксом (header.module.css для scoped-стилей).camelCase.js.Slim.js поддерживает изоляцию стилей через Shadow DOM:
this.attachShadow({ mode: 'open' });
this.shadowRoot.innerHTML = `
<style>
h1 { color: blue; }
</style>
<h1>Пример заголовка</h1>
`;
При использовании сборщиков (Webpack, Vite):
project/
dist/ // результат сборки
node_modules/
src/
package.json
vite.config.js
dist/ — скомпилированные JS и CSS для продакшена.src/ — все исходные файлы.package.json содержит зависимости и скрипты
сборки.Эта структура обеспечивает чистоту кода, масштабируемость проекта и упрощает сопровождение больших приложений на Slim.js, минимизируя проблемы с зависимостями и конфликтами стилей.