WebApp【公共组件库】@前端(For Git Submodule)
Tevin
2025-03-18 32d2e292be458cdbb25ca2ab9db42a04da30a496
知识库规则文档调整
1 files added
1 files renamed
5 files modified
165 ■■■■ changed files
_cursor.ai/rules/fit-base-fetcher.mdc 28 ●●●●● patch | view | raw | blame | history
_cursor.ai/rules/fit-base-pilot.mdc 8 ●●●● patch | view | raw | blame | history
_cursor.ai/rules/type-fetchers.mdc 31 ●●●●● patch | view | raw | blame | history
_cursor.ai/rules/type-pilot.mdc 40 ●●●●● patch | view | raw | blame | history
_cursor.ai/rules/type-surface.mdc 36 ●●●●● patch | view | raw | blame | history
_cursor.ai/文档说明.md 22 ●●●● patch | view | raw | blame | history
_cursor.ai/组件目录.md patch | view | raw | blame | history
_cursor.ai/rules/fit-base-fetcher.mdc
@@ -14,9 +14,7 @@
## 引用方法
```js
import {
    Fetcher
} from '@components/bases/Fetcher';
import { Fetcher } from '@components/bases/Fetcher';
```
## 构造函数
@@ -263,7 +261,7 @@
}
```
注意,为了保证接口数据的扩展性,data 只能接 Object 类型,禁止接其他类型
注意,为了保证接口数据的扩展性,**data 只能接 Object 类型**,禁止接其他类型
### 前端统一响应状态码
@@ -280,23 +278,31 @@
```js
import { Fetcher } from '@components/bases/Fetcher';
class FCommon extends Fetcher {}
// 请求集
class FCommon extends Fetcher {
    getUserInfo(user) {
        const url = this.spellURL('getUserInfo', 'User/info');
        const send = {..user};
        return this.post(url, send);
    }
}
// 全局单例
export const $fetchCommon = new FCommon();
```
```js
import {
    $fetchCommon
} from '@fetchers/FCommon';
import { $fetchCommon } from '@fetchers/FCommon';
export class PPageName extends Pilot {
// 数据控制器
export class PUserDetail extends Pilot {
    // 在数据控制层中,发请求示例
    onLoadUserInfo() {
        Taro.showLoading();
        $fetchCommon.getUserInfo(this.userId)
        // 调用请求集发请求示例
        $fetchCommon.getUserInfo({uid: this.userId})
            .then(res => {
                Taro.hideLoading();
                if (!res) {
_cursor.ai/rules/fit-base-pilot.mdc
@@ -17,9 +17,7 @@
## 引用方法
```js
import {
    Pilot
} from '@components/bases/Pilot';
import { Pilot } from '@components/bases/Pilot';
```
## 主要方法
@@ -151,9 +149,7 @@
```js
// 引入界面层对应数据控制器
import {
    PPageName
} from '@pilots/pilotGroup/PPageName';
import { PPageName } from '@pilots/pilotGroup/PPageName';
export default {
    name: 'PageName',
_cursor.ai/rules/type-fetchers.mdc
@@ -5,3 +5,34 @@
---
# 请求集
## 请求集空白模板
```js
/**
 * FCommon - 公用请求集
 * @author 作者
 */
import { Fetcher } from '@components/bases/Fetcher';
class FCommon extends Fetcher {
    constructor() {
        super({
            // url前缀(本地路径, 服务器路径)
            urlPrefix: ['/api/common/', '/serverPath/'],
        });
    }
    // 读取页面详情
    getPageDetail() {
        const url = this.spellURL('getPageDetail', 'page/Detail');
        const send = {};
        return this.post(url, send);
    }
}
export const $fetchCommon = new FCommon();
```
_cursor.ai/rules/type-pilot.mdc
@@ -5,3 +5,43 @@
---
# 数据控制器
## 数据控制器空白模板
```js
/**
 * PPageName - 页面名称
 * @author 作者
 */
import Taro from '@tarojs/taro';
import { Pilot } from '@components/bases/Pilot';
import { $fetchCommon } from '@fetchers/FCommon';
export class PPageName extends Pilot {
    $data() {
        return {};
    }
    $mounted() {
        this.onLoadDataResource();
    }
    // 加载用户详情
    onLoadDataResource() {
        Taro.showLoading();
        $fetchCommon.getPageDetail()
            .then(res => {
                Taro.hideLoading();
                if (!res) {
                    return;
                }
                // do something
            });
    }
}
```
说明:请求异常由请求层的基类自动处理,数据控制层跳过错误的逻辑,只处理请求成功的后续业务
_cursor.ai/rules/type-surface.mdc
@@ -5,3 +5,39 @@
---
# 界面
## 界面空白模板
```html
/**
* pageName - 页面名称
* @author 作者
*/
<template>
    <CPage>
        <CNavBar title="页面名称" />
        <CContent class="page-name">
            <!-- 页面内容 -->
        </CContent>
    </CPage>
</template>
<script>
import Taro from '@tarojs/taro';
import {} from 'taro-ui-vue';
import { PPageName } from '@pilots/pilotGroup/PPageName';
import { CPage, CContent, CNavBar } from '@components/layout/h5Page';
import './pageName.scss';
export default {
    name: 'PageName',
    components: {},
    ...new PPageName().createOptions(),
};
</script>
```
说明:
- H5 界面需要 CPage、CContent、CNavBar 这三个排版组件作为页面的基础布局
- 在小程序中则不需要,删除即可
_cursor.ai/文档说明.md
File was renamed from _cursor.ai/readme.md
@@ -2,15 +2,11 @@
## rules 文件夹
rules 是指编辑器根据一定条件自动读取的对 AI 的要求
> 注意:需要进行初始化
> 请双击执行项目根目录 `link-rules.cmd` 命令文件,将公共资源目录中的 rules 链接到编辑器中
> 然后在编辑器设置中查看是否链接成功(CursorSetting > Rules > ProjectRules)
rules 是指 AI 根据一定条件自动读取的工作环境设定,是我们控制项目代码生成质量的重要手段
### 规则类型:全局使用 `Always` 
所有的聊天(Agent、Ask、Edit)和 ctrl+k 编辑,都会参考此规则
所有的聊天(Agent、Ask、Edit)和 ctrl+k 编辑,都会参考此规则生成代码
- [系统角色](/src/components/_cursor.ai/rules/all-system-role.mdc)
- [项目介绍](/src/components/_cursor.ai/rules/all-project-info.mdc)
@@ -18,7 +14,7 @@
### 规则类型:按路径匹配 `Auto-Attached`
当路径规则匹配上时,会参考此规则
当文件名称或路径匹配上时,会参考此规则生成代码
- [请求集](/src/components/_cursor.ai/rules/type-fetchers.mdc)
- [数据控制器](/src/components/_cursor.ai/rules/type-pilot.mdc)
@@ -28,17 +24,21 @@
### 规则类型:自主决定 `Agent-Requested`
根据 Description 的文字描述,由 AI 自主决定是否需要参考此规则
仅 Agent 模式生效,非 Agent 模式需要我们自己 @ 此规则
在 Agent 模式下,由 AI 根据 Description 的文字描述,自主决定是否需要参考此规则生成代码
非 Agent 模式需要我们自己 @ 此规则才能生效
- [请求集基类](/src/components/_cursor.ai/rules/fit-base-fetcher.mdc)
- [数据控制器基类](/src/components/_cursor.ai/rules/fit-base-pilot.mdc)
- 表单验证规则
> 注意:rules 文件夹需要进行初始化
> 请双击项目根目录文件 `link-rules.cmd` 执行命令,将公共资源目录中的 rules 链接到编辑器中
> 然后在编辑器设置中查看是否链接成功(CursorSetting > Rules > ProjectRules)
## prompts 文件夹
prompts 是我们主动提问,和我们在聊天窗口叫 ai 干活一样
区别是对于经常执行的有具体要求的操作,固定下来方便反复使用
prompts 存放我们主动提出的指令
和我们在聊天窗口要求 ai 完成工作一样,就是对需要经常执行的有具体要求的操作,存下来方便反复使用
## 文档文件夹
_cursor.ai/组件目录.md