Angularjs 在Angular中错误地使用可重用指令时,报告错误的好模式是什么?

Angularjs 在Angular中错误地使用可重用指令时,报告错误的好模式是什么?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,在Angular中编写可重用指令时,报告错误的好模式是什么 我以angular指令的形式编写了一些组件,并打算重新使用它们,希望开发人员稍后会加入这个项目,并且没有我现在掌握的关于使用该指令的所有信息 我正在记录指令及其使用的代码,并且我有一些单元测试,基本上是正确使用它进行其他“文档”的示例。我仍然希望开发人员在使用该指令构建页面时,能够返回有意义的响应/异常 是否有一种抛出常见异常或日志记录的模式,用于帮助向学习使用指令的开发人员传达指令的错误使用?您可以用于日志记录: console.lo

在Angular中编写可重用指令时,报告错误的好模式是什么

我以angular指令的形式编写了一些组件,并打算重新使用它们,希望开发人员稍后会加入这个项目,并且没有我现在掌握的关于使用该指令的所有信息

我正在记录指令及其使用的代码,并且我有一些单元测试,基本上是正确使用它进行其他“文档”的示例。我仍然希望开发人员在使用该指令构建页面时,能够返回有意义的响应/异常


是否有一种抛出常见异常或日志记录的模式,用于帮助向学习使用指令的开发人员传达指令的错误使用?

您可以用于日志记录:

console.log()

console.debug()

console.info()

console.warn()

console.error()

这些消息将位于调试器控制台中

查看评论这些函数的优秀文章

在这里查看我的答案:


Angular在指令缺少属性或使用不正确等情况下使用抛出异常/错误的模式。

虽然这可能是一个比Angular更一般的JS问题,但同样的理论仍然适用。您应该将内容包装在try/catch/finally块中,并在适当的地方抛出错误

function Blah(isRequired, isOptional){
    var X = 7, Y = 0;
    try{
        Y = X * isRequired;
    }
    catch(err){
        throw new Error('You must provide a value for "isRequired"');
    }
    finally{
        //this example has none, but do cleanup things here
    }
}
如果要显示日志记录,可以使用Angular包装器写入控制台。当使用IE并尝试写入console.debug时,它将通过将它们写入console.log来防止错误

设置:

myapp.config(['$logProvider', function($logProvider){
    $logProvider.debugEnabled(true);
})
.run(['$rootScope', '$log',
    function ($rootScope, $log) {
        'use strict';

        //create a reference to $log on the root scope
    $rootScope.$log = $log;
    }]);
用法:

$scope.$log.log(message);
$scope.$log.debug(message);
$scope.$log.info(message);
$scope.$log.warn(message);
$scope.$log.error(message);
还可以通过添加属性来启用/禁用指令中的日志记录。类似于启用了数据日志

<div data-log-enabled my-directive>
</div>

这避免了控制台不必要的输出,这可能会减慢应用程序的速度,还可以帮助开发人员尽量减少为了找到所需信息而必须阅读的内容量。

console.log('log message');看看:抛出一个错误,javascript中没有异常。如果您喜欢jshint,抛出一个空块错误
link: function(scope, element, attributes){
    if(attributes.logEnabled){
        scope.$log.debug('blah');
    }
}