使用Ember项目运行Yeoman和Rails的缺点/可行性和可行性?

Dun*_*ker 4 ember.js yeoman ruby-on-rails-4

我正在研究Ember-Rails应用程序.我之前使用过Yeoman来构建非ember-rails应用程序和js插件,我希望能够在我的Ember-Rails项目上实现Yeoman(特别是Grunt的livereload)的好处.但是,我不确定Ember,Rails和Yeoman是否完全兼容,以及它们的角色和职责是否重叠.例如:

依赖管理 - 我理解Bower用于依赖管理.Bower是否影响资产通过铁路资产管道加载的方式?通过Bower加载依赖关系而不是使用Rails gems有哪些优点/缺点?

Livereload - livereload是否与单页应用程序(如内置于Ember中)一样,与多页应用程序相同(例如,不使用js框架的html站点)?是重新加载单个模型/视图/控制器还是通过Rails资产管道重新加载和/或重新编译整个应用程序?

现有项目 - 将Yeoman集成到现有的Ember-Rails应用程序时是否存在陷阱?我们正在生产Ember 1.3.0-beta和Ember Data 1.0.0-beta.如果您有使用最新Ember版本的经验,Ember-auth和Ember-data是否与Yeoman兼容?

如果有人有结合Ember,Rails和Yeoman的经验,或者如果你了解前端和后端如何与这样的堆栈比较,请分享你的想法!你会建议只将Yeoman设置的一部分(例如Grunt)与Ember-Rails应用程序集成,而不是整个Yeoman吗?

谢谢.

vuc*_*lur 10

我不是Rails和Ember的家伙,但这里是我对使用Yeoman的可行性的一般想法:

不使用Yeoman:可行性

根据我在组合Yeoman和Django方面的经验,我必须说它只能在中型或大型项目中获得回报.
在较小的,特别是在紧迫的期限内,并没有太多关注代码质量和技术.使用的解决方案(如Univ.项目),你可能最好坚持使用裸Rails(手动下载JS库并相应地将它们提交给Rails项目结构).

原因很简单:使用前端框架(Yeoman)微调全栈框架(Rails)可能非常耗时.
特别是如果Rails由CoC原理驱动.
它似乎可以在一些设置后工作,但随着项目的发展,你会发现更多的障碍,你将不得不更多地篡改waaaaaaay.

我认为不值得这次投资的缺点和事情:

  • Livereload
    我非常喜欢它,起初我很惊讶它,但过了一段时间后我发现我不会花很多时间在IDE中编辑HTML和CSS并且在另一个屏幕上观看静态页面会自动刷新.在大多数情况下,我仍然需要执行Alt + tab并触发一些动作,执行一些单击,因此我是否在中间添加一个Ctrl + R命中没有任何区别.
    在某些情况下,您最好使用本地文件夹映射(Chrome Dev Tools)或Web代理(例如:Fiddler).
    有些情况下,Livereload的工作非常出色,例如,如果您只编辑CSS,则不需要执行完全重新加载.

    至于你的问题:

  • 对我来说,如果它检测到JS的变化,它会重新加载整个页面.但也许是因为我使用JetBrains IDE(文件系统缓存)和CoffeScript(编译为JS).
  • Yeoman最适合SPA.你可以接受SPA,而不是往返应用吗?

  • Bower - 尝试为github项目提供依赖管理
    bower 为你的应用做什么基本上是从github下载东西.这里没有火箭科学.
    如果下载的东西的结构是非标准的,那么Bower/RequireJS/Grunt-bower-install对于接下来该如何处理没有血腥的想法,即如何注入所有内容以便不会出现错误.对于大多数流行的图书馆来说,bower只是工作,对于高度定制的图书馆,你最终会手动注入下载的东西.
    值得责备的是那些没有正确打包有用的github项目的人.

    此外,我听说过人们bower_components因凉亭问题而承诺的工作流程,但从未亲身经历,也许这些问题得到了解决.如果是这样,那么不将第三个库提交给源代码的可能性肯定是一个优势.

    注意:正如我上面指出的那样,bower是如何帮助您开发应用程序的,但是bower已经成为前端社区的一个标准,例如http://ngmodules.org/是建立在它之上的,所以它是一个重要的工具.

    可以Rails程序集管道获取任意github项目吗?是.
    它可以为你的html注入库引用吗?Duno,我不是Rails的家伙.

  • 生成器
    有些人可以做得很漂亮,比如为你配置整个heroku相关的东西.太糟糕了generator-heroku不能按预期工作(尝试它像2个月前).travis发电机也是如此.在这种情况下修复很容易,但请看下一点.
    至于Angular生成器(我是Angular家伙,不是Ember家伙,抱歉:-)) - 它只添加了2个文件并将它们包含在内index.html,此外如果你使用的不是那么直接的语法来创建JS框架相关的东西(样本) :咖啡中与角度有关的东西)发电机很可能不会知道它.好的,你可以向生成器提交一个补丁,但是AngularJS团队决定在下一个版本中稍微改变一下语法 - 你明白了吗? - 再次,看下一点.
    更重要的是,如果您的项目使用布局,其中代码由功能/模块(例如管理模块,配置文件设置模块,......)构成,而不是按类型(指令,控制器,......)框架特定的生成器赢得'工作.

  • 稳定性
    Karma正在快速发展,Angular,Angular-UI以及前端工具和框架的负载也在迅速发展.
    虽然他们在这里做得很好,但是Yeoman很难跟上最近的变化.

雇用Yeoman:走在前沿

Yeoman提供了一些非常酷的东西,例如:

  • 掉毛

  • 即时编译coffeescript,SASS/SCSS等

  • CDNifying
    如果您希望在本地下载库以便在线下开发并且仍然受益于CDN的专业人员,则非常有用.
    如果没有Grunt,你最终会编写解析HTML的脚本

  • 自动化JS/CSS缩小
    Grunt为您做到了.您只需要正确配置它.

  • 鼓励你的前端和后端的分离和低耦合
    至于你的问题:我怀疑你将能够只用Yeoman管理Rails部分.
    Yeoman&sth中的Web应用程序的一个很好的配方是:https://stackoverflow.com/a/19425461/1432478.
    那是Django,相应地适应Rails.

我的看法

在大多数纯粹基于Spring MVC,Rails,Django等的小项目中,你根本不执行Grunt所做的任何事情(因此设置的时间花费更少).
有些情况下必须生产技术先进的前端.
例如:最近我发现我的银行账户管理系统没有缩小JSes.即便有趣的评论仍然存在.我没有进行任何匆忙的提款,但我希望他们至少有服务器端验证.:-)

Yeoman是一个非常好的解决方案组合,可以帮助所有这些家务.

只使用Grunt?恕我直销.当谈到应用程序组装时,Yeoman是Grunt.你可以免费获得Livereload和其他东西.

如果:

  1. 你很幸运,发现样本配置似乎适用于您选择的Web框架,或者设法自己配置一个
  2. 没有截止日期

那么你应该试一试.

如果您将处理多个项目,那么配置一次的繁琐工作可能会通过将配置复制粘贴到未来的项目来获得回报.但请记住,前端技术正在迅速发展,这就是为什么来自网络的大量样本根本无法开箱即用的原因.

进一步阅读:)

Java世界在这里,但我希望一些概念将是有用的: