Javascript 带有节点后端的Ember前端-开发实践
我目前正在开发一个带有节点后端的ember前端 在我的ember cli应用程序中,我将.ember cli文件设置为代理对节点的请求:Javascript 带有节点后端的Ember前端-开发实践,javascript,ajax,node.js,ember.js,proxy,Javascript,Ajax,Node.js,Ember.js,Proxy,我目前正在开发一个带有节点后端的ember前端 在我的ember cli应用程序中,我将.ember cli文件设置为代理对节点的请求: { "proxy": "http://localhost:3000" } 我还必须在contentSecurityPolicy中设置一整套规则,以避免跨站点问题 我使用ember server启动ember,它确实成功地将ajax请求代理到我的节点后端——尽管它也将来自其他库(如facebook)的ajax请求代理到节点(404s失败) 余烬内容由htt
{
"proxy": "http://localhost:3000"
}
我还必须在contentSecurityPolicy中设置一整套规则,以避免跨站点问题
我使用ember server
启动ember,它确实成功地将ajax请求代理到我的节点后端——尽管它也将来自其他库(如facebook)的ajax请求代理到节点(404s失败)
余烬内容由http://localhost:4200/
我也有一个静态登录页,直接从我可以通过http://localhost:3000/home
有没有更好的方法来设置它,让它更像是从一个地址提供所有内容的生产环境?还是我必须在这种孤立的模式下发展
两个应用程序前面的代理可能会起作用,但它仍然需要contentSecurityPolicy,因为从这个角度看,没有什么真正的不同。在我最新的应用程序中,我一直使用Ember.js作为前端,node.js+express+mongodb作为后端 我正在运行两台服务器—nginx用于端口80上的
/dist
目录(静态文件、图像等),节点服务器用于端口80上的API。I以/api/v1
(动态请求)开头的代理请求,用于express server:
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;
}
我不想通过express server为静态文件提供服务,因为nginx在处理静态文件方面似乎有更好的性能。当您运行ember Service时,ember会在每次保存文件时不断更新其dist目录 我将ember的dist目录符号链接到我的服务器目录中,然后告诉hapi“/”路由应该以一个基本上是ember的index.html文件副本的视图进行回复,并打开一个到/dist/assets的路由(这是所有ember js代码所在的位置) 在终端中,只需打开两个选项卡,一次运行ember serve,第二次运行服务器
这为服务器端口的所有内容提供服务,每次文件保存都会不断更新。在您的ember应用程序的根目录中,应该有一个名为dist的目录。您需要将dist文件夹符号链接到服务器的根目录中(或您想要的任何位置,但它必须位于服务器的目录中,而不是在它的外部。)然后,告诉服务器有一个或多个路由指向服务器目录中的dist文件夹。然后,在terminal just run ember serve中,打开第二个terminal选项卡并运行服务器。每次更新ember文件时,dist文件夹都会更新,这意味着服务器目录中的符号链接dist文件夹也会更新。