AngularJS优化指令:隐藏元素时自动禁用观察者

需积分: 10 0 下载量 61 浏览量 更新于2024-11-09 收藏 8KB ZIP 举报
资源摘要信息:"Disable-When-Hidden:用于删除隐藏观察者的 AngularJS 指令" 知识点详细说明: 1. 概述 本篇文档介绍了名为 "Disable-When-Hidden" 的AngularJS指令,该指令的主要功能是移除与视口外元素相关的观察者(watchers)。此指令的目的是优化性能,尤其是在列表滚动或其他视口操作时,减少不必要的DOM操作和计算。 2. 使用场景 在Web开发中,特别是在使用AngularJS框架时,经常需要对用户界面元素进行动态监控和更新。AngularJS通过“观察者”来响应数据模型的变化。当页面中有许多元素或复杂的数据绑定时,不活跃(即当前不在视口中)的元素仍可能会持有观察者,这将消耗浏览器资源。因此,"Disable-When-Hidden" 指令应运而生,帮助开发者通过避免对不在视口内的元素进行不必要的更新来提高性能。 3. 指令设计原理 该指令通过监听滚动事件来实现其功能。当一个元素被判定为隐藏(不在视口中),指令会自动从AngularJS的作用域中移除相关的观察者。这意味着一旦元素不再可见,与之相关的任何DOM更新都会被暂时禁用,直至元素重新进入视口时再重新添加观察者。 4. 指令的组成 指令由两个主要部分组成: - 第一部分放置在父元素上,负责监测包含的元素是否被隐藏。 - 第二部分用于特定的元素,标记这些元素应在隐藏时移除观察者。 5. 指令的实现细节 使用该指令需要在元素上设置特定的属性(如示例中的"xss=removed",虽然这里的"xss"属性在文档中没有明确的解释,它可能是一个示例占位符或者特定于某项目的属性)。在视图模型中,可以设置相关的属性来标记元素应何时移除观察者。 6. 性能优化 在大型应用中,频繁的DOM操作和数据绑定可能会成为性能瓶颈。"Disable-When-Hidden"指令通过减少对隐藏元素的检测和更新,可以显著减少JavaScript的计算负担,进而提高应用的整体性能。 7. 使用限制 文档中提到,从AngularJS 1.3版本开始,如果禁用了Angular提供的调试信息,"Disable-When-Hidden"指令将无法正常工作。这意味着开发者需要在性能优化和调试信息之间做出权衡。 8. 版本兼容性 指令明确提到,它支持的是AngularJS 1.3及更高版本。开发者在应用该指令之前需要确认他们的项目中使用的AngularJS版本,以确保兼容性。 9. 文件结构 文件名称列表 "Disable-When-Hidden-master" 暗示该指令可能包含多个文件,例如JavaScript文件、样式文件和可能的文档说明文件。"master"通常用来表示源代码的主分支,意味着该指令的源代码是开源且可以进行修改和自定义。 10. 实际应用示例 文档提供了一个 "ngRepeat" 的例子,展示了指令的用法。该示例中,包含数据绑定的 "div" 元素在父元素上使用了 "DisableWhenHidden" 指令,而子元素通过特定的属性标记来触发隐藏时移除观察者的行为。通过这种方式,开发者可以在实际项目中提高应用的性能,特别是在数据列表较多的情况下。 总结来说,"Disable-When-Hidden" 指令是一个专为提升AngularJS应用性能而设计的工具,尤其适用于那些元素较多、需要频繁滚动操作的场景。通过有效管理视口外元素的观察者,该指令能够在不影响用户体验的前提下,显著提高页面性能。

