[已解答] HarmonyOS 鸿蒙Next main_page.json读取 项目文件进行重构后引起的page路径修改造成的冗余工作量问题的建议

[已解答] HarmonyOS 鸿蒙Next main_page.json读取 项目文件进行重构后引起的page路径修改造成的冗余工作量问题的建议 背景:

当前对项目文件进行重构后,main_page.json变化,随之而来的是大量的相关路由查找修改等配置工作。

建议:

① 让IDE维护一个文件Routes,内部定义一个枚举,这个枚举与main_page.json的数据是绑定的。

Routesmain_page.json统一由IDE进行维护管理。

或者

② IDE提供编译期脚本插入功能,让开发者能在编译阶段,自定义脚本,对main_page.json文件进行读取,覆写文件以达到自定义路由枚举的目的。


更多关于[已解答] HarmonyOS 鸿蒙Next main_page.json读取 项目文件进行重构后引起的page路径修改造成的冗余工作量问题的建议的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

mark一下。现在默认页面路由通过页面路径指定,确实很不方便开发和维护。

更多关于[已解答] HarmonyOS 鸿蒙Next main_page.json读取 项目文件进行重构后引起的page路径修改造成的冗余工作量问题的建议的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


相信大家有和我一样,遇到了重构项目文件,需要修改硬代码的问题。

这里必须赞一下 flutter的get_cli。

这里自问自答,希望能给您提供一点帮助。

思路:因为当前API限制了无法读取profile/xx_page.json,无法在运行时动态获取,那就只能在编译期写入。利用 hvigorfile.ts 嵌入脚本,在编译期动态覆写文件,将路径更新到静态声明文件中。虽然hvigorfile.ts中说明了当前无法修改,但是试了一下,还是可以执行脚本命令的。

实现:

①:在 ets 下创建一个文件,专门用来声明页面路径

②:在module 下的 hvigorfile.ts中编写脚本,每次编译都覆写Pages.ets

下面呈上自己的测试脚本代码

这是`entry/hvigorfile.ts`中的全部内容,写入路径根据实际情况自行修改。

```ruby
/
/ Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently.
export { hapTasks } from '[@ohos](/user/ohos)/hvigor-ohos-plugin';

// 导入文本操作组件
let fs = require('fs');

update_module_pages_path();

function update_module_pages_path() {
  try {
    //读取文件信息
    let path = require('path');
    let dirName = path.join(__dirname); //获取跟目录
    let data = fs.readFileSync(dirName + "/src/main/resources/base/profile/main_pages.json", 'utf-8');
        data = JSON.parse(data);
    let pages = data.src;

    let content = contentWithPage(pages)

    let writePath = dirName + "/src/main/ets/util/Pages.ets"
    writeContent(writePath, content)
  } catch (err) {
    log("发生了错误,请反馈至Janzen");
  }

}

function contentWithPage(pages: [string]) {
  if (pages.length <= 0) return ""

  /* # file: /src/main/ets/util/Pages.ets

    abstract class Pages {
      // public static TabBarPage = "xxx"
      // public static xxx = "xxx"
    }

    export default Pages
   * */

  var content = "/* \n" +
  " All pages statement, This file is maintained by the script, please do not modify it \n" +
  " 所有页面路径的声明,此文件由脚本维护,请不要修改" + "\n */"

  content = content + " \n  abstract class Pages { \n"

  pages.forEach(page => {
    if (page) {
      let page_name_arr = page.split("/");
      let page_name = page_name_arr[page_name_arr.length - 1]
      if (page_name) {
        content = content + `\n  public static ${page_name} = "${page}" `
      }
    }
  });

  content = content + "\n\n } \n\n  export default Pages "

  return content
}

/**
 * 写入内容
 * [@param](/user/param) path
 * [@param](/user/param) content
 */
function writeContent(path, content) {
  try {
    fs.writeFile(path, content, function (err) {
      if (err) {
        log("写入 发生了错误,请反馈至Janzen" + "\n error: \n" + JSON.stringify(err) ?? '');
      }

    });
  } catch (err) {
    log("写入 发生了错误,请反馈至Janzen" + "\n error: \n" + JSON.stringify(err) ?? '');
  }

}

function log(message) {
  console.log(message);
}

在HarmonyOS鸿蒙Next开发中,main_page.json文件用于定义页面的路径和配置。当项目文件进行重构后,如果页面路径发生变化,可能导致main_page.json中的路径引用失效,进而需要手动修改路径,增加了冗余工作量。为了避免这种情况,可以采用以下方法:

  1. 模块化设计:将页面按照功能模块进行划分,每个模块独立维护自己的页面路径配置。这样在重构时,只需修改对应模块的路径配置,而不需要全局修改。

  2. 使用相对路径:在main_page.json中使用相对路径来引用页面文件,而不是绝对路径。这样可以减少因文件位置变化而导致的路径修改。

  3. 自动化工具:开发或使用自动化工具,在项目重构后自动检测并更新main_page.json中的路径引用。这样可以减少手动修改的工作量。

  4. 配置文件管理:将页面路径集中管理,通过统一的配置文件或常量来引用页面路径。这样在路径变化时,只需修改配置文件或常量,而不需要逐个修改main_page.json中的路径。

通过以上方法,可以有效减少因项目重构导致的main_page.json路径修改的冗余工作量。

回到顶部