用户名:{{ mainStore.name }}
长度:{{ mainStore.nameLength }}
```

### actions
> 这里与 `Vuex` 有极大的不同,`Pinia` 仅提供了一种方法来定义如何更改状态的规则,放弃 `mutations` 只依靠 `Actions`,这是一项重大的改变。
`Pinia` 让 `Actions` 更加的灵活:
- 可以通过组件或其他 `action` 调用
- 可以从其他 `store` 的 `action` 中调用
- 直接在 `store` 实例上调用
- 支持`同步`或`异步`
- 有任意数量的参数
- 可以包含有关如何更改状态的逻辑(也就是 vuex 的 mutations 的作用)
- 可以 `$patch` 方法直接更改状态属性
```ts
import { defineStore } from 'pinia'
export const useMainStore = defineStore({
id: 'mian',
state: () => ({
name: '超级管理员',
}),
getters: {
nameLength: (state) => state.name.length,
},
actions: {
async insertPost(data: string) {
// 可以做异步
// await doAjaxRequest(data);
this.name = data
},
},
})
```
## 环境变量配置
> `vite` 提供了两种模式:具有开发服务器的`开发模式`(development)和`生产模式`(production)
项目根目录新建:`.env.development` :
```env
NODE_ENV=development
VITE_APP_WEB_URL= 'YOUR WEB URL'
```
项目根目录新建:`.env.production` :
```env
NODE_ENV=production
VITE_APP_WEB_URL= 'YOUR WEB URL'
```
组件中使用:
```js
console.log(import.meta.env.VITE_APP_WEB_URL)
```
配置 `package.json`:
> 打包区分开发环境和生产环境
```json
"build:dev": "vue-tsc --noEmit && vite build --mode development",
"build:pro": "vue-tsc --noEmit && vite build --mode production",
```
## 使用组件库 Naive UI
> 组件库选择,这里我们选择 `Naive UI` 至于为什么选择它?我可以直接说`尤大大`推荐的吗?
- 官方介绍:
- 一个 `Vue 3` 组件库
- 比较完整,`主题可调`,使用 `TypeScript`,不算太慢
- 有点意思
介绍还是比较谦虚的,既然`尤大`推荐,肯定有它的优势了!!!
### 安装 Naive UI
```bash
# 安装 组件库
yarn add naive-ui
# 安装 字体
yarn add vfonts
```
### 如何使用
```js
import { NButton } from 'naive-ui'
;