cd C:\Program Files\FlightGear fgfs --fg-root=C:\Program Files\FlightGear\data --aircraft=ufo --in-air --fdm=null --telnet=5501 --telnet=5502 --telnet=5503 --disable-ai-traffic --disable-real-weather-fetch --disable-random-objects --disable-terrasync --disable-clouds --disable-sound --disable-panel --disable-hud --disable-specular-highlight --timeofday=noon --prop:/sim/rendering/multi-sample-buffers=1 --prop:/sim/rendering/multi-samples=2 --prop:/sim/rendering/draw-mask-clouds=false --prop:/sim/rendering/draw-mask-terrain=true --prop:/sim/rendering/draw-mask-objects=true --prop:/sim/rendering/draw-mask-lights=true --prop:/sim/rendering/draw-mask-internal=true --prop:/sim/rendering/draw-mask-cockpit=true --prop:/sim/rendering/draw-mask-effects=true --prop:/sim/rendering/draw-mask-overlay=true --prop:/sim/rendering/draw-mask-world=true --prop:/sim/rendering/draw-mask-panel=true --prop:/sim/rendering/draw-mask-vr=true --prop:/sim/rendering/draw-mask-2d=true --prop:/sim/rendering/draw-mask-3d=true --prop:/sim/rendering/draw-mask-sky=true --prop:/sim/rendering/draw-mask-shadows=true --prop:/sim/rendering/draw-mask-cabin=true --prop:/sim/rendering/draw-mask-weather=true --prop:/sim/rendering/draw-mask-stereo=true --prop:/sim/rendering/draw-mask-internal-cockpit=true --prop:/sim/rendering/draw-mask-internal-windows=true --prop:/sim/rendering/draw-mask-internal-instruments=true --prop:/sim/rendering/draw-mask-internal-overlay=true --prop:/sim/rendering/draw-mask-internal-effects=true --prop:/sim/rendering/draw-mask-internal-lights=true --prop:/sim/rendering/draw-mask-internal-world=true --prop:/sim/rendering/draw-mask-internal-panel=true --prop:/sim/rendering/draw-mask-internal-3d=true --prop:/sim/rendering/draw-mask-internal-sky=true --prop:/sim/rendering/draw-mask-internal-cabin=true --prop:/sim/rendering/draw-mask-internal-weather=true --prop:/sim/rendering/draw-mask-internal-stereo=true --prop:/sim/rendering/draw-mask-internal-shadow=true --prop:/sim/rendering/draw-mask-internal-stall=true --prop:/sim/rendering/draw-mask-internal-aoa=true --prop:/sim/rendering/draw-mask-internal-thermal=false --prop:/sim/rendering/draw-mask-internal-ice=false --prop:/sim/rendering/draw-mask-internal-glass=true --prop:/sim/rendering/draw-mask-internal-dead=true --prop:/sim/rendering/draw-mask-internal-reflection=true --telnet=127.0.0.1:5501 --disable-panel --disable-hud --disable-specular-highlight --disable-clouds --disable-sound --timeofday=noon --enable-hud-3d=no --enable-hud-2d=yes --enable-panel=no --enable-sound=no程序显示错误

2023-05-10 上传

