HarmonyOS 鸿蒙Next 关于main_pages.json文件的问题

发布于 1周前 作者 bupafengyu 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 关于main_pages.json文件的问题

路由router报错Uri error. The uri of router is not exist.

然后我发现是需要在main_pages.json 里面配置一下

但是呢  我又有许多module  只有入口那个有main_pages.json文件 

想问下是所有需要用到路由的页面都在这同一个main_pages.json里面配置吗?还是每个module里都要创建自己的main_pages文件

还有就是跨module跳转怎么配置呢  这个文档没写配置问题啊

3 回复

感谢,大概懂了,不知道大佬方不方便帮我看下这个问题https://developer.huawei.com/consumer/cn/forum/topic/0208167693005583313?fid=0109140870620153026

我也没少配置什么呀   目录结构也很简单,同级的,但是就说url非法不对

在 HarmonyOS NEXT 中,不一定要把所有路由相关的页面都放在入口模块的main_pages.json文件中进行配置。

不过把所有的路由配置放在同一个文件中确实更加方便管理

对于复杂的应用,每个模块可以有自己的main_pages.json文件.这样有助于实现模块化的路由管理。比如每个模块都可以有自己独立的跳转逻辑,在每个模块的main_pages.json里配置就可以。

那么接下来解释最后一个问题,跨module跳转怎么配置

首先要声明一下模块间的依赖问题

如果模块A要跳转到模块B中的页面,模块A的module.json5文件,需要包含下面的内容

--------------------

{

    "dependencies": {

        "moduleB": {

            "src": "entry:///moduleB",

            "version": "1.0.0",

            "type": "required"

        }

    }

}

--------------------------

接下来是路由配置问题

在发起跳转的模块(如模块A)的main_pages.json(或者目标模块B的main_pages.json,具体取决于路由设计)中,需要添加对目标模块页面的路由配置。假设模块B中有一个页面PageB1,其路由路径为/pageB1,在模块A的main_pages.json,可以借用下面的思路

----------------------------

{

    "pages": [

        {

            "name": "PageA1",

            "uri": "/pageA1",

            "params": {

                "nextPage": {

                    "module": "moduleB",

                    "uri": "/pageB1"

                }

            }

        }

    ]

}

-----------------------------

在代码中实现跳转

在代码层面,需要根据路由框架的具体 API 来实现跨模块跳转。一般来说,需要获取路由对象并且读取配置的跨模块跳转信息,然后执行跳转操作。比如假设使用[@ohos](/user/ohos).router模块进行跳转:

我们在这里假设在模块A的PageA1页面中进行跨模块跳转,看会了就根据自己的实际情况修改一下就ok

-------------------------------

import router from '[@ohos](/user/ohos).router';

import { getCurrentPages } from '[@ohos](/user/ohos).router';

let currentPages = getCurrentPages();

let currentPage = currentPages[currentPages.length - 1];

let nextPageConfig = currentPage.params.nextPage;

router

.push({

    uri: nextPageConfig.uri,

    moduleName: nextPageConfig.module

});

这里首先获取当前页面的信息,然后读取配置的下一跳转页面(跨模块)的信息,最后使用router.push方法执行跨模块跳转

就完全ok了

关于HarmonyOS 鸿蒙Next中main_pages.json文件的问题,以下是一些专业解答:

main_pages.json文件在HarmonyOS鸿蒙Next中扮演着至关重要的角色,它主要用于存放路由所需的页面路径。该文件通常位于项目的“entry/src/main/resources/base/profile/”目录下。

在main_pages.json中,“src”字段包含了页面路由列表,每个页面路径都对应着一个可访问的页面。例如,若设计稿以1440为标准设计,可在“window”字段下设置“designWidth”为1440,以确保项目中的尺寸与设计稿一致。

在配置main_pages.json时,需注意确保每个页面文件都正确声明了“@Entry”注解,这是页面文件的入口标识。同时,文件路径需与main_pages.json中的声明保持一致,以避免编译报错。

如果在配置过程中遇到问题,建议仔细检查文件路径、注解声明以及JSON格式是否正确。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部