在小程序开发中,你的身份把这一过程进行记录并分享
发表时间:2023-10-17 17:45:10
文章来源:炫佑科技
浏览次数:213
菏泽炫佑科技 菏泽炫佑小程序开发 菏泽炫佑app制作 炫佑科技
在小程序开发中,你的身份把这一过程进行记录并分享
微信小程序已经存在很长时间了。 经过市场的考验,他们已站稳脚跟,并已融入各行各业。 市场需求的激增导致了开发的短缺。 如今各大招聘网站也能看到小程序。 提供小程序开发职位。 正好公司有业务需求,现在开始涉足小程序开发。 作为一个初学者,我将这个过程记录下来并分享,希望通过与朋友的交流来提高自己。
其实只要有一些编程基础,上手是非常简单的。 只要你能按照官方文档走完流程,就算是入门了。 现在,与早期不同,官方文档被批评为与shi一样的写法,所以强烈建议大家仔细阅读官方文档==。 经常在沟通的时候,我看到有人问一些官方文件里写得很清楚的事情。 这是一件非常悲伤的事情。
有些问题在官方文档中找不到。 您可以在官方开发社区输入关键字进行查看。 基本上前期遇到的问题都可以解决。 如果这两个地方都不能解决你的困惑,可以去交流群提问或者查看第三方论坛,比如快手-微信开发平台。 甚至据说有的学生喜欢看视频,网上可以找到。 当然,也建议大家用实际的结论和个人的理解进行交流,这样更容易得到答案,个人成长也会更快。
1、开发准备
与以往的项目不同,开发只需编写代码即可。 在小程序开发中,尤其是个人项目中,开发需要兼顾开发、运维、推广、客服等多项工作,虽然这一切都是由微信管理后台提供的,但是开发还是需要让进行相关配置以保证项目的运行。
1.小程序注册
小程序可以理解为在微信市场注册的小商户,因此每个小程序都需要在微信公众平台注册一个账号进行管理。 这个账号可以为我们提供小程序的唯一标识AppId,也可以帮助我们管理小程序,协助我们完成编码开发以外的事情。 注册方式主要有两种:
1.1 官网注册
立即注册->小程序
1.2 已有公众账号后台(不支持个人公众账号)
小程序->小程序管理->快速注册和认证小程序
补充:
- 注册账户时,注意账户类型并选择小程序
-小程序目前不支持更改主题(个人/企业),注册时请勿选错类型
- 个人小程序不支持某些权限:如微信用户手机号、微信支付、微信优惠券等。
- 同一邮箱地址不能注册多个公众平台账号。 您可以使用同一个微信帐号登录多个公众平台帐号。
- 多人管理开发,均使用同一账号登录,扫微信码确认登录; 其他人(非管理员)的微信账号可以通过配置用户身份登录权限来拥有此功能
- 企业需要进行主体信息认证,时间较长,费用300元。 通过后不可更改,请认真填写。
- 绑定开发并赋予不同的权限
2.开发工具
下载链接
基本上很容易使用。 毕竟是中文版。 只需下载它并按照说明创建一个新项目即可启动它。 或者下载此演示源代码并将其作为项目运行。 整个开发工具还是蛮清爽的,有小霸王N合一的感觉。 模拟器、编辑器、调试器都非常直观,可以通过左上角的按钮来显示和隐藏。 做过前端开发的人都比较熟悉,这里不再赘述。 说一下一些常用的功能键:
2.1 预览与远程调试
真机调试方案有两种,分别有不同的适用场景和注意事项:
- 预览
- 需要扫描具有开发权限的微信账号才能使用。 经常被其他人用来在*新的代码发布之前体验一下。
- 只有当IDE登录微信账号进行扫描时,才与IDE共享缓存(此时清除IDE的缓存会影响真机)
- 可以开启调试模式(微信右上角菜单->打开调试),通过按钮显示真机调试区域
- 看不到请求的具体信息,只能通过控制台打印
- 远程调试
- 在PC上可以看到真机的控制窗口,常用于配合测试人员重现问题
- 独立于IDE缓存,即A账户登录远程调试成功后,B账户进入远程调试,看到A账户的信息。
- 此时无法使用IDE清除缓存。 只能在远程调试窗口中执行wx.()。
-也不
2.2 清除缓存
在开发和测试过程中,需要经常模拟登录和授权的不同处理结果。 这种情况下就需要使用缓存清除功能。 IDE 提供了以下功能,可以一次性清除所有项目,也可以清除特定项目。 真机调试对应的实现如下:
- 清除代码缓存
- 相当于真机调试——删除小程序,重新加载代码
- 清除授权缓存
- 相当于真机调试 - 微信右上角菜单->关于xxx->右上角菜单->设置
- 清除数据缓存
- 相当于真机调试- -> -> 点击wx.()
- 清除网络缓存
- 尚不清楚如何清除网络缓存以进行真机调试。 对于静态资源,添加时间戳。
- 注意,相同的时间戳对应相同的资源缓存
- Date.parse(new Date()).().slice(0, 8) 固定间隔 100s
- Date.parse(new Date()) / (space * 60 * 1000) 根据空格设置间隔
- 清除登录缓存
- 由于是静默登录,所以一般会忽略缓存。
2.3 上传
开发完成后,小程序发布之前,需要将代码上传到微信的服务器。 上传时需要注意以下几点:
- 每个有开发权限的账号都可以上传,每个账号上传的代码都是独立的。
- 每个人只能保留一份上传的代码,第二次上传将覆盖它。
- 微信公众平台/开发管理
- 在线版本
- 审查版本
- 显示正在审核中的版本和已审核但未发布的版本
- 一次仅显示一个版本
- 首次审核周期较长,需要3-5个工作日,后续审核会更快。
- **次审核严格,需要注意很多问题,比如诱导分享等。 详情请参见【常见拒绝场景】(#36-UI-%E8%A7%84%E8%8C%83)
开发版本
- 每个版本都可以设置为体验版,但同时只有一个体验版,有体验者权限的人可以通过二维码进行测试。
- 每个版本都可以提交审核,但同时只有一个版本在审核中
- 每个帐户维护一个开发版本
2.4 详细信息(IDE右上角)
- 项目设置
- 可以选择调试基础库来测试兼容性问题(有兼容性问题的API已经写入*低版本,也可以查看【历史更新日志】()了解更多)
- 未设置合法域名时,可以勾选不验证安全域名选项(在线域名必须经过TLS/SSL认证)
- 域名信息
- 查看合法域名
二、开发与优化 1.
由于小程序提供的API都是回调风格,习惯了ES6风格后,我对回调嵌套不太感兴趣,所以考虑了封装。 这里提供的小程序存在兼容性问题,所以使用es6-包进行打包。
````
/**
* 将小程序的API封装成支持的API
* @fn {}小程序原生API,如wx.login
*/
(fn){
(obj = {}, cb) => {
新((,)=> {
对象。 =(资源)=> {
(研究);
};
obj.fail = (res) => {
(研究);
};
让 = fn(obj);
cb && (cb == '') && cb();
})
````
讨论:如何获取原生API的返回值?
使我们能够在回调中使用关键字,但执行 API 后不会丢失任何内容。 这里使用了抛出返回值,但是感觉不太优雅。 如果您有更好的处理方法,请告诉我。
2.
小程序提供的原生接口是wx. 出于以下考虑,重新封装:
1.没有小程序,需要自带
2.原来的写法是回调风格,改造为风格
3、需要进行与业务公共部分相关的数据处理
4、需要统一拦截并处理请求,如:
3. 按钮油门
往往针对这个需求,按钮不能连续点击,所以提供了一个带有节流功能的工具:
function btnThrottle(self){
selt.setData({
buttonClicked: true
});
setTimeout(() => {
self.setData({
buttonClicked: false
})
}, 500)
}
creat: function() {
if(this.data.buttonClicked) return;
util.btnThrottle(this);
}
4.代码缓存清理
有时在调试时,您需要保持代码*新。 经常删除小程序很麻烦。 您可以考虑使用以下方法:
````
:(){
wx.({
: 真的,
: () => {
wx.({
: 错误的
})
})
````
- 优点:每次打开都可以清除代码缓存并重新加载。
- 缺点:退出时没有办法保持状态,所以暂时不考虑生产环境。
三、常见问题 1、登录逻辑
官方建议自己保存用户登录状态在小程序开发中,你的身份把这一过程进行记录并分享,不要频繁调用wx.login,否则会限制登录。
有两种思考方式:
1、首先检查登录是否过期(wx.),在未过期的基础上执行其他请求(并不是所有请求都需要登录,比如世界排名)
2、对所有api请求进行判断。 如果返回非登录错误码(:fail auth deny),请申请授权(wx.)。 如果授权成功,请求将继续。 如果授权被拒绝,则强制跳转授权页面(wx.)。
当前登录判断:
1. wx.,wx。 检查登录是否已过期且存在
2.如果成功则判断结束,否则wx.login和wx. 获取用户信息。
3、如果成功,则使用获取到的信息登录后台生成。 如果失败,则申请授权操作(允许授权则继续授权,授权失败则强制跳转授权页面)
4.如果获取成功,保存即可。 如果失败,会提示网络问题。
[*佳体验:]()
1.调用wx.login获取验证码,然后与微信后台交换,解密返回的敏感数据。
2.使用wx. 获取用户授权状态
- 如果用户已获得授权,则直接调用API wx. 获取用户的*新信息;
- 如果用户未授权,界面上会显示按钮,提示用户登录,当用户点击授权后,将获取用户的*新信息。
3. 获取用户数据后,可以展示或者发送到自己的后台。
2.路由跳转相关
系统API和组件支持新建、重定向、返回、标签切换、重启五种方式。 了解进出栈的路由规则可以帮助你更好的处理跳转问题。 但归根结底还是要避免过于复杂的跳转逻辑,防止共享进入时出现路由跳转问题。
有一种情况需要特别注意。 实现后退功能时,可能无法后退(比如进入共享卡或者退出当前页面但代码仍在执行)。 此时执行wx. 会崩溃。
````
// 兼容不同打开方式的后台处理
() {
让=()。;
如果(>1){
wx.({
增量:1
})
} 别的 {
wx.({
url: '/pages/home/index'
})
````
需要注意的是切换标签时的路由进出栈规则:
- 当tab a到tab b相互切换时被触发(**次切换会发生)
- 当a标签的子页面切换到b标签时,a的所有子页面都会被切换
3、数据共享的实现
1. URL价值转移——基于页面——适合少量价值转移
````
wx.({
url: '/page/home/index?id=' + id
})
:(选择){
.log(opt.query)
````
2. - 基于本地缓存 - 适合传输大量值
笔记:
- 同一微信用户同一小程序的上限为10MB
- 在用户级别隔离。 用户A无法读取同一设备上用户B的数据。
- 不建议存储所有关键信息,以防止用户更换设备。
[官方文档-api-数据缓存]()
3. 全局应用程序 - 基于内存
````
()..xxx
````
4.退出当前页面后,代码仍在执行
由于用户退出页面的操作是不可控的,因此任何时候都可能无法在当前页面执行代码,而这种情况并不是我们希望看到的。 因此,需要对这种情况进行处理,保证代码执行稳定可控。 常见的包括异步请求和定时器。 所以*基本的要求就是在退出页面执行以下操作:
````
:(){
//中断请求
if (wx.('.abort')) {
这。 && this..abort();
// 清理定时器
(这。);
//重置数据
自己。({
//...
});
},
````
但总有漏网之鱼。 开发过程中遇到了请求被中断,定时器清零后还在执行的情况。 出现这种情况时,**印象就是清理不成功,API执行有问题。
后来测试多次发现不是API的错,而是因为在中断失败的异步操作过程中触发了新的异步操作,而新的异步操作已经无法控制中断了。 例如:一个请求中止失败,另一个操作的回调中调用了 or 。 此时,局势已失控。
因此,需要有一个清晰、可控的流程。 在处理业务逻辑时一定要注意此类问题的发生。
5.分享
作为一个非常重要的推广渠道,用户分享自然是一个非常重要的功能点。 小程序提供了相关API。 如果您在使用过程中遇到以下问题,请记录下来:
1、共享*终执行的是对应的函数,相关逻辑都在里面处理。
2、共享参数与低版本存在兼容性问题。 如果设置为null,则无法进行默认截图。 ” 可以截图。
3.共享可以携带参数,可以写在路径参数中,和url中查询一样。
- 如果需要获取这个参数,可以在参数中获取
4.场景需求:分享到群判断个人如何开发微信小程序,判断群分享是否进入
- 先与频段设置转发
````
wx.({
: 真的
});
````
- 在分享成功回调函数中确定群组ID。 如果存在,则表示分享到群组。
- 获取场景值(参数中的场景),确定进入方式,常用场景值:
- 1007:单人对话小程序卡
- 1036:应用分享留言卡