HarmonyOS 鸿蒙Next 如何读取文件router_map.json

HarmonyOS 鸿蒙Next 如何读取文件router_map.json

【设备信息】 Mate60
【API版本】 Api12
【DevEco Studio版本】 5.0.3.700
【问题描述】

我们遵照navigation给出的新系统路由注册到profile的router_map.json文件中,但是我们希望对此router_map做一定的扩展,比如我们

{
  "routerMap": [
    {
      "name": "testPage",
      "pageSourceFile": "src/main/ets/router/TradeTestPage.ets",
      "buildFunction": "getTestPage",
      "data": {
        "description" : "this is PageOne",
        "itemName": "1-21-13-1-3"
      }
    }
  ]
}

希望在这个json文件中增加自定义的itemName扩展跳转逻辑,为此我们需要读取router_map文件,把所有itemName和该路由name进行匹配,然而当我使用$r(“app.profile.router_map”)读取router_map是居然不让读,请问有啥办法解决这个问题吗,

另外原来的自定义动态路由注册的方案很不好用所以我们打算切换到这个系统路由注册方案,因为自定义太麻烦了


更多关于HarmonyOS 鸿蒙Next 如何读取文件router_map.json的实战教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

目前 route_map.json 暂不支持自定义配置,相关信息请参考: https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-arkui/arkui-ts/ts-basic-components-navigation.md#示例2

eg:

// route_map.json
{
"routerMap": [
{
"name": "pageOne",
"pageSourceFile": "src/main/ets/pages/PageOne.ets",
"buildFunction": "PageOneBuilder",
"data": {
"description": "this is pageOne"
}
},
{
"name": "pageTwo",
"pageSourceFile": "src/main/ets/pages/PageTwo.ets",
"buildFunction": "PageTwoBuilder"
}
]
}

这个组件暂无升级计划

更多关于HarmonyOS 鸿蒙Next 如何读取文件router_map.json的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙Next)中,读取router_map.json文件可以通过ResourceManagerFile类实现。首先,确保router_map.json文件已放置在resources/base/profile/目录下。使用ResourceManager获取文件资源路径,然后通过File类读取文件内容。具体步骤如下:

  1. 获取ResourceManager实例:

    const resourceManager = getContext().resourceManager;
    
  2. 获取router_map.json文件的路径:

    const filePath = await resourceManager.getRawFile('router_map.json');
    
  3. 使用File类读取文件内容:

    const file = await fileIo.open(filePath, fileIo.OpenMode.READ_ONLY);
    const content = await file.readText();
    file.close();
    
  4. 解析JSON内容:

    const routerMap = JSON.parse(content);
    
回到顶部