2021-07-26 09:50

从新手到专家级开发人员的 Node.Js 开发技巧

Node.Js是技术领域最热门的趋势,让开发人员可以选择 35,000 个模块来浏览。用户说 Node 太容易开发一个可以正常工作的应用程序,可以毫无问题地进行平衡。Node.Js 的粉丝群开始像宗教一样传播他们的言论。让我们看看是什么让它与众不同。

什么是 Node.js?

维基百科说,“Node.js 是谷歌 V8 JavaScript 引擎、libuv 平台抽象层和核心库的打包编译,它本身主要用 JavaScript 编写。用于服务器端编码、处理 AJAX 请求、维护不同 API 的路由和操作数据库。”

Node.js 是如何工作的?
Node.js 的创建者 Ryan Dahl 的目标是创建具有推送功能的实时网站,其灵感来自 Gmail 等应用程序。所以他带来了 Node.js。在 Node.js 中,他为开发人员提供了一个在非阻塞、事件驱动 I/O 范式中工作的工具。

我们知道,在 Web 浏览器中,开发人员只能使用语言,因为他们必须为用户提供安全性。通常在这种情况下,所有活动都针对 DOM 操作和异步页面信息加载。

在这里,Node.js 为保留其浏览器特性的新视角开辟了机会。

  • 1. Node.js 开发人员在他们的工作中发现简单和兼容的地方是什么?
  • 2.专家们在这一年里学到了什么?
  • 3.新手必须避免哪些错误?

好吧,随着时间的推移,专家们已经了解了对新手和专家都有益的各种提示和技巧。让我们分享其中的一些好处,以帮助您回顾或重新开始。

    1. Node.js:它是异步的

Node.js 的一个显着特点是它是单线程的,从上到下异步地设计和实现。由于这种异步特性,超过 60% 的开发人员遇到了问题,但今天他们中的大多数人都知道解决方案。当您运行一个耗时的工作(例如访问数据库)时,请使用计数器来跟踪循环,否则在完成循环之前,下一个函数将开始。
运气不好,因为仍然可以进行同步/阻塞调用。好吧,许多文件系统都有异步和同步版本,例如 writeFile 和 writeFileSync。即使您在代码中避免使用异步方法,也可能存在于具有阻塞调用的外部库中。

看这里 –
良好做法:异步写入文件
1| fs.writeFile('message.txt', 'Hello Node', function (err) {
2| console.log(“它已保存,服务器保持响应!”);
3| });

