Javascript 需要澄清一下nodejs的概念吗

Javascript 需要澄清一下nodejs的概念吗,javascript,node.js,backend,Javascript,Node.js,Backend,我开始更多地了解这个“网络世界”是如何运作的,这就是为什么我要参加免费代码夏令营课程。我已经参加了前端开发,我真的很喜欢它。现在我在后端。 后端对我来说雾更大。有很多事情我不明白,所以我希望有人能帮我解决 首先,我学习了get方法。所以我做了: var http = require('http'); 然后发出get请求: http.get(url, function callBack(response){ response.setEncoding("utf8"); response

我开始更多地了解这个“网络世界”是如何运作的,这就是为什么我要参加免费代码夏令营课程。我已经参加了前端开发,我真的很喜欢它。现在我在后端。 后端对我来说雾更大。有很多事情我不明白,所以我希望有人能帮我解决

首先,我学习了get方法。所以我做了:

var http = require('http');
然后发出get请求:

http.get(url, function callBack(response){
   response.setEncoding("utf8");
   response.on("data", function(data){
      console.log(data);
   });
});
问题1) 显然,这段代码“获取”了某个URL的响应。但是什么反应呢?我甚至没有特别要求什么

继续。。。 第二个练习要求我们侦听TCP连接并创建服务器,然后写入该连接的日期和时间。答案是:

var server = net.createServer(function listener (socket){
   socket.end(date);
});
server.listen(port);
问题2) 好的,我用net.createServer()创建了一个TCP服务器,当连接成功时,我输出了日期。但是在哪里呢?当我将日期放入socket.end()时,实际发生了什么

最后但并非最不重要。。。 在上一个练习中,我被告知创建一个HTTP服务器(what?)来为每次接收请求的文本文件提供服务器,下面是我所做的:

var server = http.createServer(function callback(request, response){
   var read = fs.createReadStream(location);
   read.pipe(response);
});
server.listen(port);
问题3) a) 为什么我必须创建HTTP服务器而不是常规TCP?有什么区别? b) createReadStream做什么? c) pipe()做什么

如果有人能帮助我,试着让解释更简单会对我有很大帮助,因为你可以看到,我在这个问题上相当愚蠢


多谢各位

这对于Stackoverflow来说有点宽泛,它支持解决特定问题的重点问题。但是我感觉到你的痛苦,所以

问题1: Http.get大致相当于请求一个网页。函数中的url是您请求的页面。响应将包括一些内容,如HTTP响应代码,但(最重要的)还有页面的内容,这可能是您想要的。在后端,这通常用于访问获取数据而不是实际网页的API,但传输机制是相同的

问题2: 打开套接字时,您正在等待其他人请求连接。(使用
http.get()
时的方式。当您输出数据时,您向他们发送的响应与问题1中收到的响应类似

问题3: HTTP是一种比TCP更高级别的协议。这基本上意味着它更具体,TCP更通用(学究们会对这种说法提出异议,但这是一种容易理解的方法).HTTP定义了下载网页时使用的
GET
POST
等内容。在协议栈的下面,HTTP使用TCP。您可以只使用TCP,但需要做更多的工作来解释传入的请求。HTTP库为您提供了这些功能。FTP等其他协议也使用TCP,但它们与HTTP协议不同

  • 对于这个答案,你需要了解两件事。IP地址是一个网站的数字值,它是指向该网站的服务器的地址。域名是从IP到命名系统的转换,它使人类更容易看到网站的名称,因此,我们不必为网站键入数字,如192.168.1.1,我们可以现在只需键入名称(www.hotdog.com)。get请求就是这样做的,它请求站点

  • socket.end是您正在调用的一种方法。socket.end“一半关闭套接字。即,它发送一个FIN数据包。服务器可能仍然会从nodejs.org文档发送一些数据”,因此基本上它在您发送的参数(即今天的当前日期)处一半关闭您的套接字

  • 是超文本传输协议,(传输控制协议)是两台计算机之间的链路

  • 3a HTTP是针对浏览器的,所以这就是为什么要针对本地托管的网页或其他内容这样做

    3b返回一个新的ReadStream对象(请参阅Readable Stream)

    请注意,与为可读流(16 kb)上的highWaterMark设置的默认值不同,此方法返回的流对于同一参数具有64 kb的默认值

    3c:
    当stream.pipe()方法在可读流上被调用,将此可写添加到其目的地集。

    我甚至没有要求任何特定的内容
    -是的,您这样做了,响应是对给定的
    url
    的响应。虽然这不是堆栈溢出的典型问题格式,但看到真正了解如何解决问题的人令人耳目一新写一个程序,在做了一些初步的研究后表现出基本的理解之后,只想得到真正的澄清。+1非常感谢你的回答。这对我帮助很大。顺便说一句,如果我想问更广泛的问题,我应该去哪里?老实说,我认为对于广泛的问题,谷歌是你最好的选择。它会出现这样的情况:哪一个是更多的还是更多的请回答你的第三个问题。非常感谢你的回答。这对我帮助很大。顺便说一句,如果我想问更广泛的问题,我应该去哪里?我会使用谷歌,你可以尝试不同的学习资源,如youtube视频,如果你是一名视听学习者,或者如果你从阅读中学习得更好,你可以去阅读文章和nodejs的文档。你不会忘记除非你每天都这样做,否则你不会取得进步,并且确保你阅读并理解了你所做的事情背后的原则。谷歌是作为一名开发人员四处走动的最佳方式。如果这些帮助了你,请选择一个你想给分的答案,并投票给那些帮助你的人。祝你好运杰夫!你会投票还是选择一个答案?帮助社区尼蒂!