大幅提升 Node 开发者生产力的六种方法

2025-05-26

大幅提升 Node 开发者生产力的六种方法

介绍

这五个提升效率的技巧将极大地提升你作为 Node 开发者的效率。你将节省大量时间,并将其用于其他活动。

这并不是您应该做的所有事情的完整列表,但如果您还没有做这些事情,那么仅这些事情就会大大提高您的工作效率。

使用模糊查找器

我们中的许多人仍在使用有时包含数千个文件的大型单片代码库。

如何在项目中成千上万个文件和数百个文件夹中找到employee.js隐藏的文件?手动遍历目录树寻找?还是去问其他更熟悉代码库的开发人员?/src/authentication/userTypes/employee.js.js

不,只需使用模糊查找器并输入employee.js,您就会在几秒钟内找到您的文件。

操作方法如下:在 中vscode,按下Alt+P,然后输入要查找的文件名。结果将立即显示。

vscode 中的模糊查找器
vscode 中的模糊查找器

如果您使用的是 IntelliJ 或 WebStorm,请shift快速按两次(又称双击)而不是按Alt+P

使用真正的调试器而不是console.log()

当我还是一名中级工程师时,学习如何使用调试器本身就极大地提升了我的工作效率。我只需几个小时就能完成原本需要一天才能完成的工作。修复错误和开发功能也变得容易得多。

我发现,在探索那些我不熟悉的代码库时,调试尤其有用。即使是用怪异的方式编写的最复杂的逻辑,也能轻松查看其结果。如果能逐行运行并观察结果如何变化,那么推理复杂、费解的逻辑就会容易得多。

如果你曾经习惯console.log()将值打印到控制台,那么你可能知道在调试复杂程序时这有多么繁琐。它一次只能打印一个值,你需要console.log()为每个想要查看的值编写一条新的语句。如果你正在查看的值发生变化,你就需要console.log()重新执行一遍。这有点像蒙着眼罩或在黑暗中摸索。

人类的工作记忆是有限的,所以一旦你手动打印了足够多的变量,这些值就会开始从你的脑海中消失,然后你就不得不再次打印它们或把它们写下来。试图把所有东西都保存在工作记忆中会消耗宝贵的大脑资源,而你可以将这些资源重新用于让你的代码按照你想要的方式运行。

进入调试器 - 在代码中设置断点,然后运行应用。当应用到达设置断点的那一行时,您将能够在“调试”选项卡中看到范围内的所有变量。

无需再在工作记忆中处理大量数值。只需一个操作,即可查看所有内容,而无需一次只查看一个值。

一开始我只是调试自己的应用程序代码,但随着时间的推移,我的经验也越来越丰富,我发现通过调试框架代码(例如 的代码express)可以获得很多见解。我甚至能够找到文档中未列出的问题的答案。

如果您想了解如何设置调试器,请参阅我的另一篇文章《通过调试提高您的节点生产力》

使用async/await并避免“回调地狱”

考虑以下带有和不带有的例子async/await

没有async/await

function addFavoriteProduct(favoriteProduct) {
    const user = userRepository.get(userId).then((user) => {
        const userProfile = profileRepository.get(user.profileId).then((userProfile)) => {
            const favoriteProducts = productsRepository.getFavoriteProducts(userProfile.favoriteProductsId).then((favoriteProducts) => {
                favoriteProducts.add(favoriteProduct);
            }).catch((error) => {
                // Handle error
            })
        }).catch((error) => {
            //Handle error
        });
    }).catch((error) => {
        // Handle error
    });
}
Enter fullscreen mode Exit fullscreen mode

这是“回调地狱”的一个例子。它包含许多嵌套操作,难以维护。如果嵌套操作再多,你就会走向“毁灭金字塔”反模式。

如果其中有我没有注意到的错误,我不会感到惊讶,因为代码比它需要的要复杂得多!我甚至不会尝试让它工作,因为有更好的方法。

直到最近,这一直是 NodeJS 中执行此类操作的标准方法。正因如此,许多较旧的示例和在线教程仍然教授这种风格,所以在 Stackoverflow 等网站上阅读时务必谨慎。如果您看到这种风格的代码,您应该意识到它不再是最佳实践。请在其他地方寻找其他示例或尝试重构使其变得更好,例如下面的示例。

async/await

async function addFavoriteProduct(favoriteProduct) {
    try {
        const user = await userProfile.get(userId);
        const userProfile = await profileRepository.get(user.profileId);
        const favoriteProducts = await  productsRepository.getFavoriteProducts(userProfile.favoriteProductsId);
        await favoriteProducts.add(favoriteProduct);
    } catch (error) {
        // Handle error
    }
}
Enter fullscreen mode Exit fullscreen mode

