javascript - 关于 Web 应用程序端口的混淆

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

我有一个已经深入开发的项目,但端口有问题。

客户端是用 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/

相关文章:

javascript - Rally 自定义应用程序复选框过滤器不起作用

javascript - 如何格式化路径以便在 Express.JS 中接收通用 JSON 对象?

javascript - ejs <%- body %> 不工作

javascript - sails 政策不起作用

javascript - Backbone.js - 按顺序插入新 View 项

backbone.js - Backbone.View 和 Backbone.Model 实例过多

javascript - 如何从 JavaScript 上转换的 XML 访问 JSON.@attribute

javascript - MongoDB 将 mongo 实例包装在 Promise 中

javascript - 页面加载时如何在jquery中获取增量值

templates - 如果 app.js 文档未准备好,如何使用 this.template?