Uniapp 和 Vue 在路由方面有相似之处,因为 Uniapp 是基于 Vue 的。Uniapp 的路由系统是通过 Vue Router 实现的,因此两者有许多相同的概念和 API。

相同点:

  • 都支持基于 URL 的路由;
  • 都可以使用嵌套路由来管理多个页面之间的关系;
  • 都支持路由参数和查询参数的传递;
  • 都支持路由守卫(beforeEach、beforeEnter、beforeLeave)等功能。

不同点:

  • Vue Router 是针对 Web 应用开发的路由库,而 Uniapp 是为多个平台(包括小程序和 H5)开发的跨端框架。因此,Uniapp 的路由系统需要考虑不同平台的差异,例如小程序中没有浏览器的历史记录和前进后退功能;
  • 在使用 Uniapp 的时候,不需要手动配置路由,而是通过编写 pages.json 文件来配置页面路径和样式等信息。这一点与 Vue Router 的使用方式略有不同;
  • Uniapp 的路由跳转方法有些不同,例如 navigateTo、redirectTo、switchTab、reLaunch 等方法,这些方法都是针对不同场景的不同跳转方式。
  • 因此,Uniapp 和 Vue 在路由方面有相似之处,但是由于 Uniapp 的跨端特性和不同平台的差异,它们在具体实现和使用方式上也有些不同。

一. Uniapp路由的使用方式:
Uniapp 的路由使用方法分为两部分,一是在 pages.json 文件中配置页面路径和样式等信息,二是通过 uni.navigateTo、uni.redirectTo、uni.switchTab、uni.reLaunch 等方法进行页面跳转。下面详细介绍一下这两部分的内容。

配置页面路径和样式
在 Uniapp 中,我们可以在 pages.json 文件中配置页面路径和样式等信息。这个文件默认位于项目的根目录下,它是一个 JSON 格式的配置文件,用于描述所有页面的路径、样式、配置等信息。例如:

{
"pages": [
{
"path": "pages/index/index",
"style": {
"navigationBarTitleText": "首页"
}
},
{
"path": "pages/detail/detail",
"style": {
"navigationBarTitleText": "详情页"
}
}
],
"tabBar": {
"list": [
{
"pagePath": "pages/index/index",
"text": "首页",
"iconPath": "static/tab-bar/home.png",
"selectedIconPath": "static/tab-bar/home-selected.png"
},
{
"pagePath": "pages/mine/mine",
"text": "我的",
"iconPath": "static/tab-bar/mine.png",
"selectedIconPath": "static/tab-bar/mine-selected.png"
}
]
}
}

  

上面的代码片段中,我们定义了两个页面,分别是首页和详情页,它们的路径分别是 pages/index/index 和 pages/detail/detail,同时还定义了这两个页面的导航栏标题。另外,我们还定义了一个名为 tabBar 的对象,表示底部导航栏的样式和配置信息。这个对象中包含一个名为 list 的数组,数组中的每个对象表示一个底部导航栏项。

跳转页面
在 Uniapp 中,我们可以通过 uni.navigateTo、uni.redirectTo、uni.switchTab、uni.reLaunch 等方法进行页面跳转。这些方法都是基于页面路径进行跳转的,它们的区别在于跳转的方式和效果不同。例如:

  • uni.navigateTo:保留当前页面,跳转到应用内的某个页面。新打开的页面可以通过 uni.navigateBack 方法返回到原来的页面。
  • uni.redirectTo:关闭当前页面,跳转到应用内的某个页面。新打开的页面不可以通过 uni.navigateBack 方法返回到原来的页面。
  • uni.switchTab:关闭所有页面,跳转到应用内的某个页面。新打开的页面是底部导航栏中的一个页面。
  • uni.reLaunch:关闭所有页面,打开应用内的某个页面。

例如,以下代码示例演示如何通过 uni.navigateTo 方法跳转到详情页:

// 在 index 页面中跳转到详情页
uni.navigateTo({
url: '/pages/detail/detail'
})

  

上面的代码片段中,我们通过 uni.navigateTo 方法跳转到了详情页,其中 url 参数表示要跳转的页面路径。这个路径应该是 pages.json 文件中定义的页面路径,可以是相对路径或绝对路径。

另外,如果要在跳转时传递参数,可以在路径后面加上查询字符串,例如:

// 在 index 页面中跳转到详情页,并传递参数
uni.navigateTo({
url: '/pages/detail/detail?id=123'
})

  

在详情页中可以通过 this.$route.query.id 获取参数值。
除了以上方法之外,还可以使用 uni.navigateBack 方法返回上一个页面。例如:

