소스 검색

优化规则

icssoa 5 달 전
부모
커밋
85d5b4d562
7개의 변경된 파일116개의 추가작업 그리고 88개의 파일을 삭제
  1. 7 7
      .cursor/rules/api.mdc
  2. 46 0
      .cursor/rules/cool.mdc
  3. 0 19
      .cursor/rules/template.mdc
  4. 19 19
      .cursor/rules/ucss.mdc
  5. 11 11
      .cursor/rules/uni-app-x-best-practices.mdc
  6. 23 21
      .cursor/rules/uts.mdc
  7. 10 11
      .cursor/rules/uvue.mdc

+ 7 - 7
.cursor/rules/api.mdc

@@ -4,10 +4,10 @@ globs: *.uts,*.uvue
 alwaysApply: false
 ---
 # API
-- 可以使用uts的api, 但注意版本和平台的兼容性.
-- 可以使用uni-app x的api, 但注意版本和平台的兼容性.
-- 可以使用vue3的api, 但注意版本和平台的兼容性.
-- 可以使用操作系统的api, 但注意版本和平台的兼容性. 尽量在uts插件中调用系统原生API, 而不是在uvue页面中直接调用系统原生API.
-- 特定平台或特定版本以上才能使用的代码, 需使用条件编译包围这些代码, 或者放置在平台专用的目录文件中.
-- 通过mcp工具查询项目下可用的插件
-- 跨页面通信优先使用eventbus
+- 可以使用uts的api,但注意版本和平台的兼容性。
+- 可以使用uni-app x的api,但注意版本和平台的兼容性。
+- 可以使用vue3的api,但注意版本和平台的兼容性。
+- 可以使用操作系统的api,但注意版本和平台的兼容性。尽量在uts插件中调用系统原生API,而不是在uvue页面中直接调用系统原生API。
+- 特定平台或特定版本以上才能使用的代码,需使用条件编译包围这些代码,或者放置在平台专用的目录文件中。
+- 通过mcp工具查询项目下可用的插件
+- 跨页面通信优先使用eventbus

+ 46 - 0
.cursor/rules/cool.mdc

@@ -0,0 +1,46 @@
+---
+description: 
+globs: *.uts,*.uvue
+alwaysApply: false
+---
+
+# ts
+
+- 所有方法必须在被调用之前进行定义,避免出现“先调用后定义”的情况。
+- 当使用 {} 进行对象赋值时,必须显式声明类型,例如:{} as Data,确保类型安全与规范。
+
+# setup
+
+- 页面参数请通过 props 接收,避免使用 onLoad 接口。
+
+# <template>
+
+- 页面无需手动在最外层包裹 <scroll-view class="flex-1" scroll-y>,因已由 <cl-page> 统一处理页面滚动。
+
+# cool-ui
+
+- 组件参数值必须为合法、准确且符合预期的类型和取值范围,避免传递无效或异常数值。
+
+# 图标
+
+- 图标样式名称的使用请参考 /icons 目录下已定义的命名。
+
+# 设计规范
+
+- 组件开发请参考 /pages/demo 下的代码示例,遵循其用法与风格。
+- 页面开发建议参照 /pages/template 下的标准模板,保持结构与规范一致。
+- 当页面底部需要展示按钮等操作区域时,建议统一使用 cl-footer 组件配合实现,确保交互区域风格和布局规范一致。
+
+# 页面模板代码
+
+```uvue
+<template>
+    <cl-page>
+        <view class="p-3"></view>
+    </cl-page>
+</template>
+
+<script lang="ts" setup>
+
+</script>
+```

+ 0 - 19
.cursor/rules/template.mdc

@@ -1,19 +0,0 @@
----
-description: Code template
-globs: *.uvue
-alwaysApply: false
----
-
-## 页面模板代码
-
-```uvue
-<template>
-    <cl-page>
-        <view class="p-3"></view>
-    </cl-page>
-</template>
-
-<script lang="ts" setup>
-
-</script>
-```

+ 19 - 19
.cursor/rules/ucss.mdc

@@ -4,39 +4,39 @@ globs: *.css,*.ucss,*.uvue,*.scss,*.less,*. sass
 alwaysApply: false
 ---
 # css rules
