关于Web应用程序端口的困惑

时间:2014-01-13 17:32:41

标签: javascript node.js backbone.js sails.js

我有一个已经深入开发的项目,并且端口存在问题。

客户端是用骨干编写的SPA,它使用Sails作为服务器。

问题在于Client在端口80上运行Express,而Sails在1337上运行。

我想在Sails中托管这个骨干应用程序,而不是在风帆中。 更多细节: 当我解雇Fiddler时,我看到对localhost:1337 / get / user的请求。 我也需要它驻留在端口80上。

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

进行数据主

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

我将index.html ???

放在哪里

1 个答案:

答案 0 :(得分:2)

尝试将index.html作为静态文件提供服务无效。相反,请尝试以下方法:

<强> 1。从Sails

服务index.html

只需将index.html作为views/layout.ejsviews/home/index.ejs的组合提供,这些组合已安装到根/,用于默认新创建的Sails项目。

<强> 2。设置一个包罗万象的路线

config/routes.js中输入以下内容:

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

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

通过这种方式,您可以在SPA中使用简单的单级pushstate路由:/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上运行任何其他内容)。

在生产中,例如,仅使用Nginx代理默认Sails或任何其他端口可能是更好的主意。