AngularJS + sails.js

我正在开发一个应用程序,可以利用sails.js为后端和AngularJS为前端。 我以为我会创build一个Angular应用程序使用Yeomanangular生成器https://github.com/yeoman/generator-angular ,一旦我完成了前端逻辑,我会创build一个sails应用程序使用,

  1. npm install -g sails
  2. 航行新的应用程序

然后我将所有的AngularJS文件转移到Sails文件夹。

但事情是,AngularJS创build一个文件夹层次结构像这样https://github.com/rishy/angular-jade-stylus-seed和运行“grunt服务器”创build一个“dist”文件夹包含最终生产版本。

另一方面,在sails应用程序的“sails new app”文件夹层次结构之后。

  • API
    • 适配器/
    • 控制器/
    • 楷模/
    • 政策/
    • 服务/
  • 资产
    • 图片/
    • JS /
    • 风格/
    • favicon.ico的
    • 的robots.txt
  • configuration/
  • node_modules /
  • 意见
    • 家/
    • 403.ejs
    • 404.ejs
    • 500.ejs
    • layout.ejs
  • Gruntfile.js
  • app.js
  • 的package.json

所以,我的问题是:

  1. 现在,我该如何将我的Angular文件转移到这个sails目录,我应该如何构build它?
  2. 因为sails使用“sails lift”启动一个服务器,而angular使用“grunt server”,我应该使用哪一个为sailsJs + AngularJs应用启动服务器,以及在AngularJS之后创build的“dist”文件夹呢?
  3. Gruntfile.js需要做什么修改,因为它现在应该包含来自Angular和Sails的代码?
  4. 我应该在哪里保存不同的视图和样式文件,我应该如何访问Angular或Sails的表单?

我觉得很多人都面临着类似的问题,因为AngularJS和SailsJs目前都风靡一时。 应该有一个强大的样板来创build一个AngularJS + SailsJS应用程序,现在可惜了。

由于Sails是纯粹的后端框架,而Angular纯粹是前端,所以它们可以很好地协作。 如果您将Angular Seed应用程序和Sails v0.10版本启动,则可以使用以下基本步骤:

  1. 使用sails new myApp创build一个新的Sails应用程序
  2. 清除myApp/assets文件夹的内容
  3. 将Angular Seed app文件夹的内容复制到myApp/assets
  4. myapp/views/layout.ejs的内容replace为Angular Seed app/index.html文件的内容
  5. layout.ejs文件中layout.ejs所有非脚本标记内容(在<body>标记之后和第一个<script>标记之前的所有内容,并用它来replacemyApp/views/homepage.ejs
  6. layout.ejs<body>标签之后放置<%-body%>

然后,您可以启动sails lift服务器,您将看到在http://localhost:1337的Angular应用程序。

我已经把它放在Github上供参考。

使用这种方法,您不需要对Gruntfile进行任何操作,也不会调用grunt server – 这仅仅是用于testing您的testing服务器的Angular应用程序,您将使用Sailsreplace它。 您仍然可以从Sails grunt-sync任务中获得好处,它可以在您的前端资产发生变化时监视和同步。

如果您真的想要使用Yeoman Angular生成器,可以尝试直接在Sails应用程序的assets文件夹中生成应用程序,然后使用该文件夹中的生成器命令。 我之前没有使用它,所以我不知道dist文件夹是什么,但它似乎像安装的所有节点模块都支持testingWeb服务器(这也是你不需要的,因为你有帆)和testing套件(这总是很好)。 我能看到的唯一问题是如果你需要Yeoman生成的Gruntfile中的一些任务。 Sails处理较less的编译和CSS缩小(在生产模式下),但对Jade或Stylus没有任何作用,所以如果你真的需要的话,你必须把这些任务添加到Sails Gruntfile中。

你的问题正是我为什么创buildSailng的原因: https : //github.com/ryancp/sailng这是一个使用最新的Sails 0.10.0-rc5的示例/样板应用程序。

它还演示了如何在Sails中使用socket.io为客户端提供实时更新,而不需要Ajax轮询。

克隆它并按照说明更好地了解如何使用Sails和Angular。

我还为Sails.js + Angular做了样板“样板/示例”应用程序。 在我的解决scheme中,这些分离到后端和前端(两个服务器)。

我的解决scheme还展示了套接字通信+用户间数据的实时更新。

随意尝试一下。 https://github.com/tarlepp/angular-sailsjs-boilerplate

我有类似的用例。 我用Yeoman来生成angularjs的项目结构。 在这种情况下,我的解决scheme是:

  1. 使用“grunt serve”将angularjs单页面应用程序生成为缩小版本,所有内容都应该放在“dist”文件夹下。
  2. 在sails.js项目的routes.js中,删除视图的configuration代码:

    '/':{view:'homepage'}

  3. 删除sails.js视图和资产文件夹下的所有文件。 但是在删除所有内容之前,请确保您不需要资产文件夹中的任何文件。

  4. 复制并粘贴缩小的angularjs网站资产文件夹。

  5. 开始sails.js(帆升降机),你可以在localhost:1337浏览你的angular度网站

现在Sails.js也简要地提到了这个方法http://sailsjs.org/documentation/concepts/views

您必须configuration默认任务以将angular度dist文件夹复制到.tmp中

请参阅此Sails Angular项目中的任务configuration