我是Node.js的新手;抱歉,如果我的问题很愚蠢:
我想从服务器返回index.html
:
var express = require('express');
var app = express();
var path = require('path');
app.get('/', function (req, res) {
res.sendFile(path.join(__dirname + '/index.html'));
});
app.get('/elements/hello-world.html', function (req, res) {
res.sendFile(path.join(__dirname + '/elements/hello-world.html'));
});
app.listen(1337);
但是html文件中有许多资产与本地服务器上的相应结构一起存储。例如,对于返回/elements/hello-world.html
,只需在元素文件夹下返回hello-world.html
就足够了。
但是在css
中为每个资产(例如image
es,index.html
等)编写路线是不合理的。
解决方案是什么?
答案 0 :(得分:2)
看起来你想要提供静态文件,提供静态文件,如图像,CSS文件和JavaScript文件,使用Express中的express.static内置中间件功能。
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
取自官方快报文档here
答案 1 :(得分:1)
解决方案是app.use
,就像(CoffeeScript):
app.use express.static(public_dir)
app.use '/js', express.static(path.join(public_dir, '/js'))
app.use '/css', express.static(path.join(public_dir, '/css'))
app.use '/images', express.static(path.join(public_dir, '/images'))
app.use '/fonts', express.static(path.join(public_dir, '/fonts'))
app.use '/svgs', express.static(path.join(public_dir, '/svgs'))
在index.html中我们提取资源,如
<script type="text/javascript" src="/js/primus.js"></script>
<script type="text/javascript" src="/js/app_090.js"></script>
我实际上不确定这是否能解答您的问题,但这就是Express中资源类型路由的完成方式。
答案 2 :(得分:1)
您需要使用快速静态模块。
app.use(express.static(path.join(__dirname, 'public')));
在nodejs根文件夹中创建一个名为public的文件夹,将index.html和elements文件夹放在其中。
现在,当您加载http://localhost/index.html和http://localhost/elements/hello-world.html时,它应该可以正常运行。