检查URL是否包含字符串,以便在快递中更改翡翠主题。

问题描述 投票:0回答:1

我想知道如何检查一个URL字符串是否存在于一个Express应用程序中,以便我可以触发一个主题变化。

现在我有一个简单的router.get函数。

router.get('/', function(req, res, next) {

  res.render('index', { title: 'Home' });
});

我想做的是能够检查某个字符串的url,例如 "Toy",然后基于这个触发器,jadepug显示一个不同的图形。

store.org 
trigger main Graphic

toystore.org
trigger a different graphic 

然后通过某种方式,让我可以在pugjade中改变主题。 有什么想法?

我想简单地做一个string.match,然后在一个regex中查找,但那是行不通的,因为我需要能够操纵这个触发器来改变pugjade中的Them。

javascript regex express pug
1个回答
0
投票

如果你想根据请求的一些条件来修改一个视图,你可以这样做。

  • 在中间件中检查条件,然后在请求或响应对象中添加一个自定义属性。

  • 以后再用吧

app.js 上面的路由。

const checkTheme = (req, res, next) => {
    if(req.hostname === "store.org" {
        res.locals.theme = "graphic"
    } else {
        res.locals.theme = "other-graphic"
    }
    next();
};

app.use(checkTheme);

然后在你需要的地方检查res.locals.topic的值就可以了

EDIT:在不知道你的具体意思的情况下,回答你关于 "显示不同的图形 "的附加问题是很困难的。

如果你想用完全不同的元素显示一个页面,你应该创建2个页面,然后选择哪个页面在你的控制器中渲染。

const getIndexBasedOnUrl = (req, res, next) => {
    if(res.locals.theme === 'graphic') {
        res.render('index/graphic');
    } else {
        res.render('index/other-graphic');
    }
};

如果你只想做微小的改变,只需要在你的视图中检查值,然后使用... ... if 有得改

if theme === 'graphic'
    h2.green Description
else 
    h2.red Description

你甚至可以使用条件来导入不同的css文件。

© www.soinside.com 2019 - 2024. All rights reserved.