Sails.js如何为Yeoman生成的应用程序提供服务

Guy*_*her 12 javascript single-page-application yeoman sails.js

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

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

我正在寻找一种将两者结合起来的方法.我想让Sails.js服务于Web应用程序的静态资产并加载其index.html文件(而不是homepage.ejs).我也想要开发环境(grunt,live-reload可以正常工作).

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

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

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

dee*_*nin 7

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

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

    '/': {
       view: false
    }

assets文件夹用作网站中的根文件夹.如果"angular.min.js"文件位于"assets\bower_components\angular"文件夹中,则会在浏览器中将其转换为"/bower_components/angular/angular.min.js".


mpd*_*mpd 5

可能不是你正在寻找的,但是我前面看过一个似乎做类似事情的项目; 结合前端(jquery/angular)+后端(sails).

http://sanestack.com/

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

至少,希望它会给你一些如何将风帆与前端项目相结合的想法.


lor*_*non 5

本回答所述,您可以轻松使用Sails为静态站点提供服务.

但是我还想推荐一种替代方法 - 因为你的应用程序前端与你的前端干净地分离,你可以利用这种解耦来使用不同的策略分别扩展你的后端和前端.

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

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