繁体   English   中英

AngularJS + sails.js

[英]AngularJS + sails.js

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

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

然后我将所有AngularJS文件传输到Sails文件夹。

但问题是AngularJS创建了这样的文件夹层次结构,如https://github.com/rishy/angular-jade-stylus-seed ,在运行“grunt server”时,会创建一个包含最终生产版本的“dist”文件夹。

另一方面,sails app的“sails new app”文件夹层次结构就像。

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

所以,我的问题是:

  1. 现在,如何将我的Angular文件传输到此sails目录以及如何构建它?
  2. 由于sails使用“sails lift”启动服务器而角度使用“grunt服务器”,我应该使用哪一个为我的sailsJs + AngularJs app启动服务器,以及在AngularJS之后创建的“dist”文件夹呢?
  3. 我必须在Gruntfile.js中做出哪些更改,因为它现在应该包含Angular和Sails的代码?
  4. 我应该在哪里保留不同的视图和样式文件,以及如何访问Angular或Sails中的表单?

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

由于Sails是纯粹的后端框架,而Angular纯粹是前端,因此它们可以很好地协同工作。 当你将Angular生成器放入其中时会有点混乱,但如果你从Angular Seed应用程序和Sails v0.10开始,这里是基本步骤:

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

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

把它放在Github上作为参考。

使用这种方法,您不需要对Gruntfile做任何事情,并且您永远不会调用grunt server - 这只是用于测试Angular应用程序的测试服务器,而您正在用Sails替换它们。 您仍然可以获得Sails grunt-sync任务的好处,该任务可以在更改前端资产时监视和同步它们。

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

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

它还演示了如何在Sails中使用socket.io来为客户端提供实时更新而不进行ajax轮询。

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

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

我的解决方案还演示了用户之间数据中的套接字通信+实时更新。

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

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

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

    '/':{view:'homepage'}

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

  4. 将缩小的angularjs网站复制并粘贴到assets文件夹。

  5. 启动sails.js(帆升降机),您可以在localhost:1337浏览您的角度网站

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM