javascript - 如何理解这个 Node 代码是如何工作的?
问题描述
我是一个正在尝试理解此代码的初级 Web 开发人员。这段代码有什么作用?它与仅仅创建一个服务器并监听所有请求有什么不同?
listen(port, callback) {
if (typeof(port) == "number") {
http.createServer((req, res) => {
if (req.method === "GET") {
parseGetRequest(req, () => {
eventEmitter.emit("httpGetRequest", req, res);
});
} else if (req.method === "POST") {
parsePostRequest(req, () => {
eventEmitter.emit("httpPostRequest", req, res);
});
} else {
req.parameters = null;
}
}).listen(port);
} else {
callback(new Error("The defined Port is not a number"));
}
}
解决方案
该代码具有以端口和回调函数作为参数的监听函数。首先它检查端口的类型,如果数字是类型,然后再次检查方法是 GET 还是 POST 方法。基于此,它使用 httpGetRequest 或 httpPostRequest 发出事件。
否则它使 req 参数为空。如果端口的类型是数字,那么它会监听该端口。
在这里你可能会对箭头函数、回调函数、eventEmitter 感到困惑。
作为 Web 开发人员的新手,首先要学习 Web 的基础知识并尝试从源代码中阅读官方文档。不要从互联网上复制和粘贴代码并检查是否正在运行。这永远不会帮助您提高知识质量。
推荐阅读
- cassandra - Cassandra 桌子在 2 年内没有被压实?
- validation - 使用计算属性 Vue 2 的条件类绑定
- java - java - 如何在java junit测试类中并行运行一些测试用例和以串行方式运行一些测试用例?
- java - 我已经通过 Java spring security 生成了公钥,我尝试使用该公钥使用 Nodejs Crypto 加密数据,但它返回错误
- android - Sharepoint api是否在android studio中使用
- c# - 如何将 URL 嵌入 Blazor 页面
- python-3.x - 无法解码作为 URL 参数传递的“梵文文本”
- macos - 如何在 MacOS 上的 IntelliJ 中重新分配 Ctrl+拖动?
- reactjs - 反应不从更新的环境文件中获取数据
- python - 向 Yelp API 发布请求,要求提供已提供的参数