2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

最受欢迎的 10 大 Angular 技巧

  • 2020-09-16
  • 本文字数:1077 字

    阅读完需:约 4 分钟

最受欢迎的10大Angular技巧

本文最初发布于 indepth.dev 网站,经原作者授权由 InfoQ 中文站翻译并分享。


今年 6 月,我和 Waterplea 接受了一个有趣的挑战:每天在 Twitter 上写一个 Angular 技巧。Angular 社区对此表示热烈欢迎。


我决定写一篇社区最喜爱的 10 个技巧的总结,并详细解释它们的概念。

让全局对象令牌化

最受欢迎的推文是关于全局对象的 DI 令牌。


在前端,我们习惯使用很多在任何作用域内都可用的全局对象。我们使用诸如 window、document、fetch 方法和 location 等对象。我们希望能一直见到它们。


但比如说,在 Angular Universal 或 Jest 测试环境中没有浏览器,没有 Window,也没有 DOM,那该怎么办呢。通过将全局对象作为令牌(token),你可以放心地使用、替换和测试代码。



如果你想了解更多有关令牌的信息,并加深对 Angular 依赖注入机制的了解,请查看我在 angular.institute 上关于 DI 的免费章节

扩展 Observable 或 Subject

我看到许多开发人员在他们的应用中创建了出色的服务。因为我们使用 RxJS,所以服务可以在其中包含一个 Observable 或 Subject 并对其进行一些数据转换。


你可以简化这类情况,从 Observable 或 Subject 扩展服务:


控件值为 ReplaySubject

在某些情况下,你需要订阅控件 valueChanges 并获取其当前值。不要重新发明轮子,只需这样做即可:


高 DPI 用户

你知道如何分辨使用高 DPI 屏幕的用户吗?


你可以这样做检查,并用原生媒体标签使你的应用更适合高 DPI 屏幕:


不要忘记管道!

管道 Angular 是非常强大的选项。它使我们能够遵循组件模板内部的声明性方法。令我有些难过的是,一些 Angular 开发人员不喜欢创建自己的管道,可其实你几乎可以在任何数据转换的场景中创建管道。


这是适用于许多情况的通用管道示例:


Banana in a box

它有很多名字:banana in a box、双向绑定、输入 - 输出,并且使用起来很方便,比如和 ngModel 配合就很好用。但是如何为你自己的组件实现它呢?


RxJS 是一个未开发的世界

使用 RxJS 时,我尝试检查 RxJS 运算符的所有参数和重载,原因是有许多隐藏的选项可以使你更快地编写更强大的流。


还有许多运算符不是很流行,但是可以用一行代码来解决你的特定问题。


我就发现了一个例子



还有一条关于 RxJS 的推文,是让你的组件更具可扩展性的小技巧。



另一个:可以帮助编写具有很好功能的微型.pipe 的运算符。


你甚至可以制作自己的 ngFor 替代品

最后一个:Angular 对于 for…of… 之类的指令有特殊的语法。这样,你可以创建自己的 ngFor。


例如,它可以是用于迭代映射的 ngFor。或一个简单的从一个数字迭代到另一个数字的 for:



英文原文

The 10 best Angular tips selected by the community


2020-09-16 14:411922
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 399.2 次阅读, 收获喜欢 1985 次。

关注

评论

发布
暂无评论
发现更多内容

一个代码仓库(免费)与技术点 的故事

八点半的Bruce.D

GitHub Linux 网络服务 GitHub仓库

数字化办公,企业OA软件技术该如何发力?

FinClip

【存疑】爬虫学习中decode问题

Sher10ck

存疑

EasyCV带你复现更好更快的自监督算法-FastConvMAE

阿里云大数据AI技术

深度学习 算法 计算机视觉

Java 面试之技术框架

小小怪下士

Java spring 编程 程序员

成为优秀程序员的8种方法

小小怪下士

Java 程序员 职业发展

35岁程序员自荐:我所掌握的架构技术

小小怪下士

Java 程序员 中年危机

云图说丨DDoS防护解决方案:DDoS大流量攻击防得住

华为云开发者联盟

云计算 后端 华为云 企业号九月金秋榜

爆肝整理5000字!HTAP的关键技术有哪些?| StoneDB学术分享会#3

StoneDB

数据库 HTAP StoneDB 企业号九月金秋榜 9月月更

2022年面试复盘大全500道:Redis+ZK+Nginx+数据库+分布式+微服务

小小怪下士

数据库 redis 分布式 微服务 java面试

设计模式和七大设计原则不难的

知识浅谈

设计模式 设计原则 9月月更

netty原理分析

小小怪下士

Java 编程 程序员 后端 Netty

为什么Java中有三种基础的类加载器?

小小怪下士

Java 编程 程序员 程序

开发者问第四期|统一扫码服务、机器学习服务等问题解答

HarmonyOS SDK

中国DevOps平台市场,华为云再次位居领导者位置

华为云开发者联盟

云计算 华为云 企业号九月金秋榜

ESP32-C3入门教程 基础篇(八、NVS — 非易失性存储库的使用)

矜辰所致

ESP32-C3 9月月更 NVS

PipyJS - 函数式网络编程语言

Flomesh

Service Mesh 服务网格

长安链ca 容器部署(解决无法访问Mysql问题)

长安链

架构师成长之路——什么是架构师

小小怪下士

Java 程序员 架构 后端

Lua脚本在Redis事务中的应用实践

京东科技开发者

数据库 redis 事务 开发语言 Lua脚本

老生常谈!数据库如何存储时间?你真的知道吗?

小小怪下士

Java 数据库 编程 程序员

元宇宙场景技术实践|虚拟直播间搭建教程

ZEGO即构

音视频开发 元宇宙 虚拟直播

模块一

早安

极客时间架构训练营

2.69分钟完成BERT训练!新发CANN 5.0加持

华为云开发者联盟

人工智能 企业号九月金秋榜

打破联接壁垒,华为云IoT到底强在哪?

华为云开发者联盟

云计算 后端 物联网 华为云 企业号九月金秋榜

2022最新腾讯面经分享:Java 面试刷题 PDF(17 大专题 )

Java-fenn

Java 编程 程序员 面试 java面试

基于云原生技术打造全球融合通信网关

阿里云CloudImagine

云原生 网络 通信 通信云

腾讯云,DevOps 领导者!

CODING DevOps

腾讯云 DevOps IDC CODING

这样Debug,排查问题效率大大提升...

程序知音

前端面试哪些是必须要掌握的

loveX001

JavaScript 前端

英特尔Wi-Fi 7速率提升5倍,为多应用场景带来改变

科技之家

最受欢迎的10大Angular技巧_大前端_Roman Sedov_InfoQ精选文章