-ucss是css的子集, 但可以跨平台使用. 除了浏览器之外, 还支持App原生平台.
+ucss是css的子集,但可以跨平台使用。除了浏览器之外,还支持App原生平台。
 
 ## 布局规范
-- 禁用浮动、网格等布局, 仅使用flex布局或绝对定位
-- flex布局默认方向为垂直(通过 flex-direction:column 实现)
+- 禁用浮动、网格等布局,仅使用flex布局或绝对定位。
+- flex布局默认方向为垂直(通过 flex-direction:column 实现)
 
 ## 选择器规则
-- 仅支持基本的类选择器 (.class), 禁止使用其他选择器.
-- 类名必须符合 [A-Za-z0-9_-]+ 规范,禁止使用特殊字符(例如 @class)
+- 仅支持基本的类选择器 (.class),禁止使用其他选择器。
+- 类名必须符合 [A-Za-z0-9_-]+ 规范,禁止使用特殊字符(例如 @class)
 
 ## 文字样式规则
-- 文字内容需放置在组件 <text> 或 <button> 中. 文字类样式(color、font-size)只能设置在 <text> 或 <button> 组件上. 其他组件(如<view>)禁止设置文本相关样式
-- 文字样式不继承
-- 禁用继承相关关键字, 例如 inherit 和 unset
+- 文字内容需放置在组件 <text> 或 <button> 中。文字类样式(color、font-size)只能设置在 <text> 或 <button> 组件上。 其他组件(如<view>)禁止设置文本相关样式
+- 文字样式不继承
+- 禁用继承相关关键字,例如 inherit 和 unset。
 
 ## 层级控制
-- z-index 仅对同级兄弟节点生效
-- absolute 固定位与文档流分离,不支持分层覆盖
+- z-index 仅对同级兄弟节点生效
+- absolute 固定位与文档流分离,不支持分层覆盖
 
 ## 长度单位
-- 仅支持px、rpx、百分比. 字体的line-height支持em. 不能使用其他单位, 如vh.
-- 除非width需要根据屏幕宽度而变化才使用rpx单位. 其他场景不使用rpx单位.
-- 除非长度单位需要根据父容器大小而变化才使用百分比单位. 其他场景不使用rpx单位.
+- 仅支持px、rpx、百分比。字体的line-height支持em。不能使用其他单位,如vh。
+- 除非width需要根据屏幕宽度而变化才使用rpx单位。其他场景不使用rpx单位。
+- 除非长度单位需要根据父容器大小而变化才使用百分比单位。其他场景不使用rpx单位。
 
 ## at-rules
-- 仅支持`@font-face`、`@import`, 不使用其他at-rules
-- 如需使用`@media` 适配不同屏幕, 改用 uts 代码实现, 先通过API `uni.getWindowInfo`获取屏幕宽度, 再通过代码进行适配
-- 如需使用`@media` 适配暗黑模式, 改用 uts 代码 和 css变量 实现
-- 如需使用`@keyframes`, 改为通过UniElement对象的animate方法实现相同逻辑
+- 仅支持`@font-face`、`@import`,不使用其他at-rules。
+- 如需使用`@media` 适配不同屏幕,改用 uts 代码实现,先通过API `uni.getWindowInfo`获取屏幕宽度, 再通过代码进行适配。
+- 如需使用`@media` 适配暗黑模式, 改用 uts 代码 和 css变量 实现。
+- 如需使用`@keyframes`改为通过UniElement对象的animate方法实现相同逻辑
 
 ## css function
-- 仅支持 url()、rgb()、rgba()、var()、env(), 不使用其他css方法
+- 仅支持 url()、rgb()、rgba()、var()、env(),不使用其他css方法。
 
 ## 样式作用范围规则
-- 不使用css scoped
+- 不使用css scoped
 

+ 11 - 11
.cursor/rules/uni-app-x-best-practices.mdc

@@ -6,20 +6,20 @@ alwaysApply: true
 
 # Memory Bank
 
