我做了一些研究,发现大部分都已经好几年了。我是JS的新手,我正在逐步建立我的知识。
Console.log()是一个非常有用的工具,但是我非常警惕它的总体性能不佳(作为基本示例,https://jsperf.com/console-log1337/16或https://jsperf.com/console-log1337/33)以及不良声誉。 / p>
如果我需要在生产应用程序/网站中保留console.log()样式的错误消息,那么是否有更高性能的替代方法可用于Vanilla JS(无框架/库)?
我最初的想法是将所有日志项推送到一个数组中,以便稍后收集(如果需要),但是似乎不能很好地与Promise.all()结合使用-而不是说10数组中的所有项目,而是取最后一个值的单个数组或10个单独的数组。
是否有本机或最推荐的替代方法(请注意,此方法对“意见征询”开放-我不知道该怎么写!)?
Ps-抱歉,缺少格式...移动电话!
答案 0 :(得分:2)
...表现不佳
其中一个用例将调用空函数与调用console.log
进行比较。 JIT编译器可能会内联一个空函数,因此您实际上将完全没有代码与console.log
进行了比较。当然,根本没有代码会更快。
除了登录到渲染循环或执行得非常频繁的任何事情外,我从未经历过由于记录而引起的任何(明显)延迟。
...信誉不好
严重吗?在我看来,与其他语言相比,JS具有调试的好方法(可能是因为JS有最好的bug :)),因为您可以“实时”查看嵌套结构,可以在断点处暂停执行,可以使用{准备调试代码{1}}语句,您可以转储整个内存,可视化GC行为,热功能等等。是的,所有这些功能都会降低性能,但是控制台的性能却很好。
香草JS(没有框架/库)是否有更高性能的替代品?
日志记录直接写入执行JavaScript的引擎中,这意味着它可以访问许多您无法通过JS访问的内容,而且本机代码始终比编译的JavaScript快(或者同样快,但没人能保证) )。
如果需要在生产应用程序/网站中保留console.log()样式的错误消息...
谁应该阅读此日志?您是否想让客户在出现错误的情况下查看控制台?
登录Production不应记录您通过调试使用的所有内容,而应记录足以跟踪错误的信息,因此,一些痕迹可以找出发生错误的位置(例如“菜单打开”)以及错误本身。
如果您不想自己编写生产日志,请查看sentry for JS