javascript - 如何使用 expressjs 发送多个文件?
问题描述
我希望能够发送许多文件,如果可能的话,可以发送整个目录,以便我可以在从 html 文件调用的其他 js 文件中访问它。
const app = require("express")();
const http = require("http").Server(app);
const io = require("socket.io")(http);
const port = process.env.PORT || 3000;
app.use("/styles", express.static(__dirname));
app.get("/", function (req, res) {
//res.sendFile("C:/Users/Kevin_Who/Desktop/Online Chat Game/index.html");
//res.sendFile("C:/Users/Kevin_Who/Desktop/Online Chat Game/mainScript.js");
res.sendFile("C:/Users/Kevin_Who/Desktop/Online Game Files/");
//app.use(express.static("Online Game Files"));
});
我尝试使用 res.sendFile 发送许多文件,但它只发送第一个文件。<script src="mainScript.js" type="module"></script>
在 html 文件中,它在脚本标记 ( ) 中引用 mainScript.js 。在 mainScript.js 中,它还引用了图像文件,我需要帮助找到如何发送和访问这些文件(tiles[2].src = "./Assets/Blocks/StoneBrickWall.png";
)。
解决方案
当浏览器在您的 html 文件中访问此内容时:
<script src="mainScript.js" type="module"></script>
它将向您的服务器创建一个新的 http 请求。该 http 请求将指向当前页面 URL 的路径<somePath>/mainScript.js
。<somePath>
如果该 URL 是顶级 URL,则请求将转到/mainScript.js
. 您的服务器需要处理该特定请求/mainScript.js
并发送相应的脚本文件。
这就是网页的工作方式。浏览器对文件中的每个资源(脚本、图像、CSS 文件等)发出单独的 http 请求,您的服务器需要分别响应每个 http 请求并发送适当的资源。
在 Express 中,这些对静态资源的请求通常使用express.static()
一行中间件来处理目录层次结构中的许多文件的服务。
注意:通常建议不要对静态资源使用路径相对 URL,因为浏览器会将这些路径相对 URL 与当前网页的路径结合起来,这将使得在不同的网页中使用相同的静态资源变得困难。您的网站。相反,您的静态 URL 以前导开头,/
这样无论在哪个页面中使用它们,它们都会向您的服务器生成一个恒定的 URL 请求。
我尝试使用 res.sendFile 发送许多文件
您只能发送一个带有res.sendFile()
. 它将那个文件作为 http 响应发送,并且每个请求只能发送一个 http 响应。
在 mainScript.js 中,它还引用了图像文件,我需要帮助找到如何发送和访问这些文件
tiles[2].src = "./Assets/Blocks/StoneBrickWall.png";
这也将导致浏览器向您的服务器发出新请求,您还需要让服务器响应该请求。同样,您可能不希望它以 . 开头./
,而只是/
.
推荐阅读
- javascript - 如何使用 GraalVM 创建 node.js 原生镜像
- python - Kivy 如何在弹出窗口中正确使用 FileBrowser
- javascript - 迭代 knockout.js 可观察对象的 javascript 属性以创建订阅
- ruby-on-rails - 在 rspec 测试运行之前清除 sprockets 缓存
- visual-studio-code - 如何以编程方式在 VS Code 中显示 CompletionList?
- c++ - 不同范围内的 C++ 对象引用
- php - PHP shmop 重新加载时的段错误
- c# - VS2010 C# 在目标中不包括正确的 .net 框架版本
- polymer-2.x - 聚合物 2 嵌套 ShadowRoots
- ios - UILabel numberOfLines 随动画变化