如何设定查询参数

时间:2018-10-22 20:30:18

标签: javascript express pug

使用带有Express.js和Pug.js的Node.js构建动态网站。对于此任务,请选择一个国家并建立一个小册子网站(即具有信息的一页网站),页面上列出的所有事实都可以组成,内容必须为G或PG。该网站将根据运行Node.js的计算机的系统时间而更改。如果用户从上午7点到晚上7点(含)查看页面,则该页面应具有CSS,并且外观基于一天。关于该国的事实应面向天。如果在上午7点至晚上7点之外查看该页面,则事实和CSS主题应更改为面向晚上。页面的大多数外观和信息应根据白天或黑夜而改变。

此外,您的页面必须接受一个称为“小时”的查询参数,该参数将改为使用该时间而不是系统时间。必须可以输入小时作为军事时间(即1是凌晨1点,而13是下午1点)。

'use strict';
const express = require('express'),
app = express();
app.set('view engine', 'pug');
app.set('views', 'views');
app.use(express.static('resources'));
app.get('/', function (req, res) {
    let date = new Date();
    let time = date.getHours(); 
    if (time >= 7 && time <= 18) {
        res.render('day');
    }
    else {
        res.render('night');
    }
});
app.get('/hour', function(req, res){
    const hour = req.query.hour;
    if(hour >=7 && hour <= 19){
        res.render('day');
    }
    else {
        res.render('night');
    }
});
const server = app.listen(3000, function(){
    console.log(`Server started on port ${server.address().port}`);   
});

上面是我的代码的副本,其中的pug文件分别命名为“ day”和“ night”。我已经完成了这项任务,但是遇到了一个我似乎无法解决的问题。该页面的基本路径是localhost:3000/,带有查询参数hour的基本路径应该是localhost:3000/?hour=(hour)。我可以使程序正确运行的唯一方法是使用路径localhost:3000/hour?hour=(hour)。编写此代码的一种好方法是什么,这样我可以使用localhost:3000/?hour=(hour)的路径来获得预期的结果?

1 个答案:

答案 0 :(得分:0)

摆脱/hour路由,仅获取/路由中的查询参数。如果未提供该参数,则使用当前时间作为默认时间。

app.get('/', function (req, res) {
    let hour = req.query.hour;
    if (hour) {
        hour = parseInt(hour);
    } else {
        let date = new Date();
        hour = date.getHours(); 
    }
    if (hour >= 7 && hour <= 18) {
        res.render('day');
    }
    else {
        res.render('night');
    }
});