0530-3433334

网站建设 APP开发 小程序

知识

分享你我感悟

您当前位置>首页 >> 知识 >> 小程序

在小程序开发中,你的身份把这一过程进行记录并分享

发表时间: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:应用分享留言卡

炫佑科技专注互联网开发小程序开发-app开发-软件开发-网站制作等

相关案例查看更多