【问题标题】:Krakenjs How to route all requests except some api calls to index.html?Krakenjs 如何将除一些 api 调用之外的所有请求路由到 index.html?
【发布时间】:2015-04-16 16:56:05
【问题描述】:

除了一些 api 调用和一些页面之外,我如何将所有请求路由到 index.html。因为 kraken 的路由方式是基于控制器的目录,所以如果我这样做了

// /controller/index.js
app.get('*', function(){
    res.sendFile(__dirname + '/public/index.html');
}); 

kraken 会将我的所有请求路由到 index.html,包括 /controller/api 目录中的 api 调用。那么我怎样才能让 kraken 将一些请求(如 /api)路由到 /controller/api/index.js 并将其余请求路由到 /public/templates/index.html?

【问题讨论】:

    标签: angularjs node.js express single-page-application kraken.js


    【解决方案1】:

    我会把它作为中间件放在路由器之后(使用优先级来确保它在正确的位置结束)

    module.exports = function setupJustServeTheAppEverywhere() {
       return function (req, res, next) {
          res.sendFile(__dirname + '/public/index.html');
       }
    };
    

    并让配置加载。

    【讨论】:

    • 我可以工作,但是如果我将所有路由重定向到 index.html,我怎么知道是否存在“找不到文件”或“内部服务器错误”异常?
    • 这确实是这种方法的问题,并将所有渲染卸载到客户端。我更喜欢渲染服务器端来初始化,这意味着你的整个路由设置实际上是明确的,而不是像这样基于回退。
    • 错误仍会显示,但未找到的文件将被隐藏。如果您这样做,此应用将永远不会 404。
    猜你喜欢
    • 2013-11-07
    • 2014-10-10
    • 2017-05-29
    • 2014-12-08
    • 2019-12-29
    • 1970-01-01
    • 1970-01-01
    • 2017-09-12
    • 2017-04-08
    相关资源
    最近更新 更多