【问题标题】:Checking URL for URL contains string to change Jade theme in express检查 URL 的 URL 是否包含字符串以在 express 中更改 Jade 主题
【发布时间】:2020-06-10 20:59:49
【问题描述】:

我正在尝试查看如何检查快速应用程序中是否存在 URL 字符串,以便触发主题更改。

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

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

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

id 喜欢做的是能够检查某个字符串的 url。例如“玩具”并基于该触发器以某种方式玉/哈巴狗显示与此不同的图形。

store.org 
trigger main Graphic

toystore.org
trigger a different graphic 

然后以某种方式传递它,以便我可以更改 pug/jade 中的主题。想法?

我想简单地做一个 string.match 并在正则表达式中查找它,但这不起作用,因为我需要能够操纵这个触发器来改变 pug/jade 中的 Them

【问题讨论】:

    标签: javascript regex express pug


    【解决方案1】:

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

    • 检查中间件中的条件并将自定义属性添加到请求或响应对象

    • 稍后使用

    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.theme 的值。

    编辑: 如果不确切知道您的意思,就很难回答您关于“显示不同图形”的附加问题。

    如果你想显示一个包含完全不同元素的页面,你应该创建 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 文件。

    【讨论】:

    • @OLIVER 谢谢,使用 pug/jade,如何根据 URL 设置显示某个图形?
    猜你喜欢
    • 2012-03-28
    • 1970-01-01
    • 2013-02-07
    • 2016-08-12
    • 1970-01-01
    • 2023-02-18
    • 1970-01-01
    • 2014-07-04
    • 2012-01-05
    相关资源
    最近更新 更多