使用 Trae 快速上手微信小程序开发

笔者最近需要为孩子班级开发一款小程序,用来统计孩子们每周的操行分数。

笔者只有后端开发经验,对于微信小程序的开发是一窍不通的。但是没关系,有了 Trae 的帮助,我们可以快速打破现有的技术壁垒,快速上手未知的技术领域。

我们下载好微信开发者工具,利用向导生成一个 Hello World 小程序。笔者觉得微信开发者工具使用体验远远逊于 Trae 啊,外接显示器时整个 IDE 的缩放老是有问题。

所以使用微信开发者工具创建完第一个 Hello World 的微信小程序后,我就把它抛弃了。打开 Trae,使用 Open Folder 功能,打开整个文件夹,发现有个 typings 文件夹,下面有很多 .d.ts 文件。

我询问了 Trae,这些 .d.ts 文件拿来干嘛的?Trae 耐心地解释:

在微信小程序项目中,typings 文件夹用于存放 TypeScript 的类型定义文件,它们为微信小程序的 API 和组件提供类型声明。这些文件通常来自以下几个来源:

  1. 微信官方提供的类型定义包(@types/wechat-miniprogram)
  2. 项目初始化时自动生成
  3. 开发者手动添加的自定义类型定义

这些类型定义文件(.d.ts)不会被编译到最终代码中,但它们在开发过程中为 TypeScript 编译器和 IDE 提供类型检查和代码补全功能,使开发更加高效和减少错误。从您项目中的文件可以看出,这些定义文件包含了微信小程序的组件、API、行为等类型定义。

有了理论基础,下面开始动手开发。 发出指令:

对这个微信小程序的代码进行修改,在小程序界面上随机出一道100以内的加减法口算题,提供一个输入框,让用户输入答案。如果用户答案正确,显示"恭喜你!".

如果用户答案错误,显示:"正确答案是:",并显示这道题的正确答案。

我觉得 Trae 对程序员比较有帮助的一点是,我们发出需求后,它会把如何实现这个需求的分析过程也显示出来,方便我们学习。

因为现在我对微信小程序开发还一窍不通,只有直接点击Accept All,看看 Trae 帮助我做了哪些修改:

点了 Accept 按钮之后,回到微信开发者工具进行预览,发现一次成功了,Trae 真的是太强了:

答对的情况:

答错的情况:

我学习了一下 Trae 生成的代码,在 Calc.js 的 Page 构造函数里,传递了一个巨大的 JSON 对象进去,这个对象里除了 data,onLoad 这些标准属性外,还有一个自定义函数 generateQuestion 负责生成随机题目。

并且在 app.json 里,自动将 calc 视图放在了 pages 数组的第一个位置,这样就将其设置成了首页。

Trae 还强调了 app.ts 里 App 构造函数的参数定义,对于我这个 Java 开发人员来说,这些类型安全的语言设计理解起来没有任何难度。

这段 TypeScript 代码:

typescript 复制代码
type Instance<T extends IAnyObject> = Option & T
    type Options<T extends IAnyObject> = Partial<Option> &
        T &
        ThisType<Instance<T>>

Instance<T extends IAnyObject> = Option & T 定义了小程序App实例的类型,它是Option接口(包含生命周期函数如onLaunch、onShow等)与泛型T的交叉类型。这意味着App实例不仅包含标准的生命周期方法,还可以包含开发者自定义的属性和方法。

Options<T extends IAnyObject> = Partial<Option> & T & ThisType<Instance<T>> 定义了创建App时传入的配置对象类型。这里有三个关键点:1)Partial<Option> 表示生命周期方法是可选的;2) 与泛型T的交叉使开发者可以添加自定义属性;3)ThisType<Instance<T>> 是TypeScript的特殊工具类型,它指定了配置对象中方法的this上下文类型,确保在方法内部可以正确访问App实例的所有属性和方法。

这种设计使微信小程序的App构造函数既保持了类型安全,又提供了足够的灵活性,允许开发者扩展App实例的功能。通过泛型和交叉类型的组合,实现了类型系统的可扩展性和代码提示的准确性,是TypeScript高级类型系统应用的典型案例。

相关推荐
ACCELERATOR_LLC1 分钟前
【DataWhale组队学习】DIY-LLM Task2 PyTorch 与资源核算
人工智能·pytorch·深度学习·大模型
Elastic 中国社区官方博客24 分钟前
Elastic Security、Observability 和 Search 现在在你的 AI 工具中提供交互式 UI
大数据·运维·人工智能·elasticsearch·搜索引擎·安全威胁分析·可用性测试
一碗白开水一30 分钟前
【目标跟踪综述】目标跟踪近3年技术研究,全面了解目标跟踪发展
人工智能·计算机视觉·目标跟踪
Promise微笑1 小时前
AI搜索时代的流量重构:GEO优化深度执行细节与把控体系
人工智能·重构
言萧凡_CookieBoty1 小时前
比 Vibe Coding 更可怕的,是 Vibe Design 吧
人工智能·ai编程
Rick19931 小时前
Spring AI 如何进行权限控制
人工智能·python·spring
Theodore_10221 小时前
深度学习(15):倾斜数据集 & 精确率-召回率权衡
人工智能·笔记·深度学习·机器学习·知识图谱
IT_陈寒1 小时前
SpringBoot自动配置这破玩意儿又坑我一次
前端·人工智能·后端
TechubNews1 小时前
Base 发布首个独立 OP Stack 框架的网络升级 Azul,将是 L2 自主迭代的开端?
大数据·网络·人工智能·区块链·能源
啦啦啦_99992 小时前
1.机器学习概述
人工智能·机器学习