0

0

2019如何作为一个更好的Node.js开发者

不言

不言

发布时间:2019-01-11 10:26:29

|

3054人浏览过

|

来源于微信公众号InfoQ

转载

这篇文章汇编了 19 项在 2019 年可能会很有价值的技能和主题。但请不要感觉到有任何压力——我和其他大多数开发者也并非对每一个主题都很熟悉。我只是觉得这些东西应该值得我们关注,而且 javascript 生态系统的发展本来就永无止境。

1. 增加类型和模式——TypeScript 是 2019 年的一个非常好的候选项

事实证明,无类型编码不仅效率不高,而且容易出错。但这并不意味着你一定要使用严格的类型语法,你可以根据实际情况选择类型的严格程度,比如使用 JSON Schema 或 Joi 来验证实体和模型,或者用静态类型来注解 JS(请参考 https://github.com/facebook/flow ),或者使用全类型的 TypeScript。

TypeScript 在 2018 年取得了显著的进展,似乎已经进入了 Node 领地。如果你计划使用 TypeScript,那么应该问一下自己,你是否只是想要使用它的类型功能,如果也要使用接口和抽象类,那么可能需要学习新的编程范式。

2. 丰富你的 linter

linter 实际上是免费的午餐,只需要 5 分钟的设置,就可以免费获得自动代码保护,并在输入代码时发现重大问题。认为 linting 只是花拳绣腿的日子已经一去不复杂了。如今,linter 可以捕获严重的代码问题,例如错误没有被正确抛出、丢失信息、没有完成的 promise,以及其他你从未真正想要留在代码中的错误。

3. 更多的 Java 和更少的 Ruby——加深你的架构知识

有关 NodeJS 生态系统的架构和设计方面的知识并不多,每个人都在谈微服务,但只谈到了一些内部结构。因此,大多数应用程序和示例都是基于 MVC 概念以及一些来自 Ruby 的其他模式。这有什么问题?MVC 适用于构建内容服务,但在构建健壮的后端方面差强人意。你可以用两个类——Controller 和 Model 来描述你的整个业务逻辑、规则、数据访问、与其他微服务的通信吗?

我绝对不建议采用重量级的 Java/Spring 模式(所以我们才会来到 Node 的领地,不是吗?),而是选择一些能够提供价值却不会牺牲应用程序简单性的想法。

4. 计划如何利用 Async Hook 来获得更好的跟踪和上下文

单线程模型有一个缺点——请求会丢失上下文:当它们流经多个文件并执行异步操作时,变量在整个生命周期中不会被保留。为什么这个很糟糕?例如,开发人员通常希望在每个日志条目中包含唯一标识符,以便稍后可以关联同一请求的所有日志条目——在 2018 年实现这个并不是很容易。

2019 年将会有新的东西出来,Async Hook 就是其中之一(不是全新的特性,但很快就会结束实验阶段)——简单地说,这是一种在异步操作开始和结束时随时注入自定义代码的机制。这样就可以关联同一请求的所有代码并保留上下文。这为很多自定义程序包奠定了基础,这些程序包将 Node 的跟踪和上下文能力提升到了一个新的水平。

5. 了解最新的“Serverless”

注意:这里将 FaaS 和 Serverless 这两个词互换使用,尽管它们并不完全相同。

最初,FaaS 用于微任务的开发,而不是用于“微服务”应用程序。随着它们受欢迎程度越来越高,云供应商的胃口也越来越大,很快,新功能开始堆叠起来,到了 2019 年,它似乎变成了强大的应用程序基础设施。

它现在可以与 Kubernetes 展开竞争并为大型应用程序提供服务吗?有些人认为 Serverless 和 FaaS 是正交技术,但实际上,2019 年的每一个新的云应用程序都必须选择三者中的一个:裸机实例(如 EC2 或 GCP 计算)、Kubernetes 或 FaaS。因此,了解 K8S 和 FaaS/Serverless 并知道它们之间的区别将成为一项必备的设计技能。

6. 了解最新的 JavaScript 特性

我并不是一个只顾追求每一个语言新特性的狂热粉丝,有时候,这些闪亮的玩具会违背代码的简单性原则。一些真正有价值的 JavaScript 特性会随着时间沉淀下来(比如两年前引入的 async/await),所以 TC39 提案列表和 node.green 值得一探究竟。

7. 熟悉至少一种 API 技术——GraphQL 是 2019 年的一个很好的候选项

REST 风格的 API 与它的设计目标相得益彰:可以很好地控制实体的修改和查询。假设你有一个财务记录系统,你可能希望设计非常严格的端点,即单个显式数据模型。然而,在其他非常常见的场景中,REST 表现不足,比如执行一系列可能返回不同数据集的查询、需要最小化 API 有效载荷的低带宽网络、强调速度的机器到机器通信,等等。那么是否应该换成其他的?当然不是,你可以选择混合使用。API 并不是架构,它们只是应用程序的端口(即入口点),并且多种 API 样式可以共存,甚至是在单个 Web 框架之上,如 Express。

那么要学习哪一个?你最好的选择可能是 GraphQL,它正在成为主流。它的生态系统已经非常成熟,可以提供非常流行的用例,如动态搜索和层次数据源。另一方面,gRPC 仍然是一种适用于服务器到服务器间通信的小众技术,因为其开销非常小(例如用于 Pub-Sub/ 消息队列系统)。

8. 超越单元和集成测试

你已经对测试金字塔、单元、集成和端到端测试很熟悉了?很好,这些是成功测试策略的基础。在过去的 10 年中,开发领域发生了巨大的变化,但测试模型几乎保持不变,于是我们不禁想知道如何测试像微服务、丰富的前端和 Serverless 这样的东西。一些现代技术与传统技术栈相辅相成,有时候甚至可以替换它们,以便实现更精简的测试策略,获得更高的投资回报率。

9. 在监控中遵循 SRE/DevOps 最佳实践

2019 年,即使是一个中型应用程序也可能包含数十个移动部件。然而,大多数开发人员没有花心思去学习由 SRE 工程师教给他们的监控和警报方面的知识。例如,开发人员通常会优先考虑并专注于 CPU 和内存等内部硬件指标,而不是去考虑会直接影响最终用户体验的指标,例如错误率或延迟。这些面向客户的指标有时候被称为“黄金信号”,而在 2019 年,你可能希望从关注这些指标开始,并采用类似的最佳实践。

10. 像攻击者一样思考:通过学习攻击工具和技术来提高安全级别

如果你不能像攻击者那样思考,也就无法像防守者一样思考。2019 年,你不应该将防御工作外包给第三方公司或只依靠静态安全扫描程序:攻击类型的数量非常之多,应用程序发生变更的速度是不可控的——在开展安全研讨会两天之后,团队有可能又添加了几个新的 AWS 服务、数据库类型和新的 IAM 角色……因此,开发人员其实是最大的隐含威胁,教育他们似乎是最终的补救措施。你必须将安全 DNA 根植到你自己和团队中,并为所有东西添加安全保护。

SOPHP免费微信开源框架
SOPHP免费微信开源框架

SOPHP是一款稳定开源的微信公众平台开发系统,也是基于weiphp开发的第一款商业系统。依托自身强大的钩子功能,她可以帮助大家快速开发出自己想要的微信功能插件,运营近两年来我们收获了上千用户与良好的口碑。作为一个开源产品,希望大家都能参与进来为SOPHP添砖加瓦,SOPHP团队一直都在致力于让SOPHP更加优秀。

下载

当你开始这么做之后,事实证明,安全问题并不没有那么可怕。你只需熟悉常见的攻击类型和工具,画出应用程序架构和流程,并想想你自己会如何攻击它。随着时间的推移,在不知不觉中,你将在做出每个设计决策和编写每一行代码时考虑安全问题。

11. 制定包更新策略

2018 年的教训:过早更新可能很危险。一个团队通常会使用这两个包更新策略中的一种:一个是尽快更新,有时甚至使用自动化流程。一个是根本没有更新策略,有时候是看心情进行更新。虽然第一种方法似乎更好,但令人惊讶的是,它在 2018 年成为最危险的方法:在 40 天之内,社区就发现了好多个恶意包事件,如 flat-stream,那些在等待或没有进行更新的人反而平安无事。可以考虑使用自动化工具正式化更新策略,并找到不更新和更新之间的最佳平衡点。

12. 进行渐进式安装,将部署和发布阶段分开

2019 年,你可能会发现进行更安全的部署非常重要,也就是不一次性推出到所有的生产环境,然后让你的小心脏像锤子一样砰砰跳。进行细粒度部署(也就是金丝雀部署)可以分为 3 个阶段:部署——将新代码发送到隔离的新生产环境(例如新的 Kubernetes 服务或新的机器实例)。在这个阶段,它不为实际用户提供服务,所以没有什么可担心的。测试——现在有少数人可以使用生产环境的实例,并测试新代码。发布——逐步允许更多的用户使用新版本,在你有足够的信心后,可以下架旧版本。

需要注意的是:进行全面的金丝雀部署在 2019 年仍然是非常昂贵的,因为它需要协调很多基础设施部件,如路由和监控。因此,请考虑从简单和半手动金丝雀部署开始(例如根据监控指标手动启动更多部署了新版本的主机)。

13. Kubernetes 正在吃掉这个世界

有一个很明显的趋势:Kubernetes(K8S),一个为应用程序组件提供网络、横向扩展、部署和其他骨干服务的基础设施,现在几乎是托管应用程序的事实标准。它的受欢迎程度是非常惊人的:在所有云供应商的支持下,拥有无与伦比的扩展生态系统,54%的企业已经拥有至少一个 K8S 集群。

如果你是初学者,这里提供了一个很好的入门概述。同时也请了解 Istio、K-Native、Kuberenes 作业、网络政策、Helm、Scaffold。一句话:你花在加深了解 K8S 技能上的时间最终会给你带来回报。

14. 区块链技术提供了一些很好的机会

一个很明显的趋势:区块链不只是用于比特币和加密功能,它也可以用于任何分布式事务性系统。

15. 获得机器学习技能,至少有一定的谈资

一个很明显的趋势,可惜的是,我对机器学习库一无所知,我的 2019 年目标至少是能够说出一些有关机器学习的东西,并能够找出快速获胜的机会(例如像 tensorflow.js 和 brain.js 这样的 JS 库可以在没有强大的基础设施的情况下提供一些见解)。

16. 了解其他开源库代码

注意,长时间在一个项目中使用同样的技术可能会让你的视野变窄,并隐藏了很多替代方案。所以,努力去了解更多其他的项目,主要是成功的开源项目。

17. 深化对 Linux 操作系统的理解,重点关注 Linux 进程方面的东西

了解 Linux 进程将会让你获得真正的竞争优势,因为它会影响很多开发任务,如监控、保护进程、使用 Docker、优雅地关闭等其他任务。努力了解进程、信号、权限模型、常用命令、进程类型,等等。

18. 深入了解 Node.js 内部

我真的很喜欢 Ryan Dahl(Node.js 原始作者)讲的一句话:“你不可能理解所有的东西。但是,你应该让自己去了解系统”。当你需要处理令人头疼的生产环境问题或设计一些基础设施组件(例如监控事件循环性能)时,对底层机器的深入了解被证明是有价值的。你可能已经熟悉了 v8 和 libuv 等核心构建块。

那么 2019 年是深入了解 Node.js 的好时机,例如,了解每个 libuv 事件循环周期内究竟发生了什么?或者可以了解与操作系统 IO 的交互是如何进行的(例如活动句柄)?

19. 学习使用科学的方法

你学到的和内化的东西将塑造你未来的职业生涯。然而,很多开发人员既没有学习策略,也没有学习如何使用科学的方法进行有效的学习。

在一个关于“防止 JavaScript 类型错误”的会议上,VP 要求继续使用 JavaScript 而不重构整个代码库(不使用 TypeScript……),突然你的一位同事建议使用 Facebook Flow,房间里的每个人都表示赞同!你突然想起你曾经看到过有关它的文章,但它从来没有被你内化,只是在你的脑海中一闪而过。

这是怎么回事?

显然,有一种叫作“竞争幻觉”的现象解释了为什么我们会忘记这些东西:你可能花了 1 个小时阅读一篇博文,但在几天之内就不记得了!研究表明,如果你稍后尝试与某人说起这些东西,或者在第二天再次阅读文章摘要,就可以大大提高记忆成功率。当然,还有其他各种技巧可以帮助你在正确的时间记住并获取正确的知识。花几个小时学习如何学习可以为你的职业生涯带来很大的帮助!

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
拼多多赚钱的5种方法 拼多多赚钱的5种方法
拼多多赚钱的5种方法 拼多多赚钱的5种方法

在拼多多上赚钱主要可以通过无货源模式一件代发、精细化运营特色店铺、参与官方高流量活动、利用拼团机制社交裂变,以及成为多多进宝推广员这5种方法实现。核心策略在于通过低成本、高效率的供应链管理与营销,利用平台社交电商红利实现盈利。

28

2026.01.26

edge浏览器怎样设置主页 edge浏览器自定义设置教程
edge浏览器怎样设置主页 edge浏览器自定义设置教程

在Edge浏览器中设置主页,请依次点击右上角“...”图标 > 设置 > 开始、主页和新建标签页。在“Microsoft Edge 启动时”选择“打开以下页面”,点击“添加新页面”并输入网址。若要使用主页按钮,需在“外观”设置中开启“显示主页按钮”并设定网址。

8

2026.01.26

苹果官方查询网站 苹果手机正品激活查询入口
苹果官方查询网站 苹果手机正品激活查询入口

苹果官方查询网站主要通过 checkcoverage.apple.com/cn/zh/ 进行,可用于查询序列号(SN)对应的保修状态、激活日期及技术支持服务。此外,查找丢失设备请使用 iCloud.com/find,购买信息与物流可访问 Apple (中国大陆) 订单状态页面。

31

2026.01.26

npd人格什么意思 npd人格有什么特征
npd人格什么意思 npd人格有什么特征

NPD(Narcissistic Personality Disorder)即自恋型人格障碍,是一种心理健康问题,特点是极度夸大自我重要性、需要过度赞美与关注,同时极度缺乏共情能力,背后常掩藏着低自尊和不安全感,影响人际关系、工作和生活,通常在青少年时期开始显现,需由专业人士诊断。

3

2026.01.26

windows安全中心怎么关闭 windows安全中心怎么执行操作
windows安全中心怎么关闭 windows安全中心怎么执行操作

关闭Windows安全中心(Windows Defender)可通过系统设置暂时关闭,或使用组策略/注册表永久关闭。最简单的方法是:进入设置 > 隐私和安全性 > Windows安全中心 > 病毒和威胁防护 > 管理设置,将实时保护等选项关闭。

5

2026.01.26

2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】
2026年春运抢票攻略大全 春运抢票攻略教你三招手【技巧】

铁路12306提供起售时间查询、起售提醒、购票预填、候补购票及误购限时免费退票五项服务,并强调官方渠道唯一性与信息安全。

35

2026.01.26

个人所得税税率表2026 个人所得税率最新税率表
个人所得税税率表2026 个人所得税率最新税率表

以工资薪金所得为例,应纳税额 = 应纳税所得额 × 税率 - 速算扣除数。应纳税所得额 = 月度收入 - 5000 元 - 专项扣除 - 专项附加扣除 - 依法确定的其他扣除。假设某员工月工资 10000 元,专项扣除 1000 元,专项附加扣除 2000 元,当月应纳税所得额为 10000 - 5000 - 1000 - 2000 = 2000 元,对应税率为 3%,速算扣除数为 0,则当月应纳税额为 2000×3% = 60 元。

12

2026.01.26

oppo云服务官网登录入口 oppo云服务登录手机版
oppo云服务官网登录入口 oppo云服务登录手机版

oppo云服务https://cloud.oppo.com/可以在云端安全存储您的照片、视频、联系人、便签等重要数据。当您的手机数据意外丢失或者需要更换手机时,可以随时将这些存储在云端的数据快速恢复到手机中。

40

2026.01.26

抖币充值官方网站 抖币性价比充值链接地址
抖币充值官方网站 抖币性价比充值链接地址

网页端充值步骤:打开浏览器,输入https://www.douyin.com,登录账号;点击右上角头像,选择“钱包”;进入“充值中心”,操作和APP端一致。注意:切勿通过第三方链接、二维码充值,谨防受骗

7

2026.01.26

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Node.js 教程
Node.js 教程

共57课时 | 9.4万人学习

【web前端】Node.js快速入门
【web前端】Node.js快速入门

共16课时 | 2万人学习

Node.js-前端工程化必学
Node.js-前端工程化必学

共19课时 | 3万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号