繁体   English   中英

在Angular JS中删除帮助HTML注释?

[英]Remove helper HTML comments in Angular JS?

有没有办法阻止Angular创建“帮助”HTML注释? 例如,

<div ng-include="myTemplate"></div>

会转变成类似的东西

<!-- ngInclude: 'hurr-durr.html' -->
<div ng-include="myTemplate"></div>

我怎么阻止这个? 我查看了Angular源代码,我看到这些“帮助器”是由几乎每个指令中的无条件document.createComment生成的,所以我想通过使用一个配置设置就无法一次性阻止它们。提供者什么的。 但也许有一些没有“助手”的自定义Angular构建? 我想我可以写一些Yeoman / Grunt任务,每当我建立一个新项目时,从Angular的源中删除/评论.createComment-s。 或许你们知道一个小提琴已经做到了吗? 而且,这引出了我的最后一个问题:这些评论对于Angular的正常运作至关重要吗? 如果我删除它们,它会在我的应用程序中引起某种不稳定吗? 应该只重写CSS并“处理它”?

这些注释对于Angular如何处理某些元素至关重要。 目前不支持删除它们。 你有什么问题吗?

通过将此配置添加到角度模块,您可以删除这些角度注释的内容,以及一些角度附加到元素(例如ng-scope )的类:

myApp.config(['$compileProvider', function ($compileProvider)
{
    $compileProvider.debugInfoEnabled(false);
}]);

根据angular.js文档 ,在生产中执行此操作实际上是好的,并且应该会提高性能。

来自Angular Doc:

禁用调试数据

默认情况下,AngularJS将有关绑定和作用域的信息附加到DOM节点,并将CSS类添加到数据绑定元素:

作为ngBind,ngBindHtml或{{...}}插值的结果,绑定数据和CSS类ng绑定附加到相应的元素。

在编译器创建新范围的情况下,范围和ng-scope或ng-isolated-scope CSS类将附加到相应的元素。 然后可以通过element.scope()和element.isolateScope()访问这些范围引用。

像Protractor和Batarang这样的工具需要运行这些信息,但您可以在生产中禁用此信息,以便通过以下方式显着提升性能:

myApp.config(['$compileProvider', function ($compileProvider) {
  $compileProvider.debugInfoEnabled(false);
}]);

如果您希望使用此信息调试应用程序,则应在浏览器中打开调试控制台,然后直接在此控制台中调用此方法:

angular.reloadWithDebugInfo();

页面应该重新加载,现在调试信息应该可用。

有关更多信息,请参阅$ compileProvider和angular.reloadWithDebugInfo上的文档页面。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM