分享五个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 win7下安装方法
May 24 NodeJs
跟我学Nodejs(一)--- Node.js简介及安装开发环境
May 20 NodeJs
Nodejs全局安装和本地安装的不同之处
Jul 04 NodeJs
基于NodeJS+MongoDB+AngularJS+Bootstrap开发书店案例分析
Jan 12 NodeJs
详解nodejs操作mongodb数据库封装DB类
Apr 10 NodeJs
NodeJs使用Mysql模块实现事务处理实例
May 31 NodeJs
nodejs mysql 实现分页的方法
Jun 06 NodeJs
详解NODEJS基于FFMPEG视频推流测试
Nov 17 NodeJs
nodejs中Express与Koa2对比分析
Feb 06 NodeJs
nodejs实现解析xml字符串为对象的方法示例
Mar 14 NodeJs
详解Nodejs内存治理
May 13 NodeJs
NodeJS 实现多语言的示例代码
Sep 11 NodeJs
Node.js实现爬取网站图片的示例代码
NodeJs使用webpack打包项目的方法详解
Feb 28 #NodeJs
node快速搭建后台的实现步骤
nodejs利用readline提示输入内容实例代码
详解NodeJS模块化
NodeJs内存占用过高的排查实战记录
详解nodejs内置模块
May 06 #NodeJs
You might like
PHP 工厂模式使用方法
2010/05/18 PHP
php跨站攻击实例分析
2014/10/28 PHP
WordPress中访客登陆实现邮件提醒的PHP脚本实例分享
2015/12/14 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
Laravel6.2中用于用户登录的新密码确认流程详解
2019/10/16 PHP
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
JavaScript中的闭包原理分析
2010/03/08 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
jQuery中append()方法用法实例
2014/12/25 Javascript
ajax+jQuery实现级联显示地址的方法
2015/05/06 Javascript
jQuery的实例及必知重要的jQuery选择器详解
2016/05/20 Javascript
Node.js 回调函数实例详解
2017/07/06 Javascript
JQuery 获取多个select标签option的text内容(实例)
2017/09/07 jQuery
layui动态渲染生成左侧3级菜单的方法(根据后台返回数据)
2019/09/23 Javascript
Node.js学习之内置模块fs用法示例
2020/01/22 Javascript
Python实现读取目录所有文件的文件名并保存到txt文件代码
2014/11/22 Python
python使用xlrd模块读写Excel文件的方法
2015/05/06 Python
python selenium UI自动化解决验证码的4种方法
2018/01/05 Python
python3 下载网络图片代码实例
2019/08/27 Python
python图形绘制奥运五环实例讲解
2019/09/14 Python
Python3.7基于hashlib和Crypto实现加签验签功能(实例代码)
2019/12/04 Python
PyTorch的SoftMax交叉熵损失和梯度用法
2020/01/15 Python
Python中and和or如何使用
2020/05/28 Python
python读取图片颜色值并生成excel像素画的方法实例
2021/02/19 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
html5开发之viewport使用
2013/10/17 HTML / CSS
塔吉特百货公司官网:Target
2017/04/27 全球购物
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
高级Java程序员面试要点
2013/08/02 面试题
车辆安全检查制度
2014/01/12 职场文书
导游欢迎词范文
2015/01/23 职场文书
大明湖导游词
2015/02/03 职场文书
2015年护士医德医风自我评价
2015/03/03 职场文书
小学运动会入场口号
2015/12/24 职场文书
2019年自助餐厅创业计划书模板
2019/08/22 职场文书