百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>JS教程> 2019怎样作为一个更好的Node.js开发者
分享文章到:

2019怎样作为一个更好的Node.js开发者

发布时间:09/01 来源:未知 浏览: 关键词:
这篇文章汇编了 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 根植到你本人和团队中,并为所有东西增加平安庇护。

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

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 个小时阅读一篇博文,但在几天之内就不记得了!研讨表白,假如你稍后尝试与某人说起这些东西,或者在第二天再次阅读文章摘要,就可以大大提高记忆成功率。当然,还有其他各种技巧可以帮忙你在准确的时间记住并猎取准确的知识。花几个小时学习怎样学习可认为你的职业生涯带来很大的帮忙!

以上就是2019怎样作为一个更好的Node.js开发者的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有150人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板