-你熟悉 uni-app x框架,擅长编写跨平台且高性能的代码.
-uni-app x项目使用UTS语言编写script. UTS是一种跨平台的强类型语言, 类似TS语言但类型要求更加严格.
+你熟悉 uni-app x框架,擅长编写跨平台且高性能的代码。
+uni-app x项目使用UTS语言编写script。 UTS是一种跨平台的强类型语言,类似TS语言但类型要求更加严格。
 
 ## Code Style and Structure
-    - 简洁易懂,复杂的代码配上中文注释.
-    - 严格类型匹配,不使用隐式转换.
-    - 不使用变量和函数的声明提升, 严格的在清晰的范围内使用变量和函数.
-    - 当生成某个平台专用代码时, 应使用条件编译进行平台约束,避免干扰其他平台.
+    - 简洁易懂,复杂的代码配上中文注释。
+    - 严格类型匹配,不使用隐式转换。
+    - 不使用变量和函数的声明提升,严格的在清晰的范围内使用变量和函数。
+    - 当生成某个平台专用代码时,应使用条件编译进行平台约束,避免干扰其他平台。
 
 ## project
-    - 遵循uni-app x的项目结构, 在正确的目录中放置生成的文件.
+    - 遵循uni-app x的项目结构,在正确的目录中放置生成的文件。
     
 ## page
-    - 使用uvue作为页面后缀名, uvue与vue基本类似, 但有少量细节差异.
-    - 生成的uvue页面放置在项目的pages目录下, 生成的页面需要在pages.json中注册.
-    - 可滚动内容必须在scroll-view、list-view、waterflow等滚动容器中. 如果页面需要滚动, 则在页面template的一级子节点放置滚动容器, 例如` <scroll-view style="flex:1">`. 此时应在 App 上使用条件编译, 例如: `<!-- #ifdef APP --><scroll-view class="container"><!-- #endif -->`
-    - 生成uvue页面时, 页面内容需符合uts.mdc、uvue.mdc、ucss.mdc、api.mdc约定的规范.
+    - 使用uvue作为页面后缀名,uvue与vue基本类似,但有少量细节差异。
+    - 生成的uvue页面放置在项目的pages目录下,生成的页面需要在pages.json中注册。
+    - 可滚动内容必须在scroll-view、list-view、waterflow等滚动容器中。如果页面需要滚动,则在页面template的一级子节点放置滚动容器,例如` <scroll-view style="flex:1">`。 此时应在 App 上使用条件编译,例如:`<!-- #ifdef APP --><scroll-view class="container"><!-- #endif -->`
+    - 生成uvue页面时,页面内容需符合uts.mdc、uvue.mdc、ucss.mdc、api.mdc约定的规范。

+ 23 - 21
.cursor/rules/uts.mdc

@@ -1,26 +1,28 @@
 ---
 description: 
-globs: *.uts,*.uvue,*.ts
+globs: *.uts,*.uvue
 alwaysApply: false
 ---
+
 # UTS Rules
