使用 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高级类型系统应用的典型案例。

相关推荐
AiTop1005 小时前
腾讯推出AI CLI工具CodeBuddy,国内首家同时支持插件、IDE和CLI三种形态的AI编程工具厂商
ide·人工智能·ai·aigc·ai编程
山楂树下懒猴子6 小时前
ChatAI项目-ChatGPT-SDK组件工程
人工智能·chatgpt·junit·https·log4j·intellij-idea·mybatis
Learn Beyond Limits6 小时前
The learning process of Decision Tree Model|决策树模型学习过程
人工智能·深度学习·神经网络·学习·决策树·机器学习·ai
AI360labs_atyun6 小时前
2025世界智博会,揭幕AI触手可及的科幻生活
人工智能·ai·音视频·生活
luoganttcc6 小时前
小鹏汽车 vla 算法最新进展和模型结构细节
人工智能·算法·汽车
算家计算6 小时前
面壁智能开源多模态大模型——MiniCPM-V 4.5本地部署教程:8B参数开启多模态“高刷”时代!
人工智能·开源
居然JuRan6 小时前
从零开始学大模型之大语言模型
人工智能
扑克中的黑桃A7 小时前
AI 对话高效输入指令攻略(一):了解AI对话指令
人工智能
算家计算7 小时前
不止高刷!苹果发布会AI功能全面解析:实时翻译、健康监测重磅升级
人工智能·apple·资讯
m0_677034357 小时前
机器学习-异常检测
人工智能·深度学习·机器学习