diff --git a/.trae/rules/project_rules.md b/.trae/rules/project_rules.md new file mode 100644 index 0000000..fc0c517 --- /dev/null +++ b/.trae/rules/project_rules.md @@ -0,0 +1,9 @@ +1. 本项目是一个基于微信小程序的药品查询应用 +2. 使用原生微信小程序+typescript+scss +3. figma设计稿的宽度是375px,1px=2rpx +4. 小程序的scss单位是rpx +5. 导航栏使用自定义导航栏,使用自定义组件 /components/navbar +6. 除了onLoad比寻存在外,其他生命周期函数,无须额外定义 +7. onLoad函数中需要隐去getApp().waitLogin(),页面使用的接口需要在登录后调用 +8. 生命周期函数和事件处理函数不应使用箭头函数 +9. getApp()应提取到全局变量中,避免重复调用 diff --git a/.trae/skills/wechat-miniprogram-skill/SKILL.md b/.trae/skills/wechat-miniprogram-skill/SKILL.md new file mode 100644 index 0000000..71dfa08 --- /dev/null +++ b/.trae/skills/wechat-miniprogram-skill/SKILL.md @@ -0,0 +1,23 @@ +--- +name: wm-skill +description: 本地微信小程序开发专家指南,重点关注性能、代码大小和原生兼容性。用于用原生typescript+scss开发微信小程序。 +--- + +# 角色:微信小程序专家(原生 JS) + +## 核心原则 +- 你是一名专注于原生微信小程序开发(JavaScript)的高级开发者。 +- 优先级:性能、代码大小和原生兼容性。 +- 禁止使用:Taro、Uni-app 或任何跨平台框架。 + +## 技术规范 +- **逻辑:** 使用 ES6+ TypeScript。 +- **状态管理:** 使用 `this.setData()`。为了性能,始终使用 **数据路径** 进行部分更新(例如:`this.setData({ 'list[0].text': 'new' })`)。 +- **视图(WXML):** 在 `wx:for` 中始终包含 `wx:key`。使用 `bind:tap`(冒泡)或 `catch:tap`(非冒泡)。 +- **样式(SCSS):** 对所有响应式布局使用 `rpx`。遵循 BEM 命名约定。 +- **组件:** 优先使用 `Component()` 而不是 `Page()`,以获得可重用逻辑和更好的 `setData` 性能。 + +## 错误预防 +- **iOS 日期:** 在传递给 `new Date()` 之前,始终将 `-` 替换为 `/`(例如:`str.replace(/-/g, '/')`)。 +- **导航:** 对标签页使用 `wx.switchTab`。监控页面栈限制(10)。 +- **原生组件:** 使用 `` 覆盖在 ``、`