微信小程序开发全流程:5个关键步骤从零搭建到上线运营
微信小程序开发这件事,一上来就卡在“到底该从哪下手”这个坎上。市面上教程要么只讲理论,要么只丢代码,很少告诉你真实开发中那些“坑”和“巧”。今天咱们就抛开那些套话,直接从实战角度聊透这件事。
先解决第一个核心问题:小程序到底能不能用个人账号做?被“个人主体不能做支付”吓住,其实大部分功能个人账号都支持。比如内容展示、工具类、社区类(但不能有用户打赏和虚拟商品)。我有个朋友用个人账号做了个“每日菜谱”小程序,靠广告点击月入几千,完全没问题。唯一要注意的是,个人账号不能做社交类(如评论互动)和电商类,如果你要做这两类,必须注册企业主体账号。
接下来是开发环境搭建:千万别直接装最新版工具。微信开发者工具有个特点——版本越新,坑越多。建议用稳定版(比如1.06.xxx系列)。安装时注意,一定要勾选“使用系统代理”,否则后面真机调试时会报“网络请求失败”。有个小技巧:打开工具后,先点右上角“详情”->“本地设置”,把“启用自定义处理命令”勾上,这样调试时能直接看到网络请求的完整日志,比默认的“调试器”好用10倍。
代码结构这块,被官方文档的“app.js、app.json、app.wxss”搞晕。其实核心就三件事:页面、组件、API调用。拿“页面”来说,每个页面文件夹里必须包含4个文件(.js、.json、.wxml、.wxss),但有个例外——如果你用uni-app或Taro这类框架,一个文件就能搞定。我强烈建议新手从原生开发开始,因为框架会隐藏很多底层逻辑,出了问题你根本不知道错在哪。比如原生里setData是同步还是异步?答案是:同步修改数据,异步渲染视图。如果你在setData后立刻获取视图高度,一定拿不到最新值,得用setTimeout或者nextTick。这个坑,框架不会告诉你。
关于云开发到底要不要用,这是个争议点。我的建议是:小项目用云开发,大项目自己搭服务器。云开发的好处是免运维,但有个致命问题——云函数冷启动。第一次调用云函数可能耗时3-5秒,用户直接跑了。解决办法是写个“预热云函数”,在app.js的onLaunch里调用一个空函数,让云函数提前激活。另外,云数据库的查询限制也要注意:单次查询最多返回20条,分页时必须用“startAt”和“limit”配合,千万别用.skip(),那个在数据量大了以后会巨慢。
真实开发中最容易踩的雷是图片处理。小程序对图片大小有限制:单张不超过5MB,且不能直接显示本地图片(必须上传到服务器或云存储)。很多新手在wxml里写“src=‘/images/logo.png’”,结果真机不显示——因为小程序不支持相对路径引用本地图片!正确做法是:把图片上传到云存储,或者用base64编码直接嵌入。但base64会让代码膨胀,建议小图标用字体图标(iconfont),大图用云存储链接。我习惯在微信开发者工具的“云开发”面板里建一个“images”文件夹,上传后右键“复制链接”,直接粘贴到代码里。
再说一个忽略的细节:页面跳转时怎么传对象?官方说用JSON.stringify转字符串,但如果你传的对象里包含undefined或循环引用,直接报错。我的解决办法是:用全局变量或缓存。在app.js里定义一个globalData对象,跳转前把数据存进去,目标页面从getApp().globalData读取。虽然看起来不够“优雅”,但稳定可靠。另一个技巧是使用wx.navigateTo的events参数,可以在跳转时传递回调函数,实现页面间通信,比用事件总线更直观。
关于性能优化,我分享一个没人提过的“土办法”:把不需要实时更新的数据存到本地缓存。比如用户基本信息,每次打开小程序都从服务器拉取,浪费流量又慢。正确的做法是:第一次登录时存到wx.setStorageSync,之后每次启动先读缓存,再异步更新。但注意,缓存大小限制是10MB,别把图片存进去。另外,列表渲染时一定要用wx:key,否则删除或排序时整个列表会重新渲染,卡得不行。wx:key的值最好用数据的唯一id,不要用index,否则动态增删时会有bug。
最后说上架审核那些事。被驳回的原因是“功能不完整”。比如你做了个“打卡”功能,但用户点打卡后没任何反馈,审核人员会认为你功能没做完。解决办法是:所有按钮点击后必须有响应,哪怕是弹个“功能开发中”的提示。还有,用户隐私协议必须写在“小程序设置”里的“用户隐私保护指引”中,光在页面里放个链接没用。我见过最奇葩的驳回理由是“没有注销账号功能”,虽然你的小程序根本不需要注册,但审核人员会要求你提供一个注销入口,哪怕只是弹个“联系客服注销”的提示。
如果你现在正卡在某个具体问题上,比如“wx.request请求报403”,大概率是因为域名没备案或没配白名单。小程序要求所有请求域名必须是https且已备案,还要在“小程序后台-开发-开发设置”里添加到request合法域名。有个小技巧:调试时可以用“不校验合法域名”选项,但上线前必须配好。另外,如果用了阿里云或腾讯云的服务器,记得在安全组里开放对应端口,否则请求会超时。
开发小程序就像拼乐高,每个零件都有它的脾气。别怕犯错,大不了删掉重来。当你第一次在小程序里看到自己写的“Hello World”在真机上跑起来时,那种感觉,比通关任何游戏都爽。