// 在详情页中返回上一个页面
uni.navigateBack()

  

上面的代码片段中,我们调用了 uni.navigateBack 方法返回上一个页面。

二. vue中路由的使用方法

1. 安装Vue Router
在使用Vue.js的路由功能之前,需要先安装Vue Router。可以使用npm或者yarn安装:

npm install vue-router
# 或者
yarn add vue-router

  

2. 创建路由
在Vue.js中,我们需要先创建一个路由实例,然后定义路由映射关系。路由实例可以通过Vue Router提供的Vue.use()方法进行创建:

import Vue from 'vue';
import VueRouter from 'vue-router';
import Home from './views/Home.vue';
import About from './views/About.vue'; Vue.use(VueRouter); const router = new VueRouter({
mode: 'history',
routes: [
{
path: '/',
name: 'home',
component: Home
},
{
path: '/about',
name: 'about',
component: About
}
]
}); export default router;

  

在上述代码中,我们首先引入了Vue.js和Vue Router模块,并使用Vue.use()方法注册Vue Router。接着,我们创建了一个路由实例,并定义了两个路由映射关系。其中,路由映射关系包括路由路径(path)、路由名称(name)和路由组件(component)。

3. 添加路由实例
在创建了路由实例后,我们需要将其添加到Vue.js的根实例中,以便在整个应用程序中使用路由功能。可以在main.js文件中进行添加:

import Vue from 'vue';
import App from './App.vue';
import router from './router'; new Vue({
router,
render: h => h(App),
}).$mount('#app');

  

在上述代码中,我们首先引入了Vue.js的根组件(App.vue)和路由实例(router),然后将路由实例作为根实例的一个选项进行添加。

4. 创建路由组件
在定义路由映射关系时,需要指定路由组件。路由组件是一个普通的Vue.js组件,用于渲染对应的路由页面。可以在components文件夹下创建路由组件,例如:

<template>
<div>
<h1>About Page</h1>
</div>
</template> <script>
export default {
name: 'About'
}
</script>

  

在上述代码中,我们创建了一个名为About的组件,用于渲染关于页面。

5. 使用路由
在上述步骤完成后,就可以在Vue.js应用程序中使用路由了。可以在Vue.js组件中使用$route和$router来访问当前路由信息和导航功能,例如:

<template>
<div>
<h1>{{ $route.name
}}</h1>
<p>Welcome to {{ $route.name }} page</p>
<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link> </div>
</template>
<script>
export default {
name: 'App'
}
</script>

  在上述代码中,我们使用$route.name访问当前路由名称,并在页面中显示。同时,使用<router-link>标签实现页面之间的导航。to属性用于指定目标路由路径。 除了使用<router-link>标签进行导航,还可以使用$router.push()方法进行编程式导航。例如:

this.$router.push('/about');

  

上述代码用于在当前页面中进行路由跳转,进入关于页面。

6. 使用路由守卫
Vue Router还提供了路由守卫功能,用于在导航过程中进行控制和过滤。可以使用beforeEach()方法实现全局路由守卫,例如:

router.beforeEach((to, from, next) => {
if (to.name === 'about' && !isAuthenticated) next({ name: 'home' })
else next()
})

  

在上述代码中,我们定义了一个全局路由守卫,用于在进入关于页面之前进行身份验证。如果当前用户没有登录,则自动跳转到主页。

除了全局路由守卫外,Vue Router还提供了其他几种路由守卫,例如beforeEnter()、beforeRouteEnter()和beforeRouteLeave()等,用于在特定路由进入或离开时进行控制和过滤。

总之,Uniapp 的路由使用方法与 Vue 的路由使用方法基本相似,都是通过配置文件和方法进行跳转,只不过在具体实现细节上有些不同。

