含142个正则表达式的Angular服务编译异常缓慢问题求助
Angular编译异常:大量正则表达式导致编译停滞问题
问题背景
将原本运行正常的Firebase Cloud Functions西班牙语转国际音标(IPA)服务改为Angular同步服务后,出现编译异常:
- 服务包含142个正则表达式时,编译卡在77%(显示“Generating browser application bundles...”)无法完成;
- 前50个正则表达式时编译正常,但每新增一个都会明显拖慢编译速度;
- 活动监视器显示CPU空闲率65%,内存、能耗、磁盘及网络压力均较低,但电脑风扇高速运转、机身发烫。
代码示例
以下是服务中处理字母v的规则代码片段:
// Rule 12, 'v' // if the word includes 'v' if (word.includes('v')) { rulesArray.push('12'); // if 'v' is the first letter if (word.charAt(0) === 'v') { ipaWord = ipaWord.replace('v', '7'); // replace 'v' with '7' } // if word includes 'mv' if (word.includes('mv')) { const regexp = /mv/gi; ipaWord = ipaWord.replace(regexp, 'm7'); // replace 'mv' with 'm7' } // if word includes 'nv' if (word.includes('nv')) { const regexp = /nv/gi; ipaWord = ipaWord.replace(regexp, 'n7'); // replace 'nv' with 'n7' } const regexp = /v/gi; ipaWord = ipaWord.replace(regexp, 'β'); // replace 'v' with 'β' in all other cases const regexpRestore = /7/gi; ipaWord = ipaWord.replace(regexpRestore, 'b'); // restore 'b' } // close Rule 12, if the word includes 'v'
疑问与诉求
- 编译异常是代码本身存在问题,还是Angular对大量正则表达式的兼容性不佳?
- 能否通过Chrome DevTools定位编译停滞的具体代码环节?
- 将原JavaScript文件转为TypeScript时,VS Code提示变量未声明(实际已在顶部声明),仅重启TypeScript服务可解决,这是什么原因?
- 不愿将142个正则表达式合并为一个超级正则(会严重降低代码可读性),请求其他可行的解决方案。
内容的提问来源于stack exchange,提问作者Thomas David Kehoe
相关产品推荐
相关产品推荐

