# 快应用 图书模版

## 1、文件结构

```
├── sign                # 存储 rpk 包签名模块;
│   ├── debug           # 调试环境证书/私钥文件
│   └── release         # 正式环境证书/私钥文件
└── src
│   ├── assets          # 公用的资源(images/styles/字体...)
│   │   ├──images       # 存储 png/jpg/svg 等公共图片资源
│   │   └──styles       # 存放 less/css/sass 等公共样式资源
│   │   └──js           # 存储公共 javaScript 代码资源
│   │   └──data         # 模拟数据（开发时应使用真实接口数据）
│   │   └──iconfont     # 存放图标字体
│   ├── helper          # 项目自定义辅助各类工具
│   │   ├──apis         # 存储与后台请求接口相关(已封装好)
│   │   ├──ajax.js      # 对系统提供的 fetch api 进行链式封装
│   │   └──utils        # 存放项目所封装的工具类方法
│   ├── pages           # 统一存放项目页面级代码
│   ├── app.ux          # 应用程序代码的人口文件
│   ├── manifest.json   # 配置快应用基本信息
│   └── components      # 组件
└── package.json        # 定义项目需要的各种模块及配置信息
```

## 2、如果需要轻粒子统计功能服务

首先需要前往轻粒子官网注册, 在创建应用之后可以获得app_key，
然后需要在 `/src/assets/js/statistics.config.js` 文件中配置好自己的app_key。

## 3、模版说明

本项目为快应用图书模版。

`main` 页面：
- 书架：
    - 编辑：点击“编辑”，可以删除收藏图书，点击“完成”确认删除，点击“取消”则取消删除操作。
    - 点击收藏的图书，进入 `book-content` 页面。
- 书城：
    - 点击图书的swiper、榜单、列表，进入 `book-detail` 页面。
    - 滚动到底部，加载更多图书。
- 查找：
    - 输入框：填写内容后，按 “enter” 或点查询按键，进入 `search` 页面；如果输入框为空，则提示“输入不能为空”。
    - 大家都在搜：点击图书标签，进入 `search` 页面；点击刷新按键，更新图书标签。

`book-content`页面：
- 图书内容。
- 点击“上一章/下一章”，切换章节。
- 点击“目录”，进入 `contents` 页面。

`book-detail` 页面：
- 图书信息：图片、标题、评分、作者、字数、简介。
- 章节：点击进入 `contents` 页面。
- 热门评论：点击进入 `comment-all` 页面。
- 相似图书推荐：点击图书，进入 `book-detail` 页面。
- 加入书架：点击将图书加入书架，在 `main` 页面 - “书架” 可以查看加入的图书。
- 开始阅读：点击进入 `book-content` 页面。

`search` 页面：
- 进入页面时，根据带入的初始值进行查询。
- 输入框：填写内容后，按 “enter” 或点查询按键，展示搜索结果（只有搜索到 `src/assets/data/book-list.js` 中的图书）；点击搜索出的图书，进入 `book-detail` 页面。


`contents`页面：
- 图书目录。
- 点击“倒序/正序”图标，切换目录排序。
- 点击“上一页/下一页”，切换目录页面。
- 点击章节，进入 `book-content` 页面。

`comment-all` 页面
- 滑动到底部，加载更多评论。
- 点击“发表评论”，进入 `comment` 页面。
- 点击评论下的消息图标，进入 `comment-reply` 页面。

`comment` 页面、`comment-reply` 页面：
- 填写评论或回复。


## 4、如何使用

