
作为一名全栈开发者,我始终对能提升开发效率的新工具和技术充满好奇。最近,我接手了一个名为“每日待办清单”(Daily Todo)的微信小程序项目。这次,我决定全程引入 AI 工具作为我的编程伙伴,记录下这场人机协作的真实体验。
协作场景:项目开发(初始搭建)
我的需求:我不想手动创建每个页面文件和配置文件,希望快速生成项目基础结构。
AI 提供的帮助:
我向 ChatGPT 发出指令:
“我正在开发一个微信小程序项目,项目名为‘DailyTodo’。请为我生成一个标准的小程序项目结构,包括 app.js, app.json, app.wxss,以及一个名为 ‘index’ 的页面页面,并包含该页面的 .js, .json, .wxml, .wxss 文件的基本模板代码。”
ChatGPT 迅速回复了一个结构清晰的代码块,包括:
app.json 中已注册了 index 页面和基本配置。app.js 中的 App() 函数模板。index.js 中的 Page() 函数模板,包含了基本的 data 数据。index.wxml 的一个简单视图框架。关键步骤与思考:
协作场景:代码开发(功能实现)
我的需求:实现“添加待办事项”的功能。需要在 index.js 中编写数据处理逻辑,并在 index.wxml 中构建对应的视图。
AI 提供的帮助:
在 index.js 中,当我开始输入函数名 addNewTodo 时,GitHub Copilot 根据我定义的 data 中的 todos 数组和函数名,自动补全了整个函数!
// 我刚开始输入 addNew
addNewTodo() {
// Copilot 自动补全了以下代码
const newTodo = {
id: Date.now(), // 使用时间戳作为唯一ID
title: this.data.newTodoText,
completed: false
};
this.setData({
todos: [...this.data.todos, newTodo],
newTodoText: '' // 清空输入框
});
}同时,在 index.wxml 中,当我输入 bindtap 时,Copilot 也准确地建议了 bindtap="addNewTodo"。
关键步骤与思考:
if (!this.data.newTodoText.trim()) {
wx.showToast({ title: '请输入内容', icon: 'none' });
return;
}协作场景:代码优化
我的需求:我使用 Array.prototype.splice 来删除一个待办项,但感觉这种方式在小程序的 setData 中显得有些笨拙,且可能引发渲染性能问题。
AI 提供的帮助:
我将代码片段发给 ChatGPT 并提问:
“在微信小程序中,我有一个待办事项数组
todos,我想根据 id 删除其中一项。以下是我的实现,有没有更优雅或性能更好的写法?”
ChatGPT 在肯定我当前方法可行的同时,提供了另一种更“函数式”且更清晰的写法:
Array.prototype.filter 直接创建一个新数组。// 原代码 (使用 splice)
removeTodo(id) {
const index = this.data.todos.findIndex(item => item.id === id);
if (index > -1) {
const todos = this.data.todos;
todos.splice(index, 1);
this.setData({ todos });
}
}
// ChatGPT 推荐的代码 (使用 filter)
removeTodo(id) {
this.setData({
todos: this.data.todos.filter(item => item.id !== id)
});
}关键步骤与思考:
filter 的写法更简洁,意图更清晰,且直接返回新数组,完美适合 setData。协作场景:问题排查
我的需求:在实现“本地缓存”功能时,我的 todos 数组无法被 wx.setStorageSync 正确存储,控制台报错。
AI 提供的帮助:
我将错误信息直接抛给 ChatGPT:
“微信小程序
wx.setStorageSync:fail parameter error: parameter should be string instead of object是什么意思?”
ChatGPT 迅速解释:wx.setStorageSync 的 data 参数必须是字符串类型。如果我试图直接存储一个对象,就会报这个错。它提供了解决方案:
JSON.stringify() 将对象转换为字符串再存储。JSON.parse() 再解析回来。// 存储
wx.setStorageSync('todos_cache', JSON.stringify(this.data.todos));
// 读取
const todosStr = wx.getStorageSync('todos_cache');
if (todosStr) {
this.setData({ todos: JSON.parse(todosStr) });
}关键步骤与思考:
在 AI 工具的辅助下,这个原本需要一天左右的迷你项目,我在3小时内就完成了开发和测试,效率提升非常显著。
最终效果:
核心经验总结:
总而言之,这次与 ChatGPT 和 GitHub Copilot 的结对编程体验非常愉快。它们已经不再是噱头,而是真正能融入开发流程、切实提升生产效率的强大工具。我强烈推荐每一位开发者都尝试将 AI 纳入你的工作流,找到最适合你的协作节奏,让人机协作成为你新的超能力。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。