Node.js:如何路由网站地图

时间:2017-02-28 05:55:35

标签: node.js

我是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等)编写路线是不合理的。 解决方案是什么?

3 个答案:

答案 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.htmlhttp://localhost/elements/hello-world.html时,它应该可以正常运行。