微信小程序开发系列 (四) :微信小程序的页面跳转路由设计

微信小程序开发系列 (四) :微信小程序的页面跳转路由设计,第1张

笔者由于工作需要,曾经参加过一个微信小程序同 SAP 系统集成的项目,因此从零开始学习了微信小程序的开发知识。这里通过系列文章把自己所学分享出来,希望对相关学习者有所帮助。

本教程前面三篇文章:

通过本系列前面三篇文章的介绍,大家对微信小程序的视图和控制器,微信调试器的用法,以及如何消费微信平台提供的 Public API,已经有了一个最基本的认识了。在这个基础上,本文让我们进一步学习微信小程序的页面跳转路由设计。

这个系列教程的前六篇文章我们都在单个的视图上 *** 作。现在让我们创建第二个视图,然后实现从第一个视图到第二个视图的跳转

首先开发第二个视图:

做过 Angular 开发的朋友们对上面的视图设计一定不会陌生。这个视图的数据源由模型 logs 提供,是一个列表结果,列表每个元素的数据源是模型 logs 里的一条记录,用 log 代表。

为了让 log 看起来显示更整齐,在 log 内容之前,显示每条 log 的索引。因为 log 的索引从 0 开始,所以用 {{index + 1}} 在索引前加一,这样显示的索引更符合普通人的阅读习惯。

这个视图的控制器:

控制器 logsjs 的实现:

在控制器里调用 Page 构造函数,给当前控制器指定名为 logs 的数据模型。

这个数据模型的值填充,通过微信框架提供的 API wxgetStorageSync 来获取。

wxgetStorageSync 的含义在微信小程序 官网 上有定义:从本地缓存中同步获取指定 key 对应的内容。

第二个视图的 UI 和控制器都开发完毕,剩下的事情就是在第一个视图里定义一个触发点,让它能触发到第二个视图的跳转。

我在第一个视图上通过属性 bindtap 绑定了一个点击函数 bindViewTap :

bindViewTap 在第一个控制器 indexjs 里的实现:

跳转还是通过微信小程序提供的 API wxnavigateTo :

保留当前页面,跳转到应用内的某个页面,使用 wxnavigateBack 可以返回到原页面。

学习了微信小程序页面路由跳转之后,我们来进行一个实际的需求开发。

效果:我在手机上打开微信小程序,自动显示出我当前所在的地理位置:

具体步骤:

ReservationServicegetGeocode 的实现:

看下面一个使用高德地图 API 将经纬度转换成文字描述的地址的例子,使用 postman 发送请求:

API 响应:

假设我用 vue 开发了一个 web 应用,需要在手机微信里访问并调试, 可以按照本文介绍的步骤,使用微信开发者工具来调试。

假设我的 web 应用的访问入口是如下公众号菜单的"预约"按钮:

那么为了能够在微信开发者工具里调试,需要首先进入该公众号的后台,在 web 开发者工具里,将开发者本人的微信号添加进去:

点击"绑定开发者账号":

输入待绑定的微信账号:

点击绑定,该微信号会收到一条消息,询问是否绑定:

点击同意 *** 作完成绑定。

接下来, 把要调试的 web 应用的 url 放到微信开发者工具地址栏里,回车之后,微信开发者工具就会d出一个询问窗口,点击 Allow 之后,就可以在微信开发者工具提供的类似 Chrome 开发者工具调试器一样的界面里进行单步调试了。

这个粘贴到地址栏的 url 很有讲究。

>

如果这个办法行不通,也可以在小程序获得后台返回的json数据后,先把其中的路径数据(即用:分隔的多个路径的字符串)用split分割为数组,再放入page的data中,这样小程序的wxml文件也不需要大改就能显示多个了。

如果实在懒得很,后台返回的数据一股脑的直接放到page的data中,那么还有最后的一种解决办法,就是在wxml文件中通过小程序自身的wxs语言实时分割路径字符串,比如(假定字段名为image):

<wxs module="fun">

   moduleexports = {

      imgPathSplit: function(s) {

         if (s) return ssplit(":");

      }

   }

</wxs>

然后在需要循环显示的地方加入代码(只是示例):

<image wx:for="{{funimgPathSplit(itemimage)}}" wx:key="this" mode="aspectFill" src="{{item}}"></image>

