- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近一直在摆弄 Batarang 插件来分析一些性能。我注意到在每个日志的顶部都有一个专门用于称为“regularInterceptedExpression”的部分。任何人都可以解释这意味着什么以及提高性能的方法是什么。我在某处读到可能来自在指令中使用“=”属性。如果其他人也看到过这个,有解决办法吗?
最佳答案
如果你深入研究 AngularJS 代码,你可以看到函数 regularInterceptedExpression(scope, locals, allocate, input)
定义在函数 addInterceptor(parsedExpression, InterceptorFn)
内。唯一使用函数 addInterceptor(parsedExpression, InterceptorFn)
的地方是函数 $parse(exp, InterceptorFn, CheapChecks)
。这是字符串和其他监视被转换为函数的地方。您需要将 angular.js
文件更新为
1) 增强$parse(exp,interceptorFn,expandedChecks)
函数以保留解析的来源:
通过将 $$source
设置为 addInterceptor
函数的第一个参数来查找方法的结尾和每个 switch case 结束更新。
parsedExpression.$$source = exp; // keep the source expression handy
return addInterceptor(parsedExpression, interceptorFn);
case 'function':
exp.$$source = exp; // keep the source expression handy
return addInterceptor(exp, interceptorFn);
default:
noop.$$source = exp; // keep the source expression handy
return addInterceptor(noop, interceptorFn);
2) 在regularInterceptedExpression
函数内收集以下统计信息调用该函数:
var fn = regularWatch ? function regularInterceptedExpression(scope, locals, assign, inputs) {
var value = useInputs && inputs ? inputs[0] : parsedExpression(scope, locals, assign, inputs);
window.$$rieStats = window.$$rieStats || {};
window.$$rieStats[parsedExpression.$$source] = (window.$$rieStats[parsedExpression.$$source] ? window.$$rieStats[parsedExpression.$$source] : 0) + 1;
return interceptorFn(value, scope, locals);
3) 运行您的应用程序并检查统计信息,即打开开发工具并将 $$rieStats
写入 JavaScript 控制台。您应该看到 regularInterceptedExpression
函数调用的观察者数量。
Object.keys($$rieStats).sort(function(a,b){return $$rieStats[a]-$$rieStats[b]}).reverse().forEach(function(item){ console.log(item, $$rieStats[item])})
提示:您还可以将 $$rieStats
计数添加到另一个分支函数 oneTimeInterceptedExpression
来跟踪一次绑定(bind)。
关于javascript - Batarang 正则拦截表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37399363/
我曾尝试在本地站点、托管站点甚至 Angular 站点上使用它,但我得到的只是带有 Angular 的 HTML 列表。没有范围,没有模型,没有任何有用的东西。我假设它应该有助于在 Chrome 中使
我目前正在使用 AngularJS 1.3.0 稳定版和 Batarang Chrome 扩展。在监视树中,我注意到在我的许多范围内都有一个叫做“interceptedExpression”的东西。那
考虑以下因素: HTML Exploring directives Some text {{Info.Version}} Hello, {{Info
如果没有网络服务器,我无法运行 batarang chrome 扩展。在 Chrome 中加载本地文件时,模型根本不显示。我正在使用 --allow-file-access-from-files 参数
我最近一直在摆弄 Batarang 插件来分析一些性能。我注意到在每个日志的顶部都有一个专门用于称为“regularInterceptedExpression”的部分。任何人都可以解释这意味着什么以及
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 8年前关闭。 Improve this qu
我刚刚注意到 Batarang分析我的 AngularJS 应用程序显示如下: ngRepeatWatch | 64.2% | 136.0 毫秒 这比下一个报告的指令耗时多 10 倍。 这是否意味着我
(我将这篇文章添加到 Github 上类似/近期经历的长篇系列文章中。我希望这里有人能给出答案。) 哦,很好,我不只是愚蠢。 尝试通过书籍自学 Angular。当它调用 batarang 来显示小示例
我有一个关于 AngularJs 范围的问题,尤其是使用 Batarang Chrome 扩展程序检查这些范围的方式。 我有以下 html : My AngularJS App
我正在尝试使用 Angular Batarang Chrome 扩展来调试基于 AngularJS 的应用程序。 我们没有使用 ng-app="foo" 属性来引导应用程序,而是调用进行手动引导(请参
我想知道在 Internet Explorer 的调试和分析方面是否有 Chrome 扩展 Batarang 的替代插件(它甚至可以是 Edge,这很好)。 我们的组织最近禁止了 Chrome,并且我
我试图理解观察者,但我遇到了一些奇怪的问题。 我有这样的代码: HTML JS (function() { angular.module
我是一名优秀的程序员,十分优秀!