分享五个Node.js开发的优秀实践 


Posted in NodeJs onApril 07, 2022

前言:

Node.js在全球开发者中非常流行,这种趋势极大地改变了Web开发的面貌。可以说,Node.js在实时Web应用开发中无所不能。使用这种技术并不难,懂得如何更好地构建代码结构,在开发过程中解决遇到的困难和错误,是你真正应该去做的事情。

在这篇文章中,我们列出了5个通用的优秀实践,需要我们在开发过程中牢记于心并尽可能的去实践它们。

在Node.js开发时,请遵循以下5个最佳实践。

1.分层组织代码

例如Express.js这个应用广泛的Node.js框架,它允许开发人员自定义回调函数,当收到客户端请求时回调函数执行。有了这种灵活性,开发人员就可以非常方便地在回调函数中分析各种业务逻辑。

但是,如果你以写回调函数作为学习Express.js起点的话,在你真正了解回调函数等这些原理之前,你会发现随着开发的进行需要写回调函数的情况越来越多,需要写的回调函数的数量急剧增加,这让你的路由文件变成了一堆笨重且混乱不堪的代码。最差的情况就是代码可读性差,难以维护和管理,难以编写单元测试用例。

为了避免这种情况的出现,我们最好要践行“关注点分离”的编程原则。这意味着应用开发中你要编写不同的模块来路由到你的不同的业务上。

对于后端程序开发来说,不同的客户端请求就是通过不同的模块或者层来处理的。

因此,我们可以把代码分为三层来处理这些事情:

  • Controller(路由层):这是定义API路由的代码模块。在路由处理函数中,可以解析请求对象,获取必要的请求参数,然后交给服务层进行处理。
  • Serevice layer(服务层):由很多类和方法组成,并且这些类和方法只承担单一职责,同时保证可用性。定义服务层能有效地将业务逻辑处理和路由定义解耦。
  • Data access layer(数据访问层):它主要负责数据库的访问,写入和更新。所有的SQL语句,数据库连接,模型,ORM等都应该这里定义。

这种三层的代码设计为大多数基于Node.js的应用开发提供了一个可靠的脚手架,让我们的应用程序更易于编码、维护、调试和测试。

2.使用代码压缩

Gzip作为一种无损的文件压缩格式,主要用于压缩文件进行更快地网络传输。它在压缩基于Node.js开发的Web应用代码方面优势明显。你知道Express.js可以很方便的进行Gzip格式的代码压缩吗?没错,就是使用压缩中间件。

另外,Express.js文档建议使用如下代码来提高应用的性能。

上面的这些设置会压缩后端服务返回的响应体,并减少延迟,提高页面的响应速度。

在优化服务端性能时,前端代码的优化同样至关重要。前端代码上线前你需要了解网页的大小。上线前不要忘了使用诸如HTMLMinifier, CSSNano和UglifyJS这样的工具来压缩前端HTML, CSS, JavaScript代码。

总之,使用Gzip压缩和精简前端代码是Node.js开发的优秀实践之一。

3.学会运用第三方解决方案

毫无疑问,Node.js拥有一个遍布全球的大型开发社区。围绕NPM或Node的包管理器已经有了很多功能丰富、维护良好、文档完善的框架、库和用于各种用例的工具。因此,开发人员可以方便地在项目中使用这些现有的解决方案,并充分利用这些API。

强烈建议你去寻找一些现有的解决方案来处理遇到的问题,这会让你的开发工作更容易。下面是一些流行的Node.js库,可以有效的改善你的代码质量:

  • Gulp:一个自动化的任务构建工具。
  • Agenda:一个轻量级任务调度库。
  • Moment:一个解析,校验,操作,显示日期时间的工具库。
  • Winston:一个日志记录框架。
  • Nodemon:一个可以监听文件变更,自动重启服务的工具。

上面的这些库和工具可以让开发者更轻松地应对各种问题。不过,非常关键的的一点是你需要对项目中每一个导入的包有足够的认知并为此负责。此外,你还应该知道导入的每个包的目的是什么,有什么优势,有哪些缺点和问题。最后,作为一个开发者,你要确保不会过度依赖这些第三方库包。

4.充分利用程序监控工具

APM工具负责通过发现瓶颈和修复错误来监视应用程序的性能和可用性。Node.js监控工具可以通过分析每个Web结果来修复Bug,指出问题并跟踪问题。

使用APM工具的主要目的之一是评估性能指标、质量问题、性能瓶颈、标准错误等,并利用得到的这些信息来进行所需的代码修改和改进。

ScoutAPM就是一个APM工具,可以帮助开发者分析和优化网页应用的性能。它还提供了实时监控,能帮助开发者快速地定位问题,并在最终确定问题之前进行更改以解决问题。

此APM工具是唯一一个应用程序性能监视产品,它克服了诸如提高性能和稳定性等问题。其中N+1数据库查询、数据库慢查询和性能异常是最常见的问题。

5.保持你的代码整洁且易于复用

代码检查和格式化

你所需要做的就是不断提高代码质量和代码的可读性。为了实现这些,需要压缩代码,这有助于减少延迟,提高网页响应速度。大多数代码开发流程通常包含一个代码检查和代码格式化的过程。

