Rails升级到角度2

时间:2015-12-30 02:54:24

标签: javascript ruby-on-rails node.js angular

我想升级现有的Rails和Angular 1.x应用程序。我正在关注ng-upgrade documentation并发现有许多依赖项,包括systemjstypescripttsd和其他一些javascript库。理想情况下会有一个angular-2 gem会有所有的依赖关系,但我无法找到它。接下来我为每个依赖项寻找gem,但没有一个用于tsd。

切换到自定义构建策略是否有意义,以便我可以使用npm进行javascript包管理?我阅读了推荐gulp的this文章,但我确实喜欢资产管道的便利性。

有人能指出我成功使用ng-upgrade和rails项目的例子吗?它是否使用像gulp这样的自定义构建解决方案,还是使用资产管道?

4 个答案:

答案 0 :(得分:10)

我的主要建议是尚未升级到Angular2,仍处于开发阶段,你将面临很多这样的问题,比如找不到用于rails的gem。

无论如何,目前,angular2 无法使用sprockets (默认的rails管道)进行编译,因此您确实想要自定义解决方案。

我的主要建议是使用webpack,其他选项是browserify或gulp(和其他),这主要是品味问题。总的来说,为angular2 配置管道很复杂,您必须通过.d.ts处理typings个文件(这是tsd的更新版本,现在是如果你想使用async / await(这真的很酷),你必须通过tsc和可能通过babel来翻译你的打字稿。您将无法使用自定义管道在image_path之类的轨道中引用您的文件,因此您也希望将其考虑在内。

Typescript比简单的coffeescript文件编译要复杂得多,你依赖于它引用的每个其他文件,因为它需要对它进行编译检查,不要指望直截了当。

话虽如此,如果你真的想使用Rails和Angular(2或不是),处理它的正确方法是两个单独的项目,一个只有Rails应用程序和一个与AngularJS路径。通过这种方式你可以分开关注,你可以为Angular2设置一个自定义管道,而不会影响Rails,你将被迫使用Rails作为JSON API正确编码你的Angular2应用程序。

答案 1 :(得分:0)

我的解决方案是在不使用webpack或资产管道的情况下尽可能简化它。我将ts文件放在public并配置了rails,以通过管道为npm资产提供服务。

我以此结构为例建立了一个初学者项目:https://github.com/jonnysamps/rails-ng2-starter

在许多方面,它具有单独的后端/前端项目的好处,但将所有代码保持在一起。

答案 2 :(得分:-1)

使用angularjs gem

gem 'angularjs-rails', '~> 1.4', '>= 1.4.8'

插入application.js

  //= require angular

答案 3 :(得分:-1)

您可以使用http://bower.io/#install-bower,然后可以向rails .bowerrcbower.json添加两个文件,例如GemFile

相关问题