0579-8699-3791

义乌网站建设 APP开发 要找 ➙ 专业的义乌网络公司

知识

第一:微信小程序中用户登录和登陆状态维护。为啥说这个是个大坑呢?我们知道,让用户登录,标识用户和获取用户信息,以用户为核心提供服务,是大部分程序都会做的事情,而用户登陆一般

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

微信小程序中存在的一些坑

发表时间:2020-10-08 15:46 文章来源:admin

  第一:微信小程序中用户登录和登陆状态维护。

  为啥说这个是个大坑呢?我们知道,让用户登录,标识用户和获取用户信息,以用户为核心提供服务,是大部分程序都会做的事情,而用户登陆一般会有三类方式第一种,使用自有账号注册和登陆,比如进入小程序,我们让用户填写手机号注册登陆。第二中使用第三方平台登陆,第三种,使用微信账号登陆。这三种登陆微信小程序本身都支持,但是问题来了。

  小程序中没有Cookie的机制,大家知道,对于原生app或者网页app来说,大部分公司验证用户信息都是通过,进入app时候调用登陆接口,然后把用户信息保存在cookie里面,然后在请求其他接口的时候,通过cookie验证是否登陆,然而,微信小程序不支持。也就是说,原生app和网页app里面接口,不能用后台需要按照小程序的规则从新验证登陆信息,是不是很坑。

  第二:微信小程序不支持html页面。

  微信小程序的。wxml虽然类似html但是它并不是html,微信小程序之间的跳转仅仅限于在app。json里面注册的页面,它是不能跳转的外部页面的,比如,你有一个banner图,点击跳转到外部的一个html页面,这个是不支持的,但是,这个需求又很常用,所以,如果大家想用小程序做项目的时候,最好先考虑一下,这种需求多不多。

  第三:微信不支持DOM和BOM

  上面说了,微信内没有window对象。window对象就是bom(浏览器对象模型)的顶层对象。同样它也没有dom(文档对象模型),对于一些,我们常用的第三库,比如,jquery,zepto等等都是无法使用的,这样,比如我们需要在小程序内根据用户信息生成一个二维码,等等这种需求我们也是无法做的。微信小程序有生成二维码的接口,但是仅仅适用于,生成微信小程序本身的二维码。

  第四:微信小程序页面限制

  微信小程序规定打开页面的个数不得超过5个。微信提供 Tab 栏的设置,可以在app.json中配置(最少两个,最多5个)。在App 里配置的 Tab 栏将出现在所有的一级页面。但是它有一个问题就是第一次点击 Tab 将会打开一个新的页面。

  微信提供了几个页面跳转的方式,redirectto、navigateto,还有返回。redirectto会直接在原页面上打开新页面,navigateto会新开启一个页面。由于微信在页面数量上有限制,我们产品的层级有比较多,导致无法直接在app.json设置Tab 栏。所以我们把 Tab 栏单独设计出来。点击 Tab 不开启新页面。在每个初级页面都引用进去,之后二级三级的页面上不使用Tab 切换,而是需要返回到初级页面。

  第五:页面的逆转传值

  举个例子,我们如果从A页面传值到B页面,可以直接navigateTo()中url携带参数的方式,但是如果我们返回从B传到A就不能了,现实应用,比如我们手机通讯录,点击名字进入详情页面,在详情页面修改了电话号码。返回的时候,怎么传给上个页面,让上级页面显示的电话号码和修改后的一样。ios,可以使用代理传值,或者bloack,vue可以使用$emit和v-on结合这些都可以做到,但是小程序没有这些。这个有两种方式处理,第一种是,使用全局数据存储,把值存在App对象上,或者使用小程序的数据缓存,第二种是从页面路由栈中直接获取和操作目标Page对象(这个我没有试过,这个是我在网上看到别人这么做的,我没有试),这种方式,是通过调用小程序的API:getCurrentPages(),来获取当前页面路由栈的信息,这个路由栈中按照页面的路由顺序存放着相应的Page对象,我们可以很容易的获取到上一级页面的完整Page对象,从而使直接调用Page对象的属性和方法成为可能。

  赞赏

  邀请

相关案例查看更多