【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

最受欢迎的 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:411752
用户头像
小智 让所有人认同的文字称不上表达

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

关注

评论

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

跨平台移动APP开发进阶(一):mui开发注意事项

No Silver Bullet

App 跨平台 2月月更 mui

[架构实战营] 模块九作业

Geek_0ed632

「架构实战营」

如何快速开发 Serverless Devs Package ?

Serverless Devs

Serverless

简析Web3 架构:前端、后端和数据

devpoint

区块链 dapp Solidity Web3.0 2月月更

华为云IoT体验:基于IoT平台构建智慧路灯应用

乌龟哥哥

2月月更

模块 7 作业

miliving

Web Components 系列—— 详解 Slots

CRMEB

跨平台应用开发进阶(三): uni-app 实现资源在线升级/热更新

No Silver Bullet

uni-app 更新 版本升级 2月月更

第十节:SpringBoot中的日志管理

入门小站

spring-boot

在线ASCII Banner艺术字生成工具

入门小站

工具

项目遇到突发问题,如何给上级做汇报?

石云升

项目管理 项目经理 2月月更

架构实战营模块二作业-微信朋友圈复杂度分析

炎彬

「架构实战营」

渗透利器 | 常见的WebShell管理工具

喀拉峻

网络安全

深入浅出 ESM 模块 和 CommonJS 模块

局外人

JavaScript node.js 前端 前端开发 模块化

模块八作业

Geek_e6f7f6

架构实战营

DevOps进阶(二):DevOps 发展史

No Silver Bullet

DevOps 2月月更

springboot druid 数据库连接池连接失败后一直重连

Jeremy Lai

Web Components 系列(五)—— 详解 Slots

编程三昧

前端 组件化 2月月更 WebComponent

基于 SAP BTP 平台的 AI 项目经验分享 | 社区征文

Jerry Wang

人工智能 机器学习 AI 新春征文 2月月更

Go 语言入门很简单:String

宇宙之一粟

Go 语言 2月月更

程序员,如何避免无效会议?

蜜糖的代码注释

2月月更

验收测试驱动开发后记

Bruce Talk

敏捷 Agile User Story

自省与反思(一)

懒时小窝

反思 反思总结

《人月神话》第十九章阅读笔记:20年后的《人月神话》

panda

人月神话 概念完整性 阅读笔记

给 zsh 自定义命令添加参数自动补全

mzlogin

Shell zsh

微信朋友圈业务架构分析

Geek_1b4338

#架构实战营 「架构实战营」

蜜罐中利用jsonp跨域漏洞和xss漏洞的分析

H

网络安全 安全漏洞

iOS开发·备战2022金三银四-runtime原理与实践: 消息转发详解篇

iOSer

ios runtime iOS面试 ios开发 金三银四跳槽

iOS开发备战金三银四·突击大厂的算法与底层原理复习方向

iOSer

ios iOS面试 iOS底层 金三银四跳槽 算法面试

无人管的 InfoQ 每周精选

scruel

InfoQ

模块二作业

blazar

「架构实战营」

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