我的快递应用程序在初始GET时从我的磁盘提供HTML页面(即,如果我在浏览器中点击“http://localhost:3000/”)。现在我想访问一个与HTML文件位于磁盘相同位置的JavaScript文件。当我尝试使用
将其包含在'index.html'中时 <script src="/myJavaScriptFile.js" type="text/javascript" ></script>
或
<script src="./myJavaScriptFile.js" type="text/javascript" ></script>
或
<script src="~/MyAbsolutePath/myJavaScriptFile.js" type="text/javascript"</script>
它不起作用。永远不会到达myJavaScriptFile.js文件。
我的快递应用看起来像这样:
var express = require('express')
var testMethod = require('./test')
var app = express()
app.use(bodyParser.urlencoded({ extended:false }));
var server = app.listen(3000, function () {
var host = server.address().address
var port = server.address().port
console.log('Example app listening at http://%s:%s', host, port)
})
app.get('/', function (req, res) {
console.log('In /');
res.sendFile(__dirname + '/index.html');
})
Express应用程序使用res.sendFile函数使用引用路径'__dirname'+'/ index.html'为'index.html'提供服务。 (我开始觉得这是一种糟糕的做法。如果你这么想,请告诉我。)
另外正如我们在快递应用程序中看到的那样,一个名为'test'的外部JavaScript文件与'index.html'和'express.js'位于同一位置,但没有任何问题。有谁能请说明背景中实际发生的事情?如果由快递应用程序提供,我可以在我的'index.html'中提供的JavaScript文件的参考路径究竟是什么?谢谢。
答案 0 :(得分:3)
借助Express - express.static中的内置中间件,可以完成服务文件,例如图像,CSS,JavaScript和其他静态文件。
将目录的名称(将被标记为静态资产的位置)传递给express.static中间件,以便直接开始提供文件。例如,如果将图像,CSS和JavaScript文件保存在名为public的目录中,则可以执行以下操作:
app.use(express.static('public'));
现在,您将能够加载公共目录下的文件:
http://localhost:3000/images/kitten.jpg
http://localhost:3000/css/style.css
http://localhost:3000/js/app.js
http://localhost:3000/images/bg.png
http://localhost:3000/hello.html
快乐帮助!