# project-config-template
**Repository Path**: NorthQh/project-config-template
## Basic Information
- **Project Name**: project-config-template
- **Description**: vue3 + ts 的基本配置集成,管理系统模板
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 2
- **Forks**: 0
- **Created**: 2022-07-21
- **Last Updated**: 2024-09-07
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 项目配置
## 关于node
> 存在.nvmrc文件,可以使用 `nvm use` 命令找到默认的节点版本
> 同样,如果未安装指定的节点版本,只需运行 。
- `nvm use`
- `nvm install`
## 配置推荐
- 使用`node 16.13.0`左右
- 使用`pnpm`
## 项目运行
- `pnpm install`
- `pnpm dev`
# 注意事项
项目实现顶层`await`,但是 `Suspense` 是一项实验性功能。它不一定会最终成为稳定功能,并且在稳定之前相关 API 也可能会发生变化。
# 组件描述
```html
handleClick(fun, 123)">
```
# vscode 配置
## Volar Takeover 模式
> 仅针对 VSCode + Volar。
为了让 Vue 单文件组件和 TypeScript 一起工作,Volar 创建了一个针对 Vue 的 TS 语言服务实例,将其用于 Vue 单文件组件。
同时,普通的 TS 文件依然由 VSCode 内置的 TS 语言服务来处理。这也是为什么我们需要安装 TypeScript Vue Plugin 来支持在 TS 文件中引入 Vue 单文件组件。
这套默认设置能够工作,但在每个项目里我们都运行了两个语言服务实例:一个来自 Volar,一个来自 VSCode 的内置服务。这在大型项目里可能会带来一些性能问题。
为了优化性能,Volar 提供了一个叫做“Takeover 模式”的功能。在这个模式下,Volar 能够使用一个 TS 语言服务实例同时为 Vue 和 TS 文件提供支持。
要开启 Takeover 模式,你需要执行以下步骤来在你的项目的工作空间中禁用 VSCode 的内置 TS 语言服务:
1. 在当前项目的工作空间下,用 `Ctrl + Shift + P` (macOS:`Cmd + Shift + P`) 唤起命令面板。
2. 输入`built`,然后选择`Extensions:Show Built-in Extensions`。
3. 在插件搜索框内输入`typescript` (不要删除 `@builtin` 前缀)。
4. 点击`TypeScript and JavaScript Language Features`右下角的小齿轮,然后选择`Disable (Workspace)`。
5. 重新加载工作空间。Takeover 模式将会在你打开一个 Vue 或者 TS 文件时自动启用。
## prettier配置
为确保使用的是项目配置文件,统一代码规范为主。需要开启根据配置文件进行格式化。
开启步骤
1. 开启设置,在搜索框输入 `prettier require config`
2. 勾选 `prettier: require Config`
3. 搜索 `Editor: format on save`
4. 勾选 `Editor: format On Save`
```json
"prettier.requireConfig": true
"editor.formatOnSave": true
```
# 图标渲染
## 基本使用
- 图标素材来自:https://icones.js.org/ 100多个图标集中有超过100,000个图标可用
- 配置了动态按需引入,直接复制名称当组件使用即可
- 以前缀 `i-` 开头
```html
```
## 动态渲染
[官网查询](https://docs.iconify.design/icon-components/vue/)
安装`@iconify/vue`
```base
npm install --save-dev @iconify/vue
```
并从中导入组件,组件导出为命名导出:
```js
import { Icon } from '@iconify/vue'
```
然后在模板中使用带有图标名称的图标组件作为图标参数:
```html
```
# hooks使用
## useLoading
```javaScript
const [loading, setLoading] = useLoading() // loading = false
// or
const [loading, setLoading] = useLoading(true) // loading = true
setLoading(false) // 将loading状态设置为false
setLoading() // loading状态取反
```
## usePage
```javaScript
const [page, loading, setLoading] = usePage() // { page: 1, size: 10 }
const [page, loading, setLoading] = usePage({ size: 100 }) // { page: 1, size: 100 }
```
## useCRUD 未完善 需要根据实际项目封装
```javaScript
import { useCRUD, usePage } from '~/hooks'
// 增查改删(create, read, update, delete)
// 一般对应 新增数据、获取数据、更新数据、删除数据 api
// list 为 read获取的表格数据
const { _on, list } = useCRUD({
read: fetchApiRead,
create: fetchApiCreate,
update: fetchApiUpdate,
delete: fetchApiDelete
})
const [page] = usePage({ size: 100 })
// 通过_on 函数监听、第二个值为api需要传递的参数
await _on('create', { username: 123 })
await _on('delete', [2])
await _on('update', { id: 1 })
await _on('read', page)
```