在expressjs中使用响应对象提供HTML文件时,如何包含外部JavaScript文件?

时间:2015-03-16 21:31:58

标签: javascript html node.js express

我的快递应用程序在初始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文件的参考路径究竟是什么?谢谢。

1 个答案:

答案 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

More Detail Here

快乐帮助!