### 4.1 快应用开发工具调试(推荐 ✅✅)
推荐下载[快应用开发工具](https://www.quickapp.cn/docCenter/IDEPublicity)，可以进行扫码调试/usb调试，还有web预览、语法提示等功能。使用方法，请参见[快应用开发工具文档](https://doc.quickapp.cn/tutorial/ide/overview.html)。

### 4.2 命令行调试
```bash
cd book-template && yarn
yarn start # 推荐 ✅✅

# 或者运行以下命令
yarn server & yarn watch

# 或者在终端一 Tab 下运行：
yarn server
# 在终端另一 Tab 下运行：
yarn watch

# ✨ 新增「快应用」页面
yarn gen YourPageName
```

用一台 `Android` 手机，下载安装[「快应用」调试器](https://www.quickapp.cn/docCenter/post/69)，打开后操作`扫码安装`，扫描如上命令生成的二维码，即可看到效果；更多讯息，请参见[快应用环境搭建](https://nice.lovejade.cn/zh/article/develop-quick-app-experience-notes.html#环境搭建)。


## 5、Tips:

-  **更优雅的处理数据请求**；采用 `Promise` 对系统内置请求 `@system.fetch` 进行封装，并抛出至全局，使得可以极简的进行链式调用，并能够使用  `finally`；

-  **内置样式处理方案**；「快应用」支持 `less`, `sass` 的预编译；这里采取 `less` 方案，并内置了部分变量，以及常用混合方法，使得可以轻松开启样式编写、复用、修改等；

-  **封装常用方法**；在 `helper/utils` 路径下，有对日期、字符串、系统等常用方法，分别进行封装，统一暴露给 `global.$utils`，使得维护方式更加合理且健壮，同时又可以便捷的使用，高效开发；当然，你也可以根据需要自行增删、抑或扩展；

- **简化开始开发流程**； 注入 [Concurrently](https://github.com/kimmobrunfeldt/concurrently) 插件，使可以运行 `yarn start` 即可开始开发，而无需更多命令，从而简洁开发流程；

-  **添加新增页面命令脚本**；如果需要新建页面，只需运行：`yarn gen YourPageName` ，当然，也可以根据需要，自行定定制模板：*/command/gen/template.ux*；

-  **集成 [Prettier](https://prettier.io/) & [Eslint](https://eslint.org/)**；在检测代码中潜在问题的同时，统一团队代码规范、风格（`js`，`less`，`scss`等），从而促使写出高质量代码，以提升工作效率(尤其针对团队开发)；

-  **新增文件监听命令**：引入 [onchange](https://github.com/Qard/onchange) 依赖来监听文件变化；开发时，运行 `yarn prettier-watch` 命令，即可对所修改的 `*.ux` `*.js` 等文件，进行 **Prettier** 格式化，从而大幅度提升编写效率；

-  **优化本地开发端口设定**；「快应用」默认端口为 `12306`，可自定义端口，但使用体验却不够友好；此处参考 `creat-react-app` 设定，对本地开发地址端口使用进行优化：如果指定端口(默认: `8080`)被占用，则向上递增寻找新的可用端口(如：8081 / 8082 / … )；

-  **浏览器打开调试主页二维码**；运行 `yarn start`，会启动 HTTP 调试服务器，并将该地址在**命令行终端**显示，手机用快应用调试器扫码，即可下载并运行 rpk 包；当终端积累的信息流多了，就造成扫码不便，故增设在浏览器打开调试主页二维码；如想不使用此功能，在 _command/server.js_ 文件中，将 `autoOpenBrowser` 设置为 `false` 即可；

## 6、内置命令

|  命令 | 描述  | 备注 |
|---|---|---|
| `yarn start`  | 开启服务(server)和监听(watch)  | 附魔[多步优化](https://nice.lovejade.cn/zh/article/quickapp-boilerplate-template.html#%E6%94%B9%E8%BF%9B%E4%BC%98%E5%8A%BF)，一键开启开发|
| `yarn server`  | 开启服务(server)  | 如不嫌麻烦，可使用，不推荐 |
| `yarn watch`  | 开启监听(watch)  | 如不嫌麻烦，可使用，不推荐 |
| `yarn build ` | 编译打包，生成 `rpk`包  | 对内置 `hap build` 命令的转接 |
| `yarn release ` | 生成 `rpk`包并增加签名  | 对内置 `hap release` 命令的转接  |
| `yarn gen `  | 新增「快应用」页面 | 助你高效生成页面，模版可自定义，推荐 ✓|
| `yarn prettier`  | 一键美化代码(js/css/less/ux)  | 实在是团队开发好帮手，推荐 ✓ |
| `yarn prettier-watch`  | 对变化代码文件格式、实时美化 | 极大提升代码编写效率，强烈推荐 ✔️|