不过代码检查器只能处理代码中不完美的地方,并且只有一种方法来修复它们。另一方面,代码格式化程序的工作目标是确定一组格式和样式指导原则,这些指导原则必须在整个项目中保持一致。

ESLint,JSLint和HSHint是最常用的JavaScript代码检查工具,Prettier是最常用的代码格式化工具。这些工具并不关注代码的具体含义,只关心代码的格式,规范性。幸运的是,大多数IDE或者代码编辑器如Visual Studio code(VSCode),Atom等,都认可编写高质量代码的重要性,并提供了代码检测和格式化插件,并且这些插件都非常容易设置。

此外,一些IDE还提供了一些有用的特性,如智能代码补全、Debug调试工具、代码跳转和代码格式优化等。这些工具还是有不少优点的,因此强烈建议写代码时使用上这样的IDE设置。

代码风格指南

我们需要遵循的另一个优秀实践是参考谷歌和Airbnb等巨头使用的JavaScript代码风格指南和标准。这些指导原则涵盖了从文件、变量和类的命名约定到文件编码的格式细节等等。更重要的是:它可以帮助你编写高质量的代码,并且这些代码风格符合一些全球顶级开发人员使用的实践和标准。

总结

我们试着描述出在开发过程中,你应该考虑到的最重要的优秀实践,以避免工作进展没多少就遇到很多困难和挑战。请记住:雇佣一支专业的Node.js开发团队永远是一个好主意,这不仅会帮助你写出整洁高质量的代码,还会在开发的方方面面帮助到你。

最后我们想对开发人员们说的是:是时候把你在今天学到的内容应用到你项目中去了。坚持去践行这些优秀实践,你就一定会从中受益,开发出高可用、可伸缩的Node.js应用程序。

到此这篇关于分享五个Node.js开发的优秀实践 的文章就介绍到这了,更多相关Node.js开发实践 内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

NodeJs 相关文章推荐
轻松创建nodejs服务器(10):处理上传图片
Dec 18 NodeJs
Nodejs关于gzip/deflate压缩详解
Mar 04 NodeJs
nodejs开发微博实例
Mar 25 NodeJs
nodejs爬虫抓取数据乱码问题总结
Jul 03 NodeJs
详解nodeJS中读写文件方法的区别
Mar 06 NodeJs
angular2+nodejs实现图片上传功能
Mar 27 NodeJs
nodejs模块nodemailer基本使用-邮件发送示例(支持附件)
Mar 28 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
webstorm中配置nodejs环境及npm的实例
May 15 NodeJs
Nodejs中获取当前函数被调用的行数及文件名详解
Dec 12 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 NodeJs
Node.js实现爬取网站图片的示例代码
NodeJs使用webpack打包项目的方法详解
Feb 28 #NodeJs
node快速搭建后台的实现步骤
nodejs利用readline提示输入内容实例代码
详解NodeJS模块化
NodeJs内存占用过高的排查实战记录
详解nodejs内置模块
May 06 #NodeJs
You might like
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
extjs 列表框(multiselect)的动态添加列表项的方法
2009/07/31 Javascript
Javascript 自适应高度的Tab选项卡
2011/04/05 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
在HTML代码中使用JavaScript代码的例子
2014/10/16 Javascript
PHP守护进程实例
2015/03/06 Javascript
javascript解决IE6下hover问题的方法
2015/07/28 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
jQuery EasyUI Accordion可伸缩面板组件使用详解
2017/02/28 Javascript
webpack 1.x升级过程中的踩坑总结大全
2017/08/09 Javascript
vue组件实现文字居中对齐的方法
2017/08/23 Javascript
解决Vue 浏览器后退无法触发beforeRouteLeave的问题
2017/12/24 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
[02:18]《我与DAC》之工作人员:为了热爱DOTA2的玩家们
2018/03/28 DOTA
python 中split 和 strip的实例详解
2017/07/12 Python
python中的break、continue、exit()、pass全面解析
2017/08/05 Python
PyQt5 QSerialPort子线程操作的实现
2018/04/21 Python
详解Python如何生成词云的方法
2018/06/01 Python
解决django前后端分离csrf验证的问题
2019/02/03 Python
Python创建数字列表的示例
2019/11/28 Python
pytorch 准备、训练和测试自己的图片数据的方法
2020/01/10 Python
Python中openpyxl实现vlookup函数的实例
2020/10/28 Python
用CSS3实现背景渐变的方法
2015/07/14 HTML / CSS
Dockers美国官方网站:卡其裤、男士服装、鞋及配件
2016/11/22 全球购物
Kent & Curwen:与大卫·贝克汉姆合作
2017/06/13 全球购物
倩碧香港官方网站:Clinique香港
2017/11/13 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
Tessabit日本:集世界奢侈品和设计师品牌的意大利精品买手店
2020/01/07 全球购物
铭万公司.net面试题笔试题
2014/07/20 面试题
大学毕业生简单自荐信
2013/11/05 职场文书
求职自荐信怎么写
2014/03/06 职场文书
我的大学生活演讲稿
2014/04/25 职场文书
党支部三会一课计划
2014/09/24 职场文书
会计专业自荐信范文
2015/03/05 职场文书
廉洁自律承诺书2016
2016/03/25 职场文书