Angular Universal:不呈现某些页面

问题描述 投票:2回答:2

我已经开发了Angular Universal项目。所有页面均使用express呈现,如下所示:

server.get('*', (req, res) => {
    res.render(indexHtml, { req, providers: [
            { provide: href, useValue: req.baseUrl },
            { provide: REQUEST, useValue: req },
            { provide: RESPONSE, useValue: res }
        ]});
});

但是,我也有一些个性化的URL,我不想渲染它们,我只希望Express响应简单的静态索引文件,该文件将被浏览器加载。我正在尝试这样:

server.get('/personal-information', express.static(indexHtml));

但没有结果。请帮助。

angular angular-universal
2个回答
0
投票
您还可以在代码中解析这样的URL。

server.get('*', (req, res) => { const params = req.params[0].split("/"); if (params[1] && params[1] === "personal-information") { res.send(indexHtml); } else { res.render(indexHtml, { req, providers: [ { provide: href, useValue: req.baseUrl }, { provide: REQUEST, useValue: req }, { provide: RESPONSE, useValue: res } ] } });

使用这种方法,您可以将URL分成不同的部分,并根据需要计算逻辑。例如,如果API调用URL为https://example.com/personal-information,则params[0]将为example.com,而params[1]将为personal-information。这将帮助您解决所面临的问题。    

-1
投票
express.static()期望第一个参数是 目录,而不是文件名。我建议创建另一个 子目录以包含您的index.html并使用它。 Refer to this answer

因此,如果您有类似的东西:

server.get('*.*', express.static('public'));

您需要在公共路径内创建一个名为personal-information的文件夹,并将index.html放在此处。    
© www.soinside.com 2019 - 2024. All rights reserved.