能否直接重新载入menuTemplate文件?

来源:11-4 动态修改菜单项

三生若空白

2020-03-21

老师您好,我看完了这节课,也用您的方式实现了一遍。但是我想了想,如果到时候需要添加菜单项,那么macOS和window对应的代码是不是又得改一遍?而且这种写死了的索引日后如果出现了bug要找起来是不是会比较困难?而且感觉各种代码也非常的分散,您看这几节课中各个文件中都出现了Store,到时候需要修改相关代码的时候就需要改正全部地方,这样是不是会有不便?
于是我想到直接将菜单重新加载一遍,我觉得这样应该能改善上述的问题,在查阅相关资料之后我实现了重新加载的操作,以下是我的代码:

ipcMain.on('update-the-menu', () => {
        delete require.cache[require.resolve('./src/menuTemplate')]
        menuTemplate = require('./src/menuTemplate')

        menu = Menu.buildFromTemplate(menuTemplate)
        mainWindow.setMenu(menu)
})

想请问您:我的想法正确吗?这种做法会更好吗?有没有什么缺点?针对这个问题存在更好的解决方法吗?

写回答

2回答

张轩

2020-03-22

同学你好 我觉得你的改动非常好 解决了menu 的很多痛点,我当时实现的时候就是按照官方网站的做法进行简单的拷贝复制 没有进一步思考重用性等问题 你觉得你可以尝试给项目提一个 pr,很喜欢你的解决方案!

0
1
三生若空白
谢谢老师的欣赏!已经提交请求了
2020-03-22
共1条回复

三生若空白

提问者

2020-03-21

以上代码能够成功运行

0
0

2024更新 Electron+React+七牛云实战跨平台桌面应用

开发一款自动云同步的 Markdown 文件管理软件

1252 学习 · 463 问题

查看课程