要求
编写一个 HTTP 文件 服务器,它用于将每次所请求的文件返回给客户端。
服务器需要监听所提供的第一个命令行参数所制定的端口。
同时,第二个会提供给程序的参数则是所需要响应的文本文件的位置。在这一题中必须使用 fs.createReadStream()
方法以 stream 的形式作出请求相应。
##要求
这次的问题和之前的问题(HTTP 收集器)很像,也是需要使用到 http.get() 方法。然而,这一次,将有三个 URL 作为前三个命令行参数提供。
需要收集每一个 URL 所返回的完整内容,然后将它们在终端(标准输出stdout)打印出来。这次不需要打印出这些内容的长度,仅仅是内容本身即可(字符串形式);每个 URL对应的内容为一行。重点是必须按照这些 URL 在参数列表中的顺序将相应的内容排列打印出来才算完成。
这个问题和前面一个一样,但是这次需要使用模块。将需要创建两个文件来解决这个问题。
编写一个程序来打印出所给文件目录的所含文件的列表,并且以特定的文件名后缀来过滤这个列表。这次将会提供两个参数,第一个参数是要列举的目录,第二个参数是要过滤的文件扩展名。在终端中打印出过滤出来的文件列表(一个文件一行)。此外,必须使用异步 I/O。
需要编写一个模块文件去做大部分的事情。这个模块必须导出(export)一个函数,这个函数将接收三个参数:目录名、文件扩展名、回调函数,并按此顺序传递。文件扩展名必须和传递给程序的扩展名字符串一模一样。也就是说,请不要把它转成正则表达式或者加上”.”前缀或者做其他的处理,而是直接传到模块中去,在模块中,可以做一些处理来使过滤器能正常工作。
这个回调函数必须以 Node 编程中惯用的约定形式(err,data)去调用。这个约定指明了,除非发生了错误,否则所传进去给回调函数的第一个参数将会是 null,第二个参数才会是数据。在本题中,这个数据将会是过滤出来的文件列表,并且是以数组的形式。如果接收到了一个错误,如:来自fs.readdir()
的错误,则必须将这个错误作为第一个,也是唯一的参数传递给回调函数,并执行回调函数。
绝对不能直接在模块文件中把结果打印到终端中,只能在原始程序文件中编写打印结果的代码。
当程序接收到一些错误的时候,请简单的捕获它们,并且在终端中打印出相关的信息
这里有四则规定,模块必须遵守:
遵循一些约定的好处是,模块可以被任何其他也遵守这些约定的人所使用。