当前位置: 首页 > 后端技术 > Node.js

(练习)Node搭建小程序SOA

时间:2023-04-03 15:25:51 Node.js

前言本文用于记录小程序开发中的一些痛点和调试问题。小程序代码向小程序传递参数的过程:Node提供了一个中间页面,中间有小程序代码,用户在微信中打开,然后跳转到小程序,小程序获取参数。解决方案如下:Node提供小程序代码的中页,获取小程序代码不需要关心微信是什么。我对Node应用程序进行了分层。具体分层设计可以参考mpvue和koa2全栈开发小程序中的服务端代码,gitHub上有写注释。微信这里是获取和生成小程序代码的方法:首先带参数获取access_token,access_token请求微信生成小程序代码的接口获取小程序代码的二进制流字符串,转为base64图片,渲染(pugtemplate)微信提供的小程序接收参数的API调试起来非常麻烦,因为只能通过二维码拉取在线小程序,审核通常需要2个多小时。注意:官方文档提供的query.scene其实是options.scene,不要使用options.query.scene我们的create方法生成如下图:可以通过decodeURIComponent(options.scene)获取到小程序代码的参数.小程序场景下,页面滚动时切换水平滚动tab,双滚动联动过程:小程序页面有两次滚动,第一次滚动是水平滚动tabbar,第二次滚动是页面滚动,支持点击tabbar,页面滚动到对应位置,手动上下滑动页面时,水平tabbar需要更新当前切换状态。解决方法如下:使用小程序api在onload中获取dom节点的高度,使用scroll-view存储水平滚动条,点击事件,使用wx.scrollTo滚动使用onPageScroll监听页面滚动,判断当前位置(与onload中存储的高度相比),并更新水平滚动条scroll-view的scroll-to-viewid值。setData,在安卓设备上是惰性的,性能会有延迟,效果差。换成小程序提供的api,wx.createIntersectionObserver().relativeToViewport().observe,还是一样的问题。我猜想,这个api只是一个监控页面滚动和判断位置的语法糖,并不能回避在安卓机上的性能问题。所以,如果你有类似的需求,建议换交互。总结待续……