Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Angular 2 (pure = false)中的不纯管道对我的性能不好吗?

Angular 2 (pure = false)中的不纯管道对我的性能不好吗?
EN

Stack Overflow用户
提问于 2016-03-31 14:45:07
回答 2查看 4.5K关注 0票数 14

我有一个转换管道,它接受一个字符串作为键,并从字典中返回翻译后的字符串。管道看起来像这样:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import {Pipe, PipeTransform} from 'angular2/core';
import {TranslateService} from './translate.service';

@Pipe({
    name: 'translate',
    pure: false
})
export class TranslatePipe implements PipeTransform {

    constructor(private _translateService : TranslateService) {
    }
    transform(key: string): any {
        var translatedText = this._translateService.resources[key];
        if (translatedText)
            return translatedText;
        return key;
    }
}

我在模板中使用管道,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div>{{'login_EnterNewPassword'|translate}}</div>

它将在我的HTML中呈现如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div>Please enter a new password</div>

到目前一切尚好!

资源依赖于TranslateService,它拥有一个名为TranslatePipe的字典,其中包含当前语言的翻译。TranslateService的资源通过对服务器的ajax http调用加载,如果用户选择不同的语言,它可以在后台重新加载。

因为当发生这种情况时,我需要我的UI来更新所有文本,所以我将管道的纯属性设置为false。

每件事都很完美,但问题是,管道经常被执行,因为它是不纯的。如果用户输入10个字符的密码,更改跟踪将在每次按下和按下键盘时启动,并且对页面上所有不同的翻译文本执行管道上千次。

主要问题是:这是一件坏事吗?它对整体性能有多大的负面影响?

或者,是否有其他方法可以强制angular按需重新评估所有内容,例如仅当语言发生变化时?

EN

回答 2

Stack Overflow用户

发布于 2016-06-12 10:03:37

不纯净的管道对性能有相当大的影响,特别是当它们执行诸如复制、过滤和排序数组之类的重要工作时。

不纯管道在每个变化检测周期都会被调用,不管是什么。明智的做法是尽可能缓存结果,以避免在可能的情况下一遍又一遍地做相同的工作。

只有当输入值或参数发生更改时,才会调用纯管道。

如果可能,您可以保持管道的纯净,而不是添加一个额外的参数。更新该参数会导致管道再次运行。

票数 8
EN

Stack Overflow用户

发布于 2019-02-10 10:20:26

不建议使用不纯净的管道。我会影响你的表现。即使源代码没有改变,它也会被调用。

来看看这个。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
  name: 'empFilter',
  pure: false
})
export class EmpFilterPipe implements PipeTransform {
  private count = 0;
  transform(employees: Employee[], searchValue?: string): Employee[] {
    console.log(this.count++);
   }
}

onMouseOver(): void{

}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<div *ngFor="let emp of employees | empFilter : searchValue" 
     (mouseover)="onMouseOver()">
        {{emp.name}}
</div> 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36336697

复制
相关文章
AngularDart 4.0 高级-管道 顶
每个应用程序都以一个简单的任务开始:获取数据,转换它们,并将它们展示给用户。 获取数据可以像创建本地变量一样简单,也可以像通过WebSocket传输流数据一样复杂。
南郭先生
2018/08/14
6.4K0
AngularDart 4.0 高级-管道
                                                    顶
