跳到主要内容

路由配置

路由配置位于模块的 config/route.js,用来配置当前模块的页面路由

当你创建一个新模块后,这个文件的默认内容是这样的

/**
* login:是否需要登录
* platform:支持的平台(weapp, h5, rn)不配置支持所有
* subPackage:是否将其设置为分包
* home: 是否是主页 是主页的页面将会被排在前面
*/
const config = {
path: 'pages',
pages: {
'modeName/index': {
pages: {
index: {},
},
},
}
}

module.exports = config
信息

这是一个node模块,需要用 module.exports 导出一个默认对象

下面来详细介绍,这些配置的用途

path

用于指定页面所在的目录,默认 pages,也就是页面文件放在模块的 pages 文件夹下,你可以修改这个字段,放在其他文文件夹,或者删除这个配置,可以将页面放在模块的根目录下

为什么会出现这个配置?

  • 配置一个path后,你可以将页面放在同一个文件夹内,防止页面和其他功能放在一起造成混乱
  • 配置 path 后,也不需要在路径中填写这个 path
  • 使用 route 导航路由时,也可以省略这个 path, route.push('modename/index/index')

pages

页面路由配置,这个配置与原生的Taro路由配置不一样,经过了一层封装,将一个文件夹作为一个对象进行处理,文件夹中的页面就是这个对象pages中的键名

{
// 文件夹
'modeName/index': {
// 页面列表
pages: {
// index 页面
index: {},
// log 页面
log: {}
},
// 其他配置
}
},

这样做是为了方便对路由进行一些配置,下面介绍这些配置的用法

platform

用于平台筛选,例如某个文件夹或者页面仅用于h5端,可以这样配置

{
// 文件夹
'modeName/index': {
pages: {
index: {
// 如果是这个页面用于h5
platform: ['h5']
},
log: {}
},
// 如果是这个文件夹用于h5
platform: ['h5']
}
},

subPackage

将某个文件夹用于分包,仅能配置在文件夹上

{
// 文件夹
'modeName/index': {
pages: {
index: {},
log: {}
},
// 将这个文件夹分包
subPackage: true
}
},

home

将某个页面设置为主页,最终这个页面会配排序到页面列表中的第一个,请勿在分包中设置主页

{
// 文件夹
'modeName/index': {
pages: {
index: {
// 将这个页面设置为首页
home: true
},
log: {}
}
}
},

这个配置很有用,通常在你作为入口模块的模块中,入口页面中需要配置

login

这个配置是user模块用的,指定当前的文件夹或者页面是否需要登录,如果需要登录,使用 route 跳转页面时,如果未登录,先跳转到登录流程,登录成功后继续跳转到该页面

{
// 文件夹
'modeName/index': {
pages: {
index: {
// 如果文件夹为设置登录,则可以单个页面开启登录
login: true
},
log: {
// 设置文件夹登录后,可以设置单个页面关闭登录
login: false
}
},
// 整个文件夹需要登录
login: true
}
},
信息

这个配置是user模块定制的,因为比较常用,顾写在此处

disablePages

因为系统是模块化设计的,在你依赖的模块中可能有的页面你根本就没有使用到,但是默认它们会被编译到你的项目中,这样就会增大你的项目体积,甚至可能导致小程序无法上传,所以这个配置的目的就是配置一些没用到的页面禁用

一个数组 要禁用的页面列表,这个项目采用includes进行匹配,也就是说,你可以只配置页面路径的一部分

[
'duxapp/pages/index/index',
'modename/pages/'
]
信息

此处的页面路径需要包含path

transfer

路由转移配置,可以将跳转到A页面重定向调转到B页面

情景:duxcmsMall的商品详情不符合我项目的页面设计,则可以在当前模块重新写一个商品详情页面,使用配置让他跳转到我新写的商品详情,这个配置将会同时起到禁用duxcmsMall的商品详情页面的功能

{
'duxcmsMall/goods/detail': 'modeName/pages/goods/detail'
}

这样配置将会把key页面跳转到value页面,使用下面的两个跳转方法,都会跳转到 modeName/goods/detail 页面

route.push('duxcmsMall/goods/detail')
route.push('modeName/goods/detail')

也可以通过前缀匹配,将一些路由全部重定向,将 main/goods 开头的页面重定向到 shop/goods 文件夹下对应的页面

{
'main/goods': {
mode: 'start'
page: 'shop/goods'
}
}

某些时候需要将某个页面指定带参数的情况才重定向,按照如下配置 将 id=1 的情况进重定向

{
'main/goods/detail?id=1': 'shop/goods/detail'
}