关于angularjs过滤器的理解

位流苔原
• 阅读 1208

angularjs中的过滤器使我们经常使用的,但是对其的理解只在能能够使用的层面上。这次深入学习了一下。

在Controller中使用过滤器

在DOM中使用过滤器的弊端

我们在使用过滤器的时候,更多的是在DOM中使用管道符(|)来进行过滤,因为简单嘛。但是在它简单的背后是牺牲了性能,在DOM中的过滤器会造成额外的内部开销,所以在Controller中使用过滤器会更快一些。

但是有人就会说了:我并没有感到区别呀。这是你过滤的对象还不够多。

比如我们有时会对ng-repeat使用过滤器,这时当输入的数组中存在几千条数据的时候,我们就能明显的看出加载页面时会变得缓慢。

区别

那在Controller中使用过滤器和在DOM中使用差在哪了呢?

这是因为在ngRepeat会在每次的$digest循环的时候都调用一次。由于angular存在脏检查机制,所以不管执行任何的操作都会使得重新检查内部的$watch(),而每次动作都有可能改变数组集合,所以就要每个$digest的后面执行一下过滤器。

关于angularjs过滤器的理解

Controller中调用过滤器就不同了,我们可以限定在哪些操作后面执行过滤器,这样就减少了不必要的消耗。

关于angularjs过滤器的理解

建议

另外,过滤器就是给他一个输入,然后它给你个输出,其实原理就是一个函数。但是通过上面的分析,过滤器的执行的特殊性,所以就不要在过滤器中使用过于复杂的逻辑代码,这样就会拖慢应用。

当需要执行复杂的逻辑的时候,还会抽象成一个Service比较好。

总结

angularjs中,过滤器还是比较简单的,但是仔细研究一下还是蛮有意思的。


参考:
https://toddmotto.com/use-con...

点赞
收藏
评论区
推荐文章
Easter79 Easter79
4年前
springcloud gateway高级功能之根据参数自定义路由Predicate
背景我们使用了springcloudgateway作为也给路由转发功能,由于历史遗留问题,不仅仅需要根据path转发,还需要根据get或者post中的参数进行转发解决方案这里我们使用自定义的Predicate进行转发简介这里简单介绍下相关术语(1)Filter(过滤器):和Zuul的过滤器在概念上类似,可以使
Easter79 Easter79
4年前
springboot使用Fiber纤程踩过的坑
@RequestAttribute为null在springboot中使用@FiberSpringBootApplication注解标注在SpringBootApplication上时,发现在拦截器(或过滤器)中调用request.setAttribute设置的值,在controller中使用@RequestAttribute获取却是null,而去
虾米大王 虾米大王
3年前
java代码065
code065.jsp字符编码过滤器的使用添加图书信息图书编号图书名称作者价格
Easter79 Easter79
4年前
SpringMVC的拦截器(Interceptor)和过滤器(Filter)的区别与联系
一简介(1)过滤器:依赖于servlet容器。在实现上基于函数回调,可以对几乎所有请求进行过滤,但是缺点是一个过滤器实例只能在容器初始化时调用一次。使用过滤器的目的是用来做一些过滤操作,获取我们想要获取的数据,比如:在过滤器中修改字符编码;在过滤器中修改HttpServletRequest的一些参数,包括:过滤低俗文字、危险字符等关于
Easter79 Easter79
4年前
SpringMVC【开发Controller】详解
前言本文主要是讲解在Controller中的开发,主要的知识点有如下:编码过滤器使用注解开发注解@RequestMapping详解业务方法接收参数字符串转日期重定向和转发返回JSONSpringMVC过滤编码器在SpringMVC的控制
Stella981 Stella981
4年前
SpringBoot 的过滤器 Filter 配置的三种方式
SpringBoot过滤器配置有三种方式1\.@ServletComponentScan@WebFilter,可配置过滤路径,但没有顺序(顺序是由过滤器命名决定)在启动类上使用 @ServletComponentScan,在过滤器类上使用 @WebFilter(urlPatterns{"/test/path"})
Stella981 Stella981
4年前
Google布隆过滤器与Redis布隆过滤器详解
一、什么是布隆过滤器?布隆过滤器可以用来判断一个元素是否在一个集合中。它的优势是只需要占用很小的内存空间以及有着高效的查询效率。对于布隆过滤器而言,它的本质是一个位数组:位数组就是数组的每个元素都只占用1bit,并且每个元素只能是0或者1布隆过滤器除了一个位数组,还有K个哈希函数。当一个元素加入布隆过滤器中的时候,会进行如下操作:
Stella981 Stella981
4年前
Flask基础(14)
Flask基础(13)自定义过滤器什么是过滤器?    过滤器的本质就是函数。有时候我们不仅仅只是需要输出变量的值,我们还需要修改变量的显示,甚至格式化、运算等等,而在模板中是不能直接调用Python中的某些方法,那么这就用到了过滤器。使用方式:过滤器的使用方式为:变量名|过滤器。
Stella981 Stella981
4年前
SpringBoot过滤器中的异常处理
在昨天的文章我跟大家分享了SpringBoot中异常的处理中,我说了一个需要注意的点,就是过滤器中抛出的异常无法被异常处理类捕获,然后这个朋友就问应该如何处理。其实处理这种问题的处理方式有好几种,那么我就简单分享一下我近期一个项目中的处理方式。Filter中的异常处理思路首先我们要明白,在过滤器中我们一般是不会写很长
Easter79 Easter79
4年前
SpringBoot过滤器中的异常处理
在昨天的文章我跟大家分享了SpringBoot中异常的处理中,我说了一个需要注意的点,就是过滤器中抛出的异常无法被异常处理类捕获,然后这个朋友就问应该如何处理。其实处理这种问题的处理方式有好几种,那么我就简单分享一下我近期一个项目中的处理方式。Filter中的异常处理思路首先我们要明白,在过滤器中我们一般是不会写很长
一文理解布隆过滤器和布谷鸟过滤器
作者:京东保险王奕龙最近在大促中使用到了布隆过滤器,所以本次借着机会整理下相关内容,并了解了布谷鸟过滤器,希望对后续学习的同学有启发\布隆过滤器布隆过滤器是概率性数据结构,用于检查元素是否存在集合中。布隆过滤器并不存储集合中的所有元素,而是存储元素的哈希表