Javascript/Angular:小助手函数的放置位置
我正在开发一个angular应用程序,这是我继承的。我发现未转义的正则表达式有一个bug,所以我想添加一个函数来转义正则表达式,如下所示:Javascript/Angular:小助手函数的放置位置,javascript,angularjs,helper,Javascript,Angularjs,Helper,我正在开发一个angular应用程序,这是我继承的。我发现未转义的正则表达式有一个bug,所以我想添加一个函数来转义正则表达式,如下所示: function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string } 没什么大不了的,对吧?但是把这个放在哪里呢?正则表达式在控制器中使用。但是,在作用域中
function escapeRegExp(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
没什么大不了的,对吧?但是把这个放在哪里呢?正则表达式在控制器中使用。但是,在作用域中使用此escapeRegExp
函数是否有意义,如下所示:
$scope.escapeRegExp = function(string) {
return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string
}
我有点困惑,这些小函数最好放在哪里。最佳实践是什么?如果希望重用这段代码,请将其作为服务放到单独的模块(utils/common/shared)中
如果您希望仅将这段代码用于此控制器-将其作为函数提取到单独的文件中,在我看来,这就像AngularJS?如果ui需要访问它,您只将其放入$scope中。如果是这样的话,那么这是一个很好的放置位置。我希望只在控制器内部使用这段代码。我可以把第一个版本(不含$scope)扔到控制器定义中,今天就到此为止,还是在其他地方定义函数更好?根据我的经验,如果你处理正则表达式(或数学运算),最好将它们分开,并大量地覆盖测试。正则表达式非常脆弱,容易更改。当需求发生变化时,这种方法将使您免于出现bug。我同意您关于将事情分开的观点,但这是一个巨大的项目,我只想修复一个bug,在执行匹配之前,regex没有正确转义。因此,我想添加这一行,以便转义字符串。由此产生了一个问题:在angularjs/javascript中,在何处放置这么小的一行程序。所以,在控制器定义中有一个非作用域辅助函数是可以的,我想?我会说这是可以的