2014-01-13 31 views
1

我有一个已经深入开发的项目,并且端口有问题。关于网络应用端口的困惑

客户是SPA写在骨干网,使用Sails作为服务器。

问题是在客户端在快速运行的端口80上的事实,而帆是在1337年

我想在帆内举办这个骨干应用程序,而不是ouside帆运行。 更多细节: 当我开启提琴手时,我看到对localhost:1337/get/user的请求。 我需要它也驻留在端口80。

Backbone是使用标准编写的。我有所有常用文件夹(JS,LIBS,CSS)的app.js和main.js。换句话说,我有index.html数据主要使用require.js ...

我没有问题在单独的node.js中运行客户端...如何在Sails.js中运行它?

我在哪里放我的index.html ???

+0

我已经看到该链接。我有index.html反过来有数据主要的调用要求和Backbone的魔法是在那里被解雇......经过大量的阅读,似乎我可以在资产文件夹下的sails中的东西? –

回答

2

试图服务index.html作为静态文件不起作用。相反,尝试以下操作:

端上桌您index.html从帆

就成为index.html作为views/layout.ejsviews/home/index.ejs组合,其安装到根/为默认的新建项目扬帆。

2.建立一个包罗万象的路线

config/routes.js把这样的事情:

module.exports.routes = { 
    '/': { 
    view: 'home/index' 
    }, 

    '/:unknownRoute': { 
    view: 'home/index' 
    } 
} 

这样你就可以,例如,使用简单的单级pushstate路由在你的SPA中:路线如/products/news仍然会给你你的index.html(如果你使用更复杂的东西,你可能想用Sails路线多玩一点)。

3.用前缀即成您的API

在你config/controllers.js放,例如:

module.exports.controllers = { 
    ... 

    prefix: '/api', 

    ... 
} 

这将让你为你的API有一个前缀和既有/api/products(JSON API )和/products(您的SPA)路线。

4.使用任何端口,你想

您可以通过config/local.js改变默认端口,甚至80(如果你没有,当然什么都在80运行)。例如,在生产中,将默认的Sails或任何其他端口代理到Nginx可能是一个更好的主意。

+0

所以这意味着,我可以在那里为我的index.html服务,它应该工作?我会在第二天早上第一次尝试。我会在这里发布结果。 –

+0

如果你真的想通过Sails应用程序来提供它,是的,它会工作。另一种(比较干净的)方式可能是,例如,将'index.html'和资产作为静态文件在http:// www.whatever.com /'上用Apache或Nginx提供,在http:// api上用Sails API提供.whatever.com /'。尽管他们都有优点和缺点。 – bredikhin

+0

目前我正在使用端口80在单独的Express上为Backbone服务,并且Sails在默认端口1337上提供服务......是否有问题? –