项目结构
一个典型的 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 入口点,在所有情况下,应用程序都在浏览器之外渲染,这个入口点将是通用的。
- 服务器 (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/index.tsx 命名约定生成 Button 组件,你可以使用以下命令:
pnpm qwik new --barrel Button在这种情况下,src/components 文件夹的结构将如下所示:
src
│ ├── components
│ │ └── router-head
│ │ └── router-head.tsx
│ │ Button
│ │ └── index.tsx此功能在 Qwik v1.2 中添加,使用较旧版本的用户将无法看到此功能。