-- 生成的脚本代码使用跨平台的UTS语言.
-- UTS语言类似ts, 但为了跨平台编译为kotlin、swift等强类型语言, 进行了约束.
-- UTS是强类型语言, 类型要求严格, 不能动态转换类型. 与kotlin等强类型语言一样.
-- 不能使用类型隐式转换. 尤其是条件语句(if、while、do-while、三元运算符、for 循环的条件部分)必须使用布尔类型作为条件. 当判断变量a是否为空时, 不能写成 `if (a)`, 或`if (!a)` 要写成 `if (a!=null)`
-- 可为null和不可为null的类型需要严格区分, 使用 `|null` 或 `?` 来定义可为空.
-- 可为null的数据类型在使用其属性或方法时, 需要判断不为null, 或者使用`?.`安全调用. 谨慎使用 `!.` 断言.
-- any类型的变量在使用其属性或方法时, 需要as为正确的相容类型.
-- 不支持object类型, 使用UTSJSONObject类型替代.
-- 不支持undefined, 变量使用前必须赋值.
-- 对象类型定义使用type而不是interface. interface是接口,不用于对象类型定义.
-- 变量和常量定义使用let和const,不使用var.
-- 不使用 JSX 表达式.
-- 不使用 with 语句.
-- 不使用ts的结构化类型系统. 使用名义类型系统, 强调类型名称和继承关系以确保类型安全.
-- 不使用 is 运算符. 使用 instanceof 和 as 进行类型保护.
-- 尽量不使用any.
-- 尽量不使用 === 和!==, 使用 == 和!= 替代.
-- 不使用js的原型链特性.
-- 更多参考: [uts与ts的差异](mdc:https:/doc.dcloud.net.cn/uni-app-x/uts/uts_diff_ts.html)
-  
+
+- 生成的脚本代码使用跨平台的UTS语言。
+- UTS语言类似ts,但为了跨平台编译为kotlin、swift等强类型语言,进行了约束。
+- UTS是强类型语言,类型要求严格,不能动态转换类型。 与kotlin等强类型语言一样。
+- 不能使用类型隐式转换。 尤其是条件语句(if、while、do-while、三元运算符、for 循环的条件部分)必须使用布尔类型作为条件。 当判断变量a是否为空时,不能写成 `if (a)`,或`if (!a)` 要写成 `if (a!=null)`。
+- 可为null和不可为null的类型需要严格区分,使用 `|null` 或 `?` 来定义可为空。
+- 可为null的数据类型在使用其属性或方法时,需要判断不为null,或者使用`?.`安全调用。 谨慎使用 `!.` 断言。
+- any类型的变量在使用其属性或方法时,需要as为正确的相容类型。
+- 不支持object类型,使用UTSJSONObject类型替代。
+- 不支持undefined,变量使用前必须赋值。
+- 对象类型定义使用type而不是interface。 interface是接口,不用于对象类型定义。
+- 变量和常量定义使用let和const,不使用var。
+- 不使用 JSX 表达式。
+- 不使用 with 语句。
+- 不使用ts的结构化类型系统。使用名义类型系统,强调类型名称和继承关系以确保类型安全。
+- 不使用 is 运算符。 使用 instanceof 和 as 进行类型保护。
+- 尽量不使用any。
+- 尽量不使用 === 和!==, 使用 == 和!= 替代。
+- 不使用js的原型链特性。
+- 严格遵守“先定义后使用”的规则。使用代码在定义代码之前。
+- 更多参考:[uts与ts的差异](https://doc.dcloud.net.cn/uni-app-x/uts/uts_diff_ts.html)

+ 10 - 11
.cursor/rules/uvue.mdc

@@ -8,17 +8,16 @@ alwaysApply: false
 
 ## vue support
 
-- 仅使用vue3语法, 避免使用vue2.
-- 新页面尽量使用组合式API.
-- 组件尽量使用easycom规范.
-- 非easycom的自定义vue组件,调用组件方法时需使用组件实例的`$callMethod`方式调用.
-- 不使用 pinia、vuex、i18n 等uni-app x不支持的vue插件.
-- 使用vue语法时需注意uni-app x官网的平台和版本兼容性, 平台特殊代码需包裹在条件编译中.
+- 仅使用vue3语法,避免使用vue2。
+- 新页面尽量使用组合式API
+- 组件尽量使用easycom规范
+- 非easycom的自定义vue组件,调用组件方法时需使用组件实例的`$callMethod`方式调用。
+- 不使用 pinia、vuex、i18n 等uni-app x不支持的vue插件
+- 使用vue语法时需注意uni-app x官网的平台和版本兼容性,平台特殊代码需包裹在条件编译中。
 
 ## component
 
-- 组件可使用uni-app x内置组件, 以及项目下的自定义组件. 通过mcp工具查询项目下可用的easycom插件.
-- 项目可使用vuejs组件规范,对应的文件扩展名为uvue.
-- 符合easycom规范的组件无需import和注册,可直接在template中使用.
-- 使用内置组件时需注意uni-app x官网的平台和版本兼容性, 平台特殊代码需包裹在条件编译中.
-- 所有组件都要使用双闭合标签,如:<image></image> <cl-image></cl-image>
+- 组件可使用uni-app x内置组件,以及项目下的自定义组件。通过mcp工具查询项目下可用的easycom插件。
+- 项目可使用vuejs组件规范,对应的文件扩展名为uvue。
+- 符合easycom规范的组件无需import和注册,可直接在template中使用。
+- 使用内置组件时需注意uni-app x官网的平台和版本兼容性,平台特殊代码需包裹在条件编译中。