错误做法:同步写入文件
1| fs.writeFileSync('message.txt'Hello Node');
2| console.log(“它已保存,但您只是阻止了所有请求!”);

    1. Node.Js:什么是回调地狱,如何处理它

什么是回调地狱?– 过度嵌套的异步回调称为回调地狱。
最好将嵌套回调保持在最低限度,因为这是解开回调的简单方法。

让我们从一个典型的例子开始解释我们的观点——
1|function register(name, password, cb){
2| checkIfNameExists(name, function(err, result){
3| if(err){
4| return cb(“error”);
5| }
6| checkIfPasswordGood(password, function(err, result){
7| if(err) {
8| return cb(“error”);
9| }
10| createAccount(name,password, function(err,result){
11| if(err){
12| return cb(“error”);
13| }
14 | createBlog(name, function(err, result){
15| sendEmail(name, function(err, result){
16| callback(result);
17| });
18| });
19| });
20| } );
21| });
22| }
您会遇到某些导致回调地狱的异步操作,其 -

      • 异步操作链:从 API 获取一些东西,用另一个 API 处理它并将结果写入数据库。
      • 异步集合操作:对象的集合,在所有操作完成后执行异步操作或其他一些动作

为了防止回调地狱,您可以浏览一些很棒的库,例如:

1. Async.js:无需嵌套即可轻松执行一系列函数
2. Bluebird:Promises 通过映射和入队使异步逻辑更易于管理
3. 问:揭示了 Promise 的概念,就像 bluebird 一样可以轻松管理嵌套调用

    1. Node.Js:单独的实用程序和配置文件

开发者必须养成使用 util.js 文件来处理常用功能的习惯。尝试将此文件作为模块中的变量获取。这反过来又会减少全局变量的数量和代码长度。甚至可以存储常量参数的配置文件。
假设您需要一个应用程序来显示前五名学生的详细信息,它可能会有所不同,成为十名学生。所以不要对你的代码限制太苛刻。将其保存在配置文件中。一种最佳做法是维护一个对多语言应用程序有用的“Lang”文件夹。

至于文件获取方面,在Node.js中很简单。你可以写,
1| var util = require('./util.js'),
2|
3| englishMessages = require('./lang/en.js');

    1. Node.js:查看监视器性能

问问自己如何监控应用程序性能和配置文件,因为您需要确保应用程序以最佳速度运行。好吧,为此你会得到一些工具,比如 Nodefly、New relic 等
Nodefly——一行简单的代码,它开始监控你的应用程序以检测内存泄漏,或者测量 redis 需要多长时间,进行 mongo 查询和其他东西。
New Relic – 该工具将帮助开发人员在您的实时和数据密集型 Node.js 应用程序中监控对服务器监控的响应时间。

    1. Node.Js:使用粒度模块委托

在 Node.js 中你必须处理很多表,因此需要拆分代码。最好为不同的表制作不同的模块,并与子模块交互制作一个单独的父模块。
好吧,让我们举个例子——办公室数据库中有不同的部门,4到6个项目构成一个部门,员工人数构成一个部门。

现在您可以用四个模块构建这个项目——a
员工
B. 项目
C. 部门和
d。办公室

这里Office是您的父模块,其余三个是子模块。该模块的功能是将控制器传递给适当的模块。假设您尝试更新Employee表,为此,您还必须更新ProjectsDepartment不要试图将其他模块获取到学生模块中。最好将请求传递给 Office 模块,它会将请求定向到首选模块,这将帮助您轻松地对代码进行排序和检查错误。

    1. Node.Js:调试很容易

如果您使用 Java 或 C# 等具有大量 IDE 集成的语言,那么调试 Node.js 似乎令人困惑。大多数新的 Node 开发人员更喜欢通过使用 console.log 来采用调试模式。但是,您仍然会得到一些替代方法,这些替代方法是调试的常规方法。Node.js 带有一个内置的调试器,它通过调用 node debug 来运行,比如Node Inspector

Node Inspector – node.js 的调试器界面,使用 Blink Developer Tools(早期的 WebKit Web Inspector)。它允许开发人员使用他们选择的任何编辑器和 Chrome Web 工具调试应用程序。使用Node-Inspector,开发人员可以做一些很酷的事情,例如实时代码更改、步骤调试、范围注入和其他很酷的方面。要跟进这些方面,请在Github 上了解更多信息

    1. Node.Js:小心新模块

你会在 Node.js 中遇到超过 35,000 个模块,但其中一些已经死了。随着 Node.js 在其主要版本中反复更改其 API,工作起来很混乱。该模块在v0.8.x工作可能会在v0.10.x中止因此,在开始使用新模块之前,您应该检查 PR 列表以确保它没有错误或正在维护。

    1. Node.Js:节点包管理器是一个奇迹

Node Package Manager 是 Node.js 的所有部署系统的根,在 PaaS(平台即服务)提供者的基础上简化了库依赖项的管理。Node 带有惊人的 npm,它可以安装你的 package.json 清单文件中指定的模块。好吧,在这种情况下,新手会使用他们使用的所有模块更新 package.json。每次打开包并使用新模块更新依赖项属性都很痛苦,但是 npm 会为您做到这一点!

因此,最好运行 npm install,保存模块名称,然后 npm 会自动使用正确的模块和版本名称更新 package.json。

    1. Node.js:小心错误

对于新手来说,重要的是要记住节点很容易因为一个错误而崩溃。因此,我们建议新手和专家正确处理错误并针对错误抛出正确的消息。使用 try-catch 框会减慢您的进程,因此请避免使用它。

    1. Node.js:不要忘记返回

大多数初学者在回调后忘记返回。虽然有时这根本没有任何意义,但有时您会遇到奇怪的问题,因为您可能会收到两次回调。

让我们看一个例子
——1| 函数做(错误,结果,回调){
2| 如果(错误){
3| 回调(“错误”);
4| }
5| 回调(“好”);
6| }

片段确实有意义。如果发现“错误”,则在回调中发送,如果没有则发送良好。但是,调用回调并不是阻止执行完成的好方法,它会继续调用回调。

Node.js:结论
今天,我们经常使用 Node.js 创建实时应用程序。您必须在某些项目(例如 API 或网络项目)中寻找它们的未来用途,对它们来说,Node.js 将被证明是一个很好的部署模型。凭借其预先格式化的异步代码和易于选择的语言,Node.js 是一个非常受欢迎的选择。

普拉蒂普·比斯瓦斯