```metadata
{
"cover": "./public/wiki_cover.png",
"tag": "help",
"title": "如何使用 zzhack-cli 构建 WASM WebApp"
}
```
`zzhack-cli` 是一个帮助你快速生成一个 WASM WebApp 的工具,它的 UI 模板来自 [zzhack](https://github.com/zzhack-stack/zzhack),点击 [Live Demo](https://zzhack.fun) 了解更多。
--
中文文档 | [English](#)
### 快速开始
[zzhack](https://github.com/zzhack-stack/zzhack) 是 [Rust](https://www.rust-lang.org/) 编写的 webapp,所以你需要先准备 Rust 的开发环境,访问 [Rust Book](https://doc.rust-lang.org/cargo/getting-started/installation.html) 了解更多。
如果你已经有 [Rust](https://www.rust-lang.org/) 的开发环境了,但在开始之前你还需要安装一些前置依赖,复制下面的命令到你的终端以安装它们。
```sh
cargo install trunk zzhack
```
接下来让我们启动你的第一个 WASM WebApp 吧!
```sh
zzhack init & zzhack serve
```
## 配置
如果你需要更定制化你的 webapp,zzhack 提供一套[配置](#配置)让你可以根据配置来定制化你的应用,值得一提的是,你可以按需定制你的 webapp,除了 `pages` 是必须的其他都是可选的配置项。
```json
{
"app": {
// 应用名称,等同于
"name": "",
// 关键字,等同于
"keywords": "",
// 应用描述,等同于
"description": "",
// 应用 logo
"logo": ""
},
// 作者信息,它会被展示在文章渲染的地方
"profile": {
// 作者名称
"name": "zzhack",
// 作者头像
"avatar": ""
},
// 在 Header 展示 GitHub 按钮,快速链接到你的 GitHub
"github_bar":"https://github.com/mistricky",
// 指定你需要暴露的静态资源目录,如:
//
// "resource_dir": "./foo"
// |- bar.png
//
// 访问 domain/foo/bar.png 获取对应的静态资源
"resource_dir": "./foo",
// 页面配置,值得注意的是,pages 的第一个配置项为 “首页” 配置项,点击 logo 会返回首页
"pages": [
{
"name": "foo", // 页面名称,会应用在 tab 名称
"route": "home", // 路由名称(可选),如果没有指定会回退使用页面名称作为路由
"template": "post", // 页面 post 模板
"source": "./foo.md" // post 模板所需渲染的文章路径
},
{
"name": "posts",
"template": "posts", // 页面 posts 模板
"banner": "", // (可选)posts 模板 banner 图片
"source": "./posts" // posts 模板所需渲染的文章集合的路径
},
{
"name": "links",
"template": "links", // 页面 links 模板
"banner_text": "", // links 页面 banner 文字内容
"source": "./links.config.json" // links 模板所需配置文件
},
{
"name": "projects",
"template": "projects", // 页面 projects 模板
"source": "./projects.config.json" // projects 模板所需渲染的项目配置文件
}
],
"footer": {
"copyright": "", // 展示在 footer 最底部
// 在 footer 上展示联系方式
"contacts": [
{
"icon": "", // 联系方式的 icon
"link": "", // 联系方式点击后需要跳转的链接
"icon_size": 30 // (可选)icon_size 默认为 30
}
]
}
}
```
### GitHub Bar `github_bar`
![GitHub Bar](./public/github_bar.png)
## 静态资源
配置提供一个名叫 `resource_dir` 的字段能让你配置你的静态目录,例如:
```json
// zzhack.config.json
{
// ...
"resource_dir": "./public"
}
```
此时当前目录下的 `public` 会被直接映射到 `domain/public` 下。
值得一提的是,当 `zzhack.config.json` 中有配置图片资源时,配置里的图片资源路径都是相对于 `resource_dir` 的,例如:
```json
{
"resource_dir": "./public",
// ...
"app": {
// ...
"logo": "foo.png"
},
"profile": {
// ...
"avatar": "bar.png"
},
}
```
应用启动时会自动拼上 `resource_dir` 的路径,去 `./public/foo.png` 和 `./public/bar.png` 查找到这些静态资源。
## 模板
[zzhack](https://github.com/zzhack-stack/zzhack) 目前提供四种页面模板用于快速构建 wasm 应用页面。
- posts
- post
- links
- projects
### Posts
提供一种展示文章列表的模板:
- `source` 字段为提供文章集合的目录路径 (e.g. `"./posts"`)
- `banner` (optional) 头部 banner 图片路径(相对于 `resource_dir`)
![zzhack posts template](./public/zzhack_dark_mode.png)
### Post
提供一种单文章展示的模板:
- `source` 字段为提供文章集合的目录路径 (e.g. `"./post.md"`)
![zzhack post template](./public/zzhack_post_template.png)
### Links
提供一种展示友情链接页面的模板:
- `source` 字段为提供友情链接配置的路径 (e.g. `"./links.json"`)
- `banner_text` 友情链接 banner 处文案
![links template](./public/links_template.png)
**banner_text**
![links banner text](./public/links_banner_text.png)
一个友情链接配置形如:
```json
{
"links": [
{
"name": "zzhack 的博客",
"addr": "https://zzhack.fun",
"desc": "一个有血有肉的 WASM 站点",
"logo": "https://zzhack.fun/images/avatar.png"
},
]
}
```
### Projects
提供一种展示项目的模板
- `source` 字段为提供项目配置的路径 (e.g. `"./links.json"`)
- `banner_text` 项目页 banner 处文案
- `banner_link` (optional) 项目页点击 banner 跳转链接
![projects template](./public/projects_template.png)
## Happy Hacking!
如果 `zzhack-cli` 运行过程中发生 bug,或者你有任何关于提升的建议,或者文档堪错,或者你希望支持的定制化的方式,都可以通过 [邮件](mailto://mist.zzh@gmail.com) 联系我,也可以直接通过 [创建 issue](https://github.com/zzhack-stack/zzhack/issues/new) 向我反馈。