Структура проекта

Типичный проект Qwik выглядит так:

qwik-app-demo
├── README.md
├── package.json
├── public
   └── favicon.svg
├── src
   ├── components
      └── router-head
          └── router-head.tsx
   ├── entry.ssr.tsx
   ├── global.css
   ├── root.tsx
   └── routes
       ├── flower
          ├── flower.css
          └── index.tsx
       ├── index.tsx
       ├── layout.tsx
       └── service-worker.ts
├── tsconfig.json
└── vite.config.ts

Файлы проекта

src/routes/

Каталог src/routes/ является специальным каталогом для Qwik City, так как это каталог, в котором Qwik City будет искать ваши страницы. Папки и файлы в этом каталоге имеют особое значение, и они будут сопоставлены с URL-адресом вашего приложения.

  • src/routes/index.tsx — домашняя страница вашего приложения;
  • src/routes/layout.tsx — это корневой макет вашего приложения, все страницы будут отображаться внутри этого макета.

Дополнительную информацию см. в разделе Маршрутизация.

src/components/

Каталог src/components/ является каталогом по соглашению. Все стартовые шаблоны Qwik будут иметь этот каталог, но вы можете изменить его, если хотите. В этот каталог вы должны поместить свои компоненты, т. е. многократно используемые фрагменты кода, которые можно использовать в нескольких местах. Они не являются маршрутами или макетами, но их можно использовать внутри них.

Например, компонент Button должен находиться в файле src/components/button/button.tsx.

public/

Каталог public/ содержит статические ресурсы, такие как изображения, шрифты и иконки. Когда вы создаёте своё приложение, эти файлы будут скопированы в каталог dist/ и размещены в корневом каталоге.

Для получения дополнительной информации смотри раздел Конфигурация Vite.

src/entry.ssr.tsx

Точка входа SSR. Эта точка входа будет общей во всех случаях, когда приложение рендерится вне браузера.

  • Server (express, cloudflare...)
  • npm run start
  • npm run preview
  • npm run build

src/root.tsx

Файл src/root.tsx является точкой входа в дерево приложения. Это первый компонент, который будет визуализирован. Это корень дерева.

src/global.css

Файл src/global.css — это глобальный файл CSS-стилей. Если вам нужно определить какой-либо CSS, который используется в нескольких местах вашего приложения, вы можете определить его здесь.

Корневой компонент (src/root.tsx) импортирует этот файл по умолчанию.

tsconfig.json

Файл tsconfig.json содержит конфигурацию компилятора TypeScript. Это стандарт для любого TypeScript-проекта.

vite.config.ts

Для сборки проекта Qwik использует Vite. Файл vite.config.ts содержит конфигурацию Vite. Это стандарт для любого проекта Vite. Для получения дополнительной информации обратитесь к документации Vite.

Утилиты

В Qwik есть служебная команда new, которая позволяет разработчикам легко создавать новые компоненты и маршруты.

Допустим, вы хотите создать новый компонент под названием Button. Вы должны выполнить команду:

pnpm qwik new Button

Возможно, вы хотите создать новый маршрут для страницы /contact. Для этого можно использовать команду:

pnpm qwik new /contact

Следующие команды соответствуют файловой структуре каталогов Qwik, позволяя вам быстрее создавать компоненты.

Если мы сравним наш проект qwik-app-demo из начала данной страницы, то дополнительные изменения будут выглядеть следующим образом:

qwik-app-demo
├── README.md
├── package.json
├── public
   └── favicon.svg
├── src
   ├── components
      └── router-head
          └── router-head.tsx
          Button
          └── button.tsx
   ├── entry.ssr.tsx
   ├── global.css
   ├── root.tsx
   └── routes
       ├── flower
          ├── flower.css
          └── index.tsx
       ├── contact
          └── index.tsx
       ├── index.tsx
       ├── layout.tsx
       └── service-worker.ts
├── tsconfig.json
└── vite.config.ts

Если вы предпочитаете создавать компонент Button с соглашением об именах вида Button/index.tsx, вы можете использовать команду:

pnpm qwik new --barrel Button

В этом случае папка src/components будет выглядеть так:

src
   ├── components
      └── router-head
          └── router-head.tsx
          Button
          └── index.tsx

Эта возможность была добавлена в Qwik v1.2, и те, кто использует более старую версию, не увидят этой функциональности.

Участники

Спасибо всем участникам, которые помогли сделать эту документацию лучше!

  • manucorporat
  • steve8708
  • mhevery
  • dapids
  • thejackshelton
  • mrhoodz
  • whale2002
  • adamdbradley