大幅提升 Node 开发者生产力的六种方法
介绍
这五个提升效率的技巧将极大地提升你作为 Node 开发者的效率。你将节省大量时间,并将其用于其他活动。
这并不是您应该做的所有事情的完整列表,但如果您还没有做这些事情,那么仅这些事情就会大大提高您的工作效率。
使用模糊查找器
我们中的许多人仍在使用有时包含数千个文件的大型单片代码库。
如何在项目中成千上万个文件和数百个文件夹中找到employee.js
隐藏的文件?手动遍历目录树寻找?还是去问其他更熟悉代码库的开发人员?/src/authentication/userTypes/employee.js
.js
不,只需使用模糊查找器并输入employee.js
,您就会在几秒钟内找到您的文件。
操作方法如下:在 中vscode
,按下Alt+P
,然后输入要查找的文件名。结果将立即显示。
如果您使用的是 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
});
}
这是“回调地狱”的一个例子。它包含许多嵌套操作,难以维护。如果嵌套操作再多,你就会走向“毁灭金字塔”反模式。
如果其中有我没有注意到的错误,我不会感到惊讶,因为代码比它需要的要复杂得多!我甚至不会尝试让它工作,因为有更好的方法。
直到最近,这一直是 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
}
}
如你所见,这个例子更加简洁易懂。由于代码更简洁,隐藏 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
如果你使用的是 Mac,请运行
curl -s https://expose.sh/sh/install-mac.sh --output install-mac.sh && sudo bash install-mac.sh`
对于 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": {
.....
}
}
此示例使用 TypeScript,它是 JavaScript 的超集,添加了类型安全性。运行我的应用程序时,首先需要将代码编译成 Node 可以运行的纯 JavaScript。
要运行脚本,请运行npm run <script_name>
。在这里我可以运行npm run build
来编译我的代码,并npm run watch
在监视模式下进行编译,每次更改后自动重新编译。
test
和start
是特殊脚本,您可以将它们作为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 相同。只需替换node
为nodemon
,例如,您可以运行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
现在,当我进行更改时,应用程序会自动重新启动,从而节省了我大量的时间,我可以将这些时间投入到其他事情上。
专业提示:将其与start
npm 脚本结合使用,就像上一节中的示例一样。
结论
这并不是您可以采取的提高 Node 开发人员工作效率的完整措施列表,但它是一个很好的起点。
这些简单的事情可以为您节省大量不必要的工作时间。
如果您发现这篇文章有用,请考虑分享以帮助其他人。
祝您编码愉快!
文章来源:https://dev.to/robbiecahill/six-ways-to-drastically-boost-your-productivity-as-a-node-developer-1mjd