我正在复制旧版Firefox插件bbCodeXtra的功能。
我想出了一个表格,其中详细列出了所有功能,其层次结构等。
使用传统的菜单系统,我将得到如下所示的菜单:
browser.menus.create({
id: "test_clipboard",
title: " &Test Clipboard",
contexts: ["all"]
}, onCreated);
browser.menus.create({
id: "clipboard",
title: " Check Clipboard",
contexts: ["all"]
}, onCreated);
这将馈入类似这样的case语句:
browser.menus.onClicked.addListener((info, tab) => {
switch (info.menuItemId) {
case "test_clipboard":
browser.tabs.sendMessage(tab.id,{runwhat: "zzBBCode", ParseArg: "[b]{{selection}}[/b]"});
break;
case "clipboard":
browser.tabs.sendMessage(tab.id,{runwhat: "zzBBCode", ParseArg: "[b]{{selection}}[/b]"});
break;
}
});
问题是,在各种选项之间(不包括来自用户的自定义标签),我有100多个菜单选项。 (您有bbCode,Vbulletin,markdown,html,xml等子菜单,以及每个子菜单下方的子菜单)
我想做的是一个这样的表,我已经在电子表格中设置了这个表(不要嘲笑我),就像这样:
| Menu ID | Menu Title | Parent ID | Contexts | Code to Execute |
| MenuID1 | MenuTitle1 | ParentID1 | Context1 | Code to Execut1 |
| MenuID2 | MenuTitle2 | ParentID2 | Context2 | Code to Execut2 |
我认为在这种情况下,以某种表格格式表示菜单结构可以简化菜单的编写和调试。
我的问题是是否有某种数组/对象/编程技巧可以使我做到这一点?
基本上,人们可以一目了然地确定所有菜单中的内容,而不是缓慢地浏览到每个菜单项以进行故障排除。
看到我的代码多么丑陋,很可能导致癌症,我认为当我或我尚未癌变的继任者尝试更新或维护它时,应该使它尽可能可读。
最终菜单结构应如下所示: Menu Structure Image