详解uniapp和vue在路由方面的不同和联系的更多相关文章

  1. react router @4 和 vue路由 详解(五)react怎么通过路由传参

    完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 7.react怎么通过路由传参? a.通配符传参(刷新页面数据不丢失) //在定义路由的 ...

  2. react router @4 和 vue路由 详解(三)react如何在路由里面定义一个子路由

    完整版:https://www.cnblogs.com/yangyangxxb/p/10066650.html 5.react如何在路由里面定义一个子路由?   a.引入在需要子路由的页面引入Rout ...

  3. 详解如何在vue项目中引入饿了么elementUI组件

    在开发的过程之中,我们也经常会使用到很多组件库:vue 常用ui组件库:https://blog.csdn.net/qq_36538012/article/details/82146649 今天具体说 ...

  4. vue.js基础知识篇(6):组件详解

    第11章:组件详解 组件是Vue.js最推崇也最强大的功能之一,核心目标是可重用性. 我们把组件代码按照template.style.script的拆分方式,放置到对应的.vue文件中. 1.注册 V ...

  5. Vue不兼容IE8原因以及Object.defineProperty详解

    Vue不兼容IE8原因以及Object.defineProperty详解 原因概述: Vue.js使用了IE8不能模拟的ECMAScript5特性. Vue.js支持所有兼容ES5的浏览器. Vue将 ...

  6. Vue组件通信方式全面详解

    vue组件通信方式全面详解 众所周知,Vue主要思想就是组件化开发.因为,在实际的项目开发中,肯定会以组件的开发模式进行.形如页面和页面之间需要通信一样,Vue 组件和组件之间肯定也需要互通有无.共享 ...

  7. HDFS详解

    HDFS详解大纲 Hadoop HDFS 分布式文件系统DFS简介 HDFS的系统组成介绍 HDFS的组成部分详解 副本存放策略及路由规则 命令行接口 Java接口 客户端与HDFS的数据流讲解 目标 ...

  8. Sentry-CLI 使用详解(2021 Sentry v21.8.x)

    内容源于:https://docs.sentry.io/platforms/javascript/guides/vue/ 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创 ...

  9. Sentry 监控 - 私有 Docker Compose 部署与故障排除详解

    内容整理自官方开发文档 系列 1 分钟快速使用 Docker 上手最新版 Sentry-CLI - 创建版本 快速使用 Docker 上手 Sentry-CLI - 30 秒上手 Source Map ...

  10. Vue 路由详解

    Vue 路由详解 对于前端来说,其实浏览器配合超级连接就很好的实现了路由功能.但是对于单页面应用来说,浏览器和超级连接的跳转方式已经不能适用,所以各大框架纷纷给出了单页面应用的解决路由跳转的方案. V ...

随机推荐

  1. 用IDEA查看class字节码反编译后的文件——

    反编译 利用IDEA 进行反编译 查看class字节码反编译后的文件 1.要找到class文件,路径: IDEA没有显示完全,不过你可以点击右边这个,很容易就找到完整的路径. 2.找到这个路径并进入p ...

  2. 【编程】Python3 正则表达式使用笔记

    前言 Python 从1.5版本开始使用re模块来处理正则表达式.我们可以使用"re模块"或"re.compile方法"来创建正则表达式对象(re.RegexO ...

  3. 算法题:消除字符串中全部的b和连续的ac

    最近碰到了一道面试题,虽然不难但是临试没想出好的解法,记录下来以作分享. 题目:消除字符串中全部的b和连续的ac 用例: 'aabbc' -> 'a' 'aaabbbccc' -> '' ...

  4. excel的几个常用方法

    --笔记开始: 1.if(条件,真值,假值),类似于编程语言中的三元运算符.条件为真时返回真值,条件为假时返回假值. 2.match(目标值,查找区域,查找类型),一般查找类型为0(等值查找),查找区 ...

  5. gitt如何将本地分支同远程分支进行关联

    将本地分支同远程分支进行关联,1.本地已经创建了分支test(test,是master以外自己创建的分支),而远程没有2种方法在远程创建分支test,并与本地分支进行关联: 方法1: git push ...

  6. AUTO Uninstaller 9.3.28 最新免费密钥绿色版下载【转载】

    大家在使用autodesk系列软件之后,想要彻底卸载清除重新安装却发现无法卸载或者清除不干净的问题,这该怎么办?这里小编就给大家分享一个好用的CAD清理工具AUTO Uninstaller,轻松卸载a ...

  7. C#实现统一登录(SSO)

    SSO的基本概念 SSO英文全称Single Sign On(单点登录).SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统.它包括可以将这次主要的登录映射到其他应用中用于同 ...

  8. 个人PSP(四则运算)升级

    源代码管理平台Gitbee地址:https://gitee.com/chen-haijin/ 1.题目要求:能自动生成小学四则运算题目,且每一道题目的运算结果不能为负.除了支持整数运算外,还要支持真分 ...

  9. Linux让部署在服务器上的项目一直保持运行状态…&跑多个项目

    在idea通过package得到的.jar包或者.war包可通过 java -jar xxx.jar/xxx.war 命令直接在linux或者windows系统运行:   将打好包的项目放在linux ...

  10. IOS文件下载时,文件名的处理

    string contentType = MimeMapping.GetMimeMapping(name);var isIOS = false; if (Request.UserAgent != nu ...