UniAPP 路由配置及页面跳转

uni-app页面路由为框架统一管理,开发者需要在pages.json里配置每个路由页面的路径及页面样式。类似小程序在 app.json 中配置页面路由一样。所以 uni-app 的路由用法与 Vue Router 不同,如仍希望采用 Vue Router 方式管理路由,可在插件市场搜索 Vue-Router。

uni-app 有两种页面路由跳转方式:使用 navigator组件跳转(标签式导航)、调用 API跳转(编程式导航)

getCurrentPages0函数用于获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个
元素为当前页面,
注意:getCurrentPages 仅用于展示页面栈的情况,请勿修改页面栈,以免造成页面状态错误。

页面生命周期的 onLoad()监听页面加载,其参数为上个页面传递的数据

url有长度限制,太长的字符串会传递失败,可改用窗体通信全局变量,另外参数中出现空格等特殊字符时需要对参数进行编码,如下为使用encodeURIComponent对参数进行编码的示例。

注意:

页面跳转路径有层级限制,不能无限制跳转新页面
跳转到 tabBar 页面只能使用 switchTab 跳转
路由API的目标页面必须是在pages.json里注册的vue页面。如果想打开web url,在App平台可以使用 plus.runtime.openURL或web-view组件;H5平台使用 window.open;小程序平台使用web-view组件(url需在小程序的联网白名单中)。在hello uni-app中有个组件ulink.vue已对多端进行封装,可参考。

因小程序有体积和资源加载限制,各家小程序平台提供了分包方式,优化小程序的下载和启动速度。
所谓的主包,即放置默认启动页面及 TabBar 页面,而分色则是根据 pages.json 的配置进行划分。
在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,会把对应分包自动下整下来,下载完成后再进行展示,此时终端界面会有等待提示。

预下载分包设置
{
    "pages": [{
        "path": "pages/index/index",
        "style": { ...}
    }, {
        "path": "pages/login/login",
        "style": { ...}
    }],
    "subPackages": [{
        "root": "pagesA",
        "pages": [{
            "path": "list/list",
            "style": { ...}
        }]
    }, {
        "root": "pagesB",
        "pages": [{
            "path": "detail/detail",
            "style": { ...}
        }]
    }],
    "preloadRule": {
        "pagesA/list/list": {
            "network": "all",
            "packages": ["__APP__"]
        },
        "pagesB/detail/detail": {
            "network": "all",
            "packages": ["pagesA"]
        }
    }
}

uniapp中开发微信小程序时,页面跳转动画可以通过配置路由动画来实现。uniapp提供了多种方式来实现页面跳转动画,以下是几种常见的方法: 1. **使用`uni.navigateTo`等导航方法的动画参数**: uniapp的导航方法如`uni.navigateTo`、`uni.redirectTo`等,可以传入动画参数来控制跳转动画。 ```javascript uni.navigateTo({ url: '/pages/detail/detail', animationType: 'slide-in-right', animationDuration: 300 }); ``` `animationType`可以取以下值: - `pop-in`:新页面从右侧滑入,当前页面保持不动。 - `slide-in-right`:新页面从右侧滑入,当前页面向左滑动。 - `slide-in-left`:新页面从左侧滑入,当前页面向右滑动。 - `fade-in`:新页面渐显,当前页面渐隐。 2. **全局配置动画**: 在`pages.json`中,可以配置全局的页面跳转动画。 ```json { "pages": [ { "path": "pages/index/index", "style": { "navigationBarTitleText": "首页" } }, { "path": "pages/detail/detail", "style": { "navigationBarTitleText": "详情页", "animationType": "slide-in-right", "animationDuration": 300 } } ] } ``` 3. **自定义动画**: 如果内置的动画类型不满足需求,可以通过自定义动画来实现。 ```javascript uni.navigateTo({ url: '/pages/detail/detail', success: function() { // 自定义动画逻辑 var page = this.$mp.page; page.setData({ animationData: uni.createAnimation({ duration: 300, timingFunction: 'ease' }).slideInRight().step().export() }); } }); ``` 在页面的`WXML`文件中,使用`animation`属性绑定动画数据: ```html <view animation="{{animationData}}"> <!-- 页面内容 --> </view> ``` 通过以上方法,可以在uniapp中实现丰富多样的页面跳转动画,提升用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值