带有节点后端的Ember前端 - 开发实践

时间:2015-06-14 04:20:29

标签: javascript ajax node.js ember.js proxy

我目前正在开发一个带有节点后端的余烬前端。

在我的ember-cli应用程序中,我将.ember-cli文件设置为代理节点请求:

{
  "proxy": "http://localhost:3000"
}

我还必须在contentSecurityPolicy中设置一大堆规则,以避免跨网站问题。

我开始使用ember server进行ember,并且它成功地将ajax请求代理到我的节点后端 - 尽管它还代理来自其他库(如facebook到节点)的ajax请求(以404s失败)。

余烬内容由http://localhost:4200/

提供

我还有一个直接从节点提供的静态登录页面,我可以通过http://localhost:3000/home

访问该页面

是否有更好的方式来设置它,就像在生产环境中所有内容都是从一个地址提供的?或者我必须在这种孤立模式下发展?

两个应用程序前面的代理可能会起作用,但它仍然需要contentSecurityPolicy的东西,因为从那个角度来看,没有什么不同。

2 个答案:

答案 0 :(得分:0)

在我最近的应用程序中,我一直使用Ember.js作为前端,将node.js + express + mongodb作为后端使用。

我正在运行2台服务器 - 端口80上的/dist目录(静态文件,图像等)的nginx和其他端口上的API的节点服务器。我代理以/api/v1(动态请求)开头的请求来表达服务器:

upstream app_domainName.com {
    server ip.co.me.shere:1234; # port of node.js server running
    keepalive 8;
}

    location /api/v1/ {
            proxy_pass  http://app_domainName.com;

    proxy_next_upstream error timeout invalid_header http_500 http_502
http_503 http_504;
    proxy_redirect off;
    proxy_buffering off;
    proxy_set_header        Host            $host;
    proxy_set_header        X-Real-IP       $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    }

我不想通过快速服务器提供静态文件,因为nginx似乎有更好的性能来处理它们。

答案 1 :(得分:0)

当你运行ember serve时,ember会不断更新它的dist目录并保存每个文件。

我将符号链接ember的dist目录放到我服务器的目录中,然后告诉hapi'/'路由应该回复一个基本上是ember的index.html文件副本的视图,并且还打开一个到/ dist / assets的路由(这是所有你的余烬js代码的地方)。

在终端中,只需打开两个标签,一次运行ember服务,第二次运行服务器。

这可以服务于服务器端口的所有内容,不断更新每个文件。