Astro Шаблон
Скачать
Заголовок раздела «Скачать»https://github.com/spaceappru/astro-template
Структура проекта
Заголовок раздела «Структура проекта»- Директорияbuild/ — собранный проект- Директорияcss/- custom-style.css — основной файл стилей
 
- Директорияfonts/- …
 
- Директорияimg/- …
 
- Директорияjs/- general.js — основной файл скриптов
- front-page.js — скрипты только для главной страницы
 
- index.html
 
- Директорияpublic/ — публичные файлы- Директорияfonts/ — шрифты- Директорияiconly/ — иконочный шрифт- …
 
 
- Директорияimg/ — изображения- …
 
- Директорияjs/ — скомпилированные скрипты- general.js
- front-page.js
 
 
- Директорияsrc/ — исходный код- Директорияcomponents/ — все компоненты- Layout.astro — главный layout
 
- Директорияpages/ — все страницы- index.astro — главная страница
 
- Директорияscripts/ — скрипты- Директорияentity/ — скрипты для компиляции- general.ts — общие скрипты для всех страниц
- front-page.ts — скрипты для главной страницы
 
- Директорияlib/ — отдельные скрипты- ymap3.ts — Яндекс.Карта
 
 
- Директорияstyles/ — стили- global.css — глобальные стили
- mixins.scss — SASS функции и миксины
 
 
Страницы
Заголовок раздела «Страницы»Страницы добавляются в директорию src/pages.
- Директорияsrc/ — исходный код- Директорияpages/ — все страницы- index.astro — главная страница
- contacts.astro — страница контакты
- product-detail.astro — детальная страница продукта
 
 
После сборки проекта, соответствующие html-файлы должны появиться в директории build.
- Директорияbuild/ — собранный проект- …
- index.html — главная страница
- contacts.html — страница контакты
- product-detail.html — детальная страница продукта
 
Компоненты
Заголовок раздела «Компоненты»Layout.astro
Заголовок раздела «Layout.astro»Основной компонент проекта, содержит базовый шаблон для всех страниц. В нём подключаются стили и скрипты, общие компоненты для всех страниц: Header, Footer и т.д.
- Директорияsrc/ — исходный код- Директорияcomponents/ — все компоненты- Layout.astro — главный layout
 
 
Компонент Layout.astro должен подключаться в каждой странице и быть родительским компонентом для остальных компонентов на странице.
---import Layout from "@components/Layout.astro";import Hero from "@components/Hero.astro";import Gallery from "@components/Gallery.astro";import ContactForm from "@components/ContactForm.astro";---
<Layout title="Главная страница" scripts={["front-page"]}>  <Hero />  <Gallery />  <ContactForm /></Layout>Скрипты
Заголовок раздела «Скрипты»Все скрипты пишутся в отдельных .ts файлах на языке TypeScript в директории src/scripts.
- Директорияsrc/ — исходный код- Директорияscripts/ — скрипты- Директорияentity/ — скрипты для компиляции- general.ts — общие скрипты для всех страниц
- front-page.ts — скрипты для главной страницы
 
- Директорияlib/ — отдельные скрипты- mask-phone.ts — макса телефона для input
- ymap3.ts — Яндекс.Карта
 
 
 
Добавление скрипта на страницу
Заголовок раздела «Добавление скрипта на страницу»Скрипты для подключения на страницы добавляются в директорию src/scripts/entity.
После сборки проекта (или скриптов отдельно), каждый ts-файл из директории src/scripts/entity транспилируется в js-файл в директории public/js и build/js.
Для добавления скрипта на страницу нужно создать новый файл в директории src/scripts/entity
- Директорияsrc/ — исходный код- Директорияscripts/ — скрипты- Директорияentity/ — скрипты для компиляции- general.ts — общие скрипты для всех страниц
- front-page.ts — скрипты для главной страницы
- product-detail.ts — скрипт для новой страницы
 
 
 
И передать название (без расширения файла) в массив пропса scripts компонента Layout
---import Layout from "@components/Layout.astro";---
<Layout title="Новая страница" scripts={["product-detail"]}>  ...</Layout>Вы можете подключить несколько скриптов, но рекомендуется к одной странице подключать только один скрипт.
Импорт скриптов
Заголовок раздела «Импорт скриптов»Скрипты для отдельных функций и компонентов добавляются в директорию src/scripts/lib и импортируются в скрипты src/scripts/entity.
- Директорияsrc/ — исходный код- Директорияscripts/ — скрипты- Директорияentity/ — скрипты для компиляции- front-page.ts — скрипты для главной страницы
 
- Директорияlib/ — отдельные скрипты- mask-phone.ts — макса телефона для input
 
 
 
import "@lib/mask-phone";