【问题标题】:How can Sails.js serve a Yeoman generated appSails.js 如何为 Yeoman 生成的应用程序提供服务
【发布时间】:2016-03-04 02:07:02
【问题描述】:

我是 Sails.js 的新手,对此我感到非常兴奋。它是创建 API 的绝佳工具。 我还在使用 Yeoman 生成的单页应用程序(jquery 或 angular)工作了一段时间,它们非常适合客户端逻辑。

然而,目前基于这两种技术制作应用程序的唯一方法是将它们分成两个完全独立的项目,这是一种浪费。

我正在寻找一种将两者结合起来的方法。 我想让 Sails.js 服务于 Web 应用程序的静态资产并加载它的 index.html 文件(而不是 homepage.ejs)。我还希望开发环境(咕噜声,实时重载能够正常工作)。

我尝试在 assets 文件夹中创建一个 yeoman 项目并将布局重定向到 index.html,但它有几个问题: - 我无法将 app/ 文件夹(在开发期间)和 dist/ 文件夹(在生产中)分开 - bower_components 链接已损坏(它指的是 /bower_components 而不是 /assets/app/bower_components)

我想可能还有更多我尚未发现的问题。

有没有人尝试(并成功)结合这些技术?

【问题讨论】:

    标签: javascript sails.js yeoman single-page-application


    【解决方案1】:

    您可以通过执行以下步骤来提供静态 index.html 而不是 homepage.ejs:

    1. 将 index.html 文件放在 assets 文件夹下。
    2. 在 config 文件夹中打开 routes.js 并更改代码
    '/': { 查看:'主页' }

    '/': { 观点:假 }

    assets 文件夹作为网站的根文件夹。如果您的“angular.min.js”文件位于“assets\bower_components\angular”文件夹中,它将在浏览器中转换为“/bower_components/angular/angular.min.js”。

    【讨论】:

      【解决方案2】:

      可能不是您正在寻找的东西,但我不久前看过一个项目,它似乎做了类似的事情;结合前端(jquery/angular)+后端(帆)。

      http://sanestack.com/

      主要区别在于 sanestack 使用 ember 作为前端(可能不适合您)。但它的好处是生成器同时在前端 + 后端项目上创建适当的资源。

      至少,希望它能给你一些关于如何将风帆与前端项目结合起来的想法。

      【讨论】:

        【解决方案3】:

        正如this answer 中所述,您可以轻松地使用 Sails 为您的静态网站提供服务。

        不过,我还想推荐一种替代方法 - 由于您的应用程序前端与前端完全解耦,您可以利用这种解耦使用不同的策略分别扩展后端和前端。

        所以现在,假设您将应用程序部署在单个实例上,您可以使用 Nginx,它可以非常有效地提供静态资产,并将其用作 API 的 reverse proxy

        最终,当您需要扩展应用程序并希望将应用程序部署到实例集群(比如在 AWS 上)时,您可以将静态资产推送到 S3 存储桶上,并将 API 部署到 EC2 实例上。每次必须在前端进行一些视觉更改时,您都不必重新部署 API。您可以通过从单个 S3 存储桶中获取资产的 CDN(如 AWS Cloudfront)为您的整个前端提供服务。为您的 API 提供服务的实例将完全免除提供静态资产的开销。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-10-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-07
          相关资源
          最近更新 更多