# FxBootUi

## 一、开发准备

### 1.开发工具：VsCode

### 2.安装插件

打开项目后右下角会有建议安装，选择安装即可，也可自己一个个搜索安装

- Vue.volar
- EditorConfig.EditorConfig
- esbenp.prettier-vscode
- dbaeumer.vscode-eslint
- ravenq.vscode-goto-node-modules
- formulahendry.auto-rename-tag
- mhutchie.git-graph

## 二、快速入门

### 1.修改项目信息

配置根目录的`package.json`，修改项目名和版本号

```json
{
  "name": "fxboot-ui",
  "version": "0.1.0"
}
```

### 2.安装依赖

```shell
# 若未安装pnpm请先执行npm i -g pnpm
pnpm i
```

### 3.运行

```shell
pnpm dev
```

## 三、代码管理

### 1.配置用户名和邮箱

将以下命令中 `yourName` 和 `your@email.com` 替换为你的用户名和邮箱并执行

```shell
git config user.name yourName
git config user.email your@email.com
```

### 2.非 windows 系统可能需要先执行命令

```shell
chmod 755 .husky/pre-commit
chmod 755 .husky/commit-msg
```

### 3.保存变更文件

使用 `git add xxx` 或 VsCode 左侧的源代码管理面板提交变更文件

### 4.提交代码

执行命令后，按提示输入内容即可

```shell
pnpm cz
```

### 5.推送到仓库

```shell
git push
```

### 6.查看提交记录

通过`菜单栏->查看->命令面板`（或快捷键打开也可），输入`git log`，选择建议项`Git Graph: View Git Graph (git log)`即可

## 四、部署

### 1.配置镜像

配置根目录的 `deploy.sh` 文件，修改 `HUB` 为你的镜像地址

```shell
HUB=registry.cn-hangzhou.aliyuncs.com/rsjst
```

### 2.打包

```shell
sh deploy.sh
```

### 3.部署

配置 dockerSwarm 的 stack 中的 image 为打包的镜像即可，例如

```yml
version: '3.7'
services:
  fx-boot-ui:
    image: registry.cn-hangzhou.aliyuncs.com/rsjst/fx-boot-ui:0.1.0
    environment:
      # 配置为服务器的ip地址:后端端口
      PROXY_PASS: http://192.168.1.1:8020/
    ports:
      # 映射为4000端口
      - 4000:80
    # 下述配置实现热更新，不需要可去除
    deploy:
      mode: replicated
      replicas: 1
      update_config:
        delay: 5s
        order: start-first
```

### 4.配置 nginx

配置服务器上的nginx，代理转发到前端端口

```nginx
location / {
  proxy_pass http://127.0.0.1:4000/;
  proxy_set_header Host $host:$server_port;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
```

## 五、技术要点

Vue 3 + Typescript + Vite

- 编程语言：TypeScript 4.x + JavaScript
- 构建工具：Vite 3.x
- 前端框架：Vue 3.x
- 路由工具：Vue Router 4.x
- 状态管理：Pinia
- UI 组件库：Arco
- UI 组件库：Crco
- CSS 预编译：Sass
- HTTP 工具：Axios
- Git Hook 工具：husky + lint-staged
- 代码规范：EditorConfig + Prettier + ESLint + Airbnb JavaScript Style Guide
- 提交规范：Commitizen + Commitlint


## 六、相关文档

### 1.Vue3.X
[快速上手｜Vue.js](https://cn.vuejs.org/guide/quick-start.html)

### 2.Pinia
[Pinia](https://pinia.vuejs.org/)

[Pinia Demo](./src/store/README.md)

### 3.Arco
[Arco 组件库](https://arco.design/vue/component/button)

### 4.Crco
[Crco 组件库](https://crco.seepine.com)

或从 `/src/views` 中任意子目录中，皆可查看 `crco` 的应用案例，例如 `/src/views/recruit/resume`