06-01 03:22:44.935 W/ ( 0): ==20210817==> hub_port_init 1 #2 06-01 03:22:44.935 W/ ( 0): Plug in USB Port2 06-01 03:22:44.938 W/ ( 0): [GLUE]__Glue_PM_SetupEthernetWakeup Disable WOL!! 06-01 03:22:44.938 W/ ( 0): [GLUE]__Glue_PM_SetupEthernetWakeup (EEP_WOW = 0) _gi4PDWNCWifiWowState=1 !! 06-01 03:22:44.938 W/ ( 0): [GLUE]__Glue_PM_SetupEthernetWakeup (EEP_WOL = 0) !! 06-01 03:22:44.938 W/ ( 0): [GLUE]Disable WOW 06-01 03:22:44.938 W/ ( 0): [GLUE]Enable WOBT, _u8BtGpioNum = 13 , Polarity = 1 06-01 03:22:44.938 W/ ( 0): [GLUE]Enable WOEWBS, _u8EwbsGpioNum = 255 , Polarity = 1 06-01 03:22:44.938 W/ ( 0): get env pu8Env = ENABLE_WAKEUP 06-01 03:22:44.941 W/ ( 0): Get Value 0 06-01 03:22:44.941 W/ ( 0): [GLUE]__Glue_PM_SetupVoiceWakeup[2321] _bWovEnable is 0 06-01 03:22:44.941 W/ ( 0): [GLUE]__Glue_PM_UpdateWakeupConfig(2637) Force Enable IR&SAR PM Wakeup! . 06-01 03:22:44.941 W/ ( 0): [GLUE]Disable VGA PM Wakeup 06-01 03:22:44.941 W/ ( 0): [GLUE]Enable CEC PM Wakeup 06-01 03:22:44.941 W/ ( 0): [GLUE]Disable WOL PM Wakeup 06-01 03:22:44.941 W/ ( 0): [GLUE]Disable Voice Wakeup 06-01 03:22:44.941 W/ ( 0): [GLUE]u8PmWakeWowLanGpioNumber = 255 , Polarity = 255 06-01 03:22:44.941 W/ ( 0): [GLUE]u8PmWakeBtGpioNumber = 13 , Polarity = 1 06-01 03:22:44.941 W/ ( 0): [GLUE] u8PmWakeEwbsGpioNumber = 255 , Polarity = 1 06-01 03:22:44.941 W/ ( 0): [GLUE]__Glue_PM_ResetWakeupSource[3070] done. 06-01 03:22:44.941 W/ ( 0): [GLUE] __Glue_PM_SuspendClearFlag done 06-01 03:22:44.942 W/ ( 0): __Glue_PM_EWBSWakeunlock 翻译这顿log

2023-06-07 上传

移植curl但是zlib无法使能,如何解决该问题 Host setup: arm-unknown-linux-gnueabihf Install prefix: /opt/rootfs/curl-7.79.0/curl-7.79.0/_install Compiler: arm-linux-gnueabihf-gcc CFLAGS: -Werror-implicit-function-declaration -O2 -Wno-system-headers -pthread CPPFLAGS: -isystem /opt/rootfs/openssl-1.1.1/openssl-1.1.1/_install/include LDFLAGS: -L/opt/rootfs/openssl-1.1.1/openssl-1.1.1/_install/lib LIBS: -lssl -lcrypto -ldl -lpthread curl version: 7.79.0 SSL: enabled (OpenSSL) SSH: no (--with-{libssh,libssh2}) zlib: no (--with-zlib) brotli: no (--with-brotli) zstd: no (--with-zstd) GSS-API: no (--with-gssapi) GSASL: no (libgsasl not found) TLS-SRP: enabled resolver: POSIX threaded IPv6: enabled Unix sockets: enabled IDN: no (--with-{libidn2,winidn}) Build libcurl: Shared=yes, Static=yes Built-in manual: enabled --libcurl option: enabled (--disable-libcurl-option) Verbose errors: enabled (--disable-verbose) Code coverage: disabled SSPI: no (--enable-sspi) ca cert bundle: no ca cert path: no ca fallback: no LDAP: no (--enable-ldap / --with-ldap-lib / --with-lber-lib) LDAPS: no (--enable-ldaps) RTSP: enabled RTMP: no (--with-librtmp) PSL: no (libpsl not found) Alt-svc: enabled (--disable-alt-svc) HSTS: enabled (--disable-hsts) HTTP1: enabled (internal) HTTP2: no (--with-nghttp2, --with-hyper) HTTP3: no (--with-ngtcp2, --with-quiche) ECH: no (--enable-ech) Protocols: DICT FILE FTP FTPS GOPHER GOPHERS HTTP HTTPS IMAP IMAPS MQTT POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP Features: AsynchDNS HSTS HTTPS-proxy IPv6 Largefile NTLM NTLM_WB SSL TLS-SRP UnixSockets alt-svc

2023-06-13 上传