如你所见,这个例子更加简洁易懂。由于代码更简洁,隐藏 bug 的可能性也更小。

要使用,async/await您需要使用 Node 8 或更高版本,因此较新的 Node 版本将支持它。您需要在 中使用它async function。通过添加 来声明一个async,例如async function get()

使用公共 URL 尽早分享您的工作

localhost你知道吗?即使本地机器被防火墙或企业网络阻隔,你也能获取本地机器上 Node 应用的公开 URL 127.0.0.1。这不需要任何网络配置,只需一条命令即可完成expose,例如expose 80 as myapi.expose.sh

这使您可以尽早与您的合作者(例如其他工程师、客户或产品经理)分享您的工作并获得快速反馈,而无需设置完整的部署流程。

您可以编写后端 API,为其共享公共 URL,然后在与您合作的 React 前端开发人员从他们的应用程序向您的 API 发送请求时进行实时调试。

为什么不在 webhook 提供商向您发送 webhook 请求时进行实时调试,而不是花费数小时阅读他们的(通常不是那么好的)文档?

如果您使用的是 Linux,请运行此命令来安装expose

curl -s https://expose.sh/sh/install-linux.sh | sudo bash
Enter fullscreen mode Exit fullscreen mode

如果你使用的是 Mac,请运行

curl -s https://expose.sh/sh/install-mac.sh --output install-mac.sh && sudo bash install-mac.sh`
Enter fullscreen mode Exit fullscreen mode

对于 Windows,请转到安装页面并下载exe文件。

然后,您可以运行应用程序正在运行的端口号。更多说明请expose <port>参阅文档<port>

使用npm脚本自动执行重复任务

需要编译 JavaScript、运行 linter 或单元测试吗?您无需记住运行每个命令的命令,只需将 NPM 脚本添加到package.json文件中即可运行它们。

{
  "name": "myapp",
  "main": "app.js",
  "scripts": {
    "build": "tsc -p ./",
    "watch": "tsc -p ./ -w",
    "test": "jest",
    "lint": "eslint",
    "start": "nodemon app.js"
  },
  "dependencies": {
    .....
  }
}
Enter fullscreen mode Exit fullscreen mode

此示例使用 TypeScript,它是 JavaScript 的超集,添加了类型安全性。运行我的应用程序时,首先需要将代码编译成 Node 可以运行的纯 JavaScript。

要运行脚本,请运行npm run <script_name>。在这里我可以运行npm run build来编译我的代码,并npm run watch在监视模式下进行编译,每次更改后自动重新编译。

teststart是特殊脚本,您可以将它们作为npm test和运行npm start

启动您的应用以nodemon获得快速反馈

如果您在使用 Node.js 启动应用程序后更改了代码(例如node app.js),则需要按下ctrl+c停止应用程序,然后重新启动才能使更改生效。虽然这听起来可能不多,而且只需要几秒钟,但长时间重复执行此操作会累积起来。假设您每次只花 5 秒钟,而您平均每周执行 1000 次,那么这就会耗费 5000 秒,或者说,每周大约会多出 1.3 小时的额外工作时间。

不同之处nodemon在于,当您更新代码时,您的应用程序会自动重新启动。

使用之前nodemon您需要安装它,因此请运行npm install -g nodemon

使用 启动应用程序nodemon几乎与使用 node 相同。只需替换nodenodemon,例如,您可以运行nodemon app.js而不是node app.js

它看起来是这样的:

$ nodemon app.js
[nodemon] 1.18.9
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node app.js`
Example app listening at http://localhost:3000 # My app has started up

#####
# Here, I make a change to app.js
#####

[nodemon] restarting due to changes...
[nodemon] starting `node app.js`
Example app listening at http://localhost:3000 # Now, my app automatically restarts and picks up the change
Enter fullscreen mode Exit fullscreen mode

现在,当我进行更改时,应用程序会自动重新启动,从而节省了我大量的时间,我可以将这些时间投入到其他事情上。

专业提示:将其与startnpm 脚本结合使用,就像上一节中的示例一样

结论

这并不是您可以采取的提高 Node 开发人员工作效率的完整措施列表,但它是一个很好的起点。

这些简单的事情可以为您节省大量不必要的工作时间。

如果您发现这篇文章有用,请考虑分享以帮助其他人。

祝您编码愉快!

文章来源:https://dev.to/robbiecahill/six-ways-to-drastically-boost-your-productivity-as-a-node-developer-1mjd
PREV
软件开发人员应遵循的四项安全原则
NEXT
在日本工作:神话、现实、薪资、文化(由软件工程师撰写)在日本编程