【Angular专题】——(2)【译】Angular中的ForwardRef
先做一个小声明,我们现在拥有一个AppComponent,并使用DI系统向其中注入了一个NameService,因为我们使用的是Typescript,所以需要做的工作就是在构造函数的参数中声明变量nameService的类型为NameService,这样做的目的是为了向Angular提供运行时解析依赖所需要的相关信息。
大史不说话
2018/12/27
3.2K0
【Angular专题】——(2)【译】Angular中的ForwardRef
Angular管道全面指南
管道是Angular中一个非常有用的功能,它可以帮助我们直接在组件模板中 formatting 数据,而不需要在组件类中包含复杂的逻辑。在本文中,我们将全面介绍Angular管道的用途、语法、常见内置管道等,并通过大量示例代码帮助大家深入理解管道的强大功能。
坑吭吭
2023/10/16
4640
Angular2 中的指令
组件:一种带有模板的指令;使用component来装饰组件类 属性指令:改变元素的外观或行为,如NgClass,NgStyle;使用Directive来装饰指令类 结构指令:向DOM中添加或删除元素,如NgIf,NgFor;使用Directive来装饰指令类
用户1437675
2018/08/20
1.7K0
scrapy中ROBOTSTXT_OBEY = False,不遵守Robot协议文件的规则
在scrapy中创建项目以后,在settings文件中有这样的一条默认开启的语句:
全栈程序员站长
2022/07/01
7110
Angular 自定义管道
本文将使用 UltimateAngular/angular-pro-src 中的示例,来一步步介绍自定义管道的相关知识。在该示例中,我们将定义一个 FileSizePipe 管道,它用于实现对文件大小进行格式化显示。
阿宝哥
2019/11/05
1.5K0
Shell中的管道
管道 管道,从一头进去,从另一头出来。 在Shell中,管道将一个程序的标准输出作为另一个程序的标准输入,就像用一根管子将一个程序的输出连接到另一个程序的输入一样。 管道的符号是|,下面的程序将cat的标准输出作为less的标准输入,以实现翻页的功能: $ cat source.list.bk | less tee 有时候我们想要同时将程序的输出显示在屏幕上(或进入管道)和保存到文件中,这个时候可以使用tee。 tee程序的输出和它的输入一样,但是会将输入内容额外的保存到文件中: $ cat hello.t
mwangblog
2018/07/04
9100
angular使用管道实现搜索功能
之前在没学精angular的时候,想实现搜索功能的时候,总是想着从数据库里获取搜索的结果,可殊不知,原来在angular中只需要简单的几行代码就实现了最常用的搜索功能. 下面就来说说如何实现: 1. export class person{ constructor( public name:string, public age:number ){ } } persons:Array<any>=[ new person('tom',20), new person(
杭州前端工程师
2018/06/15
4.1K3
【Angular教程】自定义管道
这是我参与8月更文挑战的第10天,活动详情查看:8月更文挑战 一、管道的作用 方便我们在模板中对我们的数据进行格式化处理。 二、内置的常用管道 具体API参照官网查询使用 DatePipe: 格式化日期 UpperCasePipe: 文本转为全部大写 LowerCasePipe: 文本转为全部小写 TitleCasePipe: 文本转为标标题形式(如: hello world=>Hello World) KeyValuePipe: 将对象转为键值对形式 JsonPipe: 转为JSON字符串
前端小鑫同学
2022/12/25
1.3K0
【Angular教程】自定义管道
(2)Angular的开发
什么是 ReactNative应用, 小程序与RN的关系 native端优化 Js端优化 ReactNative是? 用JavaScript来写App,性能好 异步编程
达达前端
2019/07/09
5490
Angular Pipe 快速入门
Angular 中 Pipe(管道) 与 Angular 1.x 中的 filter(过滤器)的作用的是一样的。它们都是用来对输入的数据进行处理,如大小写转换、数值和日期格式化等。
阿宝哥
2019/11/05
1.5K0
flutter中对列表的性能优化
下面是一些使用ListView对象呈现列表列表的代码,内部列表的shrinkWrap值设置为 true。shrinkWrap强行评估整个内部列表,允许它请求有限的高度,而不是通常的ListView对象高度,即无穷大!
徐建国
2021/11/30
3.6K0
flutter中对列表的性能优化
Angular 关于pipe
Angular 中的管道其实就是angularjs中的过滤器,用来转换数据然后显示给用户。 要创建一个管道,必须实现 PipeTransform 接口。这个接口非常简单,只需要实现transform方法即可。 使用管道的几个注意事项:
mafeifan
2019/03/14
1.5K0
Angular2 VS Angular4 深度对比:特性、性能
在Web应用开发领域,Angular被认为是最好的开源JavaScript框架之一。
葡萄城控件
2022/05/09
8.7K0
Angular2 VS Angular4 深度对比:特性、性能
RAID中的Stripe size对性能的影响?
配置RAID的时候,有个可以手工设定的参数:Stripe size. 逻辑驱动器的Stripe size,代表控制器每次写入一块物理磁盘的数据量,以KB为单位。
一见
2019/03/14
4.5K0
CPU 越多性能就会越好吗?
大多数情况是这样的,因为 CPU 可以提高运算速度。但这不是绝对的,假如我们的程序里有很多锁的概念,那就无法体现出多线程的多核性。那可能 CPU 的多少就不会有显著效果。一般遇到这种情况,许多公司会考虑把服务拆开。这就涉及到成本问题,也就是说增加 CPU 并不是最优解,我们还是需要考虑如何去优化锁。不过思考具体优化前我们可以先了解下池化技术。
用户7365393
2021/09/26
1.5K0
Angular 2 中的绑定的方法在无限循环吗?
我在自己的Ionic 2项目中,使用卡片列出数据: <ion-card *ngFor="let item of inspects"> 卡片中有一个导航按钮,根据每项的数据生成连接打开百度地图,我是这样绑定的: 页面: <a [href]="nav(item)" target="_blank" ion-button icon-left clear small> <ion-icon name="pin"></ion-icon> <div>导航</div> </a> 代码:
孙亖
2018/06/07
3.8K0
答应我,告别俗套的相关性图,好吗?
你是否也遇到“将自己的结果与其它研究结果比较”这样的问题,我们看看肺癌领域的大神Charles Swanton是怎样做的?这是2019年发表于Nature的一篇文章,比较了本研究得到的免疫细胞浸润结果 与Danaher et al.团队得到的免疫浸润结果的相关性,颜色越红代表相关性系数更强,越蓝代表负相关性越强,黑色的叉号代表两者相关性不显著。
作图丫
2022/03/29
4190
答应我,告别俗套的相关性图,好吗?
答应我,别在CDH5中使用ORC好吗
当我们在使用ORC文件格式创建Hive表,并且对Hive表的schema进行更改后,然后进行如insert into…select或insert overwrite … select会报错,以下具体看看报错。
Fayson
2018/11/16
3.2K0
点击加载更多

相似问题

在Angular 2中混合纯管道和不纯管道

21

不纯管道的角度使用目的

15

管道中的@component不工作angular2

16

角2不纯管与指令性能

14

替代不纯管道的角度6?

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文