我有一个已经深入开发的项目,但端口有问题。
客户端是用 backbone 编写的 SPA,它使用 Sails 作为服务器。
问题在于客户端在端口 80 上的 Express 中运行,而 Sails 在 1337 上运行。
我想在 Sails 中托管这个主干应用程序,而不是在 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 放在哪里???
最佳答案
尝试服务 index.html
因为静态文件不起作用。相反,请尝试以下操作:
<强>1。为您服务index.html
来自 sails
就上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 中使用简单的单级推送状态路由:类似 /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 的端口可能是一个更好的主意。
关于javascript - 关于 Web 应用程序端口的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21097679/