我有一个已经深入开发的项目,并且端口存在问题。
客户端是用骨干编写的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 ???
放在哪里答案 0 :(得分:2)
尝试将index.html
作为静态文件提供服务无效。相反,请尝试以下方法:
<强> 1。从Sails
服务index.html
只需将index.html
作为views/layout.ejs
和views/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或任何其他端口可能是更好的主意。