如何在Node + Ember应用程序中处理路由?

时间:2014-10-06 22:44:40

标签: javascript node.js ember.js

我有一个Node + Ember应用程序。我遇到了一些关于路线的问题。 Node和Ember都处理路由,我有一些我希望Node处理的路由,但有些路由,我想让Ember处理。例如,当页面加载时,Node的路由器会启动,因此我在Ember声明的任何路由都是无用的。

假设我在Ember JS中有一个名为'settings'的路线。当我从Ember的另一个视图使用{{#link-to}}帮助器导航到“http://myapp.com/settings”时,我可以看到该页面。但是,一旦我在该页面上并且重新加载,我得到404,因为Node的路由器被调用并且该路由未在Node中声明。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我没有使用节点,但我想这个概念对你来说可能与我的应用程序相同(我使用的是Java Spring)。您应该修改到app.get('/*')的路由,或者在节点中使用通配符并返回Ember的index.html。所以基本上,任何url / all all都会得到你的Ember app,而不仅仅是/ route

灰烬处理其余部分。看一下这个帖子(它的nginx,但是校长也一样):http://discuss.emberjs.com/t/how-to-serve-all-routes-on-a-production-server-exactly/6372/2

如果链接在将来的某个时间点发生故障,这里有一个有用的nginx配置,它使用ember index.html页面重写assets下的所有规则:

server {
    listen 80 default;
    server_name my.domain.com;
    root /path/to/app/root;

    location / {
        rewrite ^ /index.html break;
    }

    location /assets/ {
        # do nothing and let nginx handle this as usual
    }
}