From 3b03f87a02458f719e2eb4bf112a13441b427d14 Mon Sep 17 00:00:00 2001 From: ‘chensiAb’ <‘chenchenco03@163.com’> Date: Tue, 25 Mar 2025 13:54:34 +0800 Subject: [PATCH] Merge branch 'master' of ssh://dev.zhiheiot.com:29418/mob-components --- _cursor.ai/rules/all-project-info.mdc | 128 ++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 128 insertions(+), 0 deletions(-) diff --git a/_cursor.ai/rules/all-project-info.mdc b/_cursor.ai/rules/all-project-info.mdc new file mode 100644 index 0000000..d4b6cef --- /dev/null +++ b/_cursor.ai/rules/all-project-info.mdc @@ -0,0 +1,128 @@ +--- +description: +globs: +alwaysApply: true +--- + +# 项目介绍 + +## 工程介绍 + +这是一套Web前端开发的工程文档,用于指导移动端(H5网页、混合App、小程序等)的开发 + +## 技术栈 + +- 语法框架:Vue(v2.5.0) +- 工程框架:Taro(v3.2.13) +- 显示框架:Taro-UI-Vue(v1.0.0-beta.10) +- 样式:Sass + +说明:使用时,优先使用公共组件库的组件,其次是 Taro-UI-Vue 的组件,最后才是 Taro 本身的基础元素组件 + +## 工程目录结构 + +工程主要目录及其用途 + +- root/(根目录) + - public/(静态资源目录) + - src/(开发源码目录) + - components/(公共资源目录) + - bases/(公共基类目录) + - common/(公共工具目录) + - forms/(公共表单组件目录) + - layout/(公共排版组件目录) + - plugins/(公共复杂组件目录) + - fetchers/(请求层目录) + - FName.js(请求集) + - pages/(界面层目录) + - pageGroup/(界面层分组目录) + - pageName/(界面层单页目录) + - cmpt/(界面子组件目录) + - CName.vue(子组件) + - cName.scss(子组件样式) + - page.vue(界面) + - page.scss(界面样式) + - pilots/(数据控制层目录) + - _overall/(全局数据控制目录) + - pilotGroup/(数据控制层分组目录) + - mixin/(混合件目录) + - MName.js(混合件) + - PName.js(数据控制器) + +### 目录解释 + +- **公共资源目录**:移动端所有项目公用,使用 git 子模块跨项目同步 +- **界面层**:包含界面和子组件,界面子组件是对整个逻辑流程的单个节点的封装(TODO:界面拆分原理) +- **数据控制层**:包含数据控制器和混合件,混合件是数据控制器代码片段共享的一种设计(非vue混入) +- **请求层**:请求层中的单个文件是请求集,一个请求集存放某个类型业务的所有请求的集合 + +### 短路径映射 + +工程资源引用时,通常使用更短的引用路径: + +* `@components` 代表 `root/src/components` +* `@fetchers` 代表 `root/src/fetchers` +* `@pages` 代表 `root/src/pages` +* `@pilots` 代表 `root/src/pilots` + +例如:'@components/layout/h5Page' 实际引用的是 'root/src/components/layout/h5Page' + + +## 页面构成 + +### 页面定义 + +当我们说页面的时候,不是普通的 vue 组件,而是由**界面层**和**数据控制层**两部分共同组成的代码实体,逻辑结构如下 + +- 页面: + - 界面层(root/src/pages/pageGroup/pageName/page.vue) + - 界面子组件(root/src/pages/pageGroup/pageName/cmpt/CName.vue) + - 数据控制层(root/src/pilots/pilotsGroup/PName.js) + - 请求层(root/src/fetchers/FName.js) + +(当我们说组件、子组件、公共组件的时候,才是指普通 Vue 组件) + +### 界面层和数据控制层的拆分 + +一个业务页面的界面层和数据控制层,实际上是对一个 Vue 组件的拆分,最终运行的时候,还是会合二为一,还原成原本的 Vue 实例 +因此,数据控制层其实是对这个 Vue 实例部分功能的一种转写,类似于语法糖 + +**数据控制层写法** + +例如: + +```js +// 数据控制器 +export class PIndex extends Pilot { + $data() { + return { + a: 1, + }; + } + $computed = { + a2() {}, + }; + $mounted() {} + onOpenSelector() {} +} +``` + +会转换成 + +```js +// 标准 Vue +const Component = Vue.extend({ + data() { + return { + a: 1, + }; + }, + computed: { + a2() {}, + }, + methods: { + onOpenSelector() {}, + }, + mounted() {}, +}); +``` \ No newline at end of file -- Gitblit v1.9.1