重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
前言
为泸水等地区用户提供了全套网页设计制作服务,及泸水网站建设行业解决方案。主营业务为成都做网站、成都网站制作、泸水网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!启动页在APP中是个很常见的需求,为什么对于小程序来说也非常重要呢?首先我描述一下我在开发过程中遇到的一些问题以及解决的步骤,到最后为什么要加启动页,看完你就明白了。
小程序的首页需要展示用户关注的小区信息,意味着一打开小程序我就得先执行登录的逻辑,只有登录了之后才能获取用户关注的小区信息。
在小程序启动的时候自动登录,目前没获取用户信息,所以不需要用户授权,这个逻辑放在根目录下的app.js的onLaunch方法中。只要启动小程序就会执行onLaunch方法。
做完之后发现了一个很严重的问题,就是app.js的onLaunch方法确实会在小程序启动的时候执行,但是首页也会是在app.json文件的pages中第一个页面也会同时执行,它不是阻塞的。会导致一个问题就是首页获取关注信息执行完了,登录的逻辑还没完,获取不到正确的数据。
于是把登录的逻辑放到首页的onLoad方法中执行,在登录成功之后再去获取关注的数据,这样就能解决上面说的问题了。
后面又有一个需求,就是分享功能,分享出去的页面中也需要用到用户信息,这个就尴尬了,分享出去的页面,用户进入的时候还是进入的这个页面,不会执行首页的逻辑,是拿不到用户信息的。
后面想了下,还是增加一个启动页来做中转吧,登录的逻辑还是放到app.js中,只要小程序启动了就可以执行,无论是第一次进入还是通过分享的页面进入,都可以自动登录。
问题是如何实现阻塞功能,就是登录之后再去跳转到其它的页面,思路就是通过定时器的方式去检测登录状态,成功了之后再跳转。
分享也是一样,分享出去的地址不再是本页面的地址,而是启动页的地址,带一个参数,这个参数才是本页面的地址,当用户点击分享的小程序进入之后会先进入启动页,启动页中获取参数,等待登录逻辑执行完成之后,再根据参数跳转到分享的页面。
启动页代码:
onLoad: function (e) { var url = '/pages/index/index' // 分享页面参数解码 if (e.page != undefined && e.page != "") { url = decodeURIComponent(e.page) } var count = 0; var inter = setInterval(() => { count++; if (count > 1000) { clearInterval(inter); wx.showToast({ title: "网络异常,请重启小程序", icon: 'none', duration: 2000 }) return; } var token = wx.getStorageSync("login_token"); if (token != null && token != "") { clearInterval(inter); // 跳转到toolbar if (url == "/pages/index/index" || url == "/pages/city/cityAll/cityAll") { wx.switchTab({ url: url }) } else { // 跳转到普通页面 wx.navigateTo({ url: url, }) } } },10); }
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。