[已解答] HarmonyOS 鸿蒙Next main_page.json读取 项目文件进行重构后引起的page路径修改造成的冗余工作量问题的建议
[已解答] HarmonyOS 鸿蒙Next main_page.json读取 项目文件进行重构后引起的page路径修改造成的冗余工作量问题的建议 背景:
当前对项目文件进行重构后,main_page.json
变化,随之而来的是大量的相关路由查找修改等配置工作。
建议:
① 让IDE维护一个文件Routes
,内部定义一个枚举,这个枚举与main_page.json
的数据是绑定的。
此Routes
和main_page.json
统一由IDE进行维护管理。
或者
② IDE提供编译期脚本插入功能,让开发者能在编译阶段,自定义脚本,对main_page.json
文件进行读取,覆写文件以达到自定义路由枚举的目的。
更多关于[已解答] HarmonyOS 鸿蒙Next main_page.json读取 项目文件进行重构后引起的page路径修改造成的冗余工作量问题的建议的实战教程也可以访问 https://www.itying.com/category-93-b0.html
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
中的路径引用失效,进而需要手动修改路径,增加了冗余工作量。为了避免这种情况,可以采用以下方法:
-
模块化设计:将页面按照功能模块进行划分,每个模块独立维护自己的页面路径配置。这样在重构时,只需修改对应模块的路径配置,而不需要全局修改。
-
使用相对路径:在
main_page.json
中使用相对路径来引用页面文件,而不是绝对路径。这样可以减少因文件位置变化而导致的路径修改。 -
自动化工具:开发或使用自动化工具,在项目重构后自动检测并更新
main_page.json
中的路径引用。这样可以减少手动修改的工作量。 -
配置文件管理:将页面路径集中管理,通过统一的配置文件或常量来引用页面路径。这样在路径变化时,只需修改配置文件或常量,而不需要逐个修改
main_page.json
中的路径。
通过以上方法,可以有效减少因项目重构导致的main_page.json
路径修改的冗余工作量。