这样,在小程序渲染页面时就会实时对路径字符串进行分割,再循环显示出来。

具体情况,由于你提供的信息有限,也无法说的更多了,你自己去研究。

一、小程序架构

每个小程序的结构都有两个主要部分构成:主体部分+各个页面。类似于许多框架,主体部分主要用于核心的配置,各个页面主要用于不同业务场景。

11、主体部分主要由3个文件构成

1)appjs:小程序逻辑,初始化APP

2)appjson:小程序配置,比如导航、窗口、页面>

方法:获取page数据,看代码:var text=thisdataname  ,这样就获取到初始化的值

page({

data:{name:"test"},

showData:function(){

var text=thisdataname

}

})

示例如下:

utiljs

//正则判断

function Regular(str, reg) {

if (regtest(str))

return true;

return false;

}

//是否为中文

function IsChinese(str) {

var reg = /^[\u0391-\uFFE5]+$/;

return Regular(str, reg);

}

moduleexports = {

getRequestUrl: ">

IsChinese: IsChinese,

}

//testjs

var util = require('//utils/utiljs');

Page({

onLoad: function () {

consolelog("判断是否为中文:"+utilIsChinese('测试'));

consolelog("输出接口url:"+utilgetRequestUrl);

}

})

1、在微信开发者工具中,打开appjson文件,在pages数组中增加showwxml页面相关文件的代码,以加粗显示,代码如下:

{

"pages":[

"pages/index/index",

"pages/show/show",

"pages/logs/logs"

],

"window":{

"backgroundTextStyle":"light",

"navigationBarBackgroundColor": "#ccc",

"navigationBarTitleText": "WeChat",

"navigationBarTextStyle":"black"

}

}

2、在indexwxml文件中,在类为usermotto的view组件中添加绑定属性catchtap='enterShow',以加粗显示,代码如下:

<!--indexwxml-->

<view class="container">

<view class="userinfo">

<button wx:if="{{!hasUserInfo && canIUse}}" open-type="getUserInfo" bindgetuserinfo="getUserInfo"> 获取头像昵称 </button>

<block wx:else>

<image bindtap="bindViewTap" class="userinfo-avatar" src="{{userInfoavatarUrl}}" background-size="cover"></image>

<text class="userinfo-nickname">{{userInfonickName}}</text>

</block>

</view>

<view class="usermotto" catchtap='enterShow'>

<text class="user-motto">{{motto}}</text>

</view>

</view>

3、在indexjs文件中,将data中motto的值改为“点击进入”。编写实现跳转的自定义函数enterShow,加粗显示,代码如下:

//indexjs

//获取应用实例

const app = getApp()

Page({

data: {

motto: '点击进入',

userInfo: {},

hasUserInfo: false,

canIUse: wxcanIUse('buttonopen-typegetUserInfo')

},

//事件处理函数

enterShow:function(){

wxnavigateTo({

url: '/show/show',

})

4、 在showwxml中,输入跳转后页面显示的信息,代码如下:

<view>

<text>这是跳转后的页面</text>

</view>

5、然后在indexxwml中点击测试就可以了。

说明:在上面的页面跳转自定义函数enterShow中,也可以使用wxredirectTo实现跳转。两者的区别:redirectTo将关闭当前页面,跳转到指定页面,页面左上角没有返回的箭头按钮;而navigateTo将保留页面,跳转到指定页面,页面左上角有返回的箭头按钮。

扩展资料

其实在小程序后台很早就有个wxopenUrl的函数,普通开发者没有调用权限,这次微信给自家的小程序开放权限,旨在测试这一功能可能的风险。因为这一功能如果全部开放,将会给小程序用户带来很大的安全隐患。居心不良的开发者可能会将用户引流至一些不安全页面。

小程序的审核难度也会变得很大。因为微信除了审核小程序本身的页面跳转和内容,还需要审核外链的链接,并且还不一定能够审核清楚。

以上就是关于微信小程序开发系列 (四) :微信小程序的页面跳转路由设计全部的内容,包括:微信小程序开发系列 (四) :微信小程序的页面跳转路由设计、微信小程序 列表输出问题、微信小程序架构篇等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/10214149.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存