Rails Rails 中使用 Gem 来导入 Javascript lib 是否有必要?

ytwman · 2013年09月30日 · 最后由 ytwman 回复于 2013年10月01日 · 4275 次阅读

rails 中引用了 jquery 和 turbolinks 的 gem,通常使用 gem 来代替 assets 的手工导入 js,gem 中的 query 做过一些针对于 rails 的修改。昨天看了 @Rei 的 Writings 中关于 assets 的部分,大量的外部 lib 都采用 gem 的方式导入。 但我总觉得在 js lib 方面 gem 显得有些鸡肋,原因如下: 1.gem 的跟新速度过慢,很多 js lib 跟新之后但 gem 还是老版本,对于尝试新版本或者需要建立在某一特定版本的工程的需要自己去维护 js lib 的 assets 或者自己打包 gem 2.gem 中导入了一些 js lib 的环境参数,定制或配置上比较麻烦,例如 ckeditor

针对 js lib 方面我觉得还是手工去配置 assets 比较好,至于 gem 可以做一些特定版本的适配比较合适,就像 jquery 那样,很多情况下使用 gem 的方式导入效果往往不如 assets 直接配置的方式要靠谱。

上面只是我的个人观点,求大家喷点干货。

我手工,包括 bootstrap, backbone 之类。

有些库比如 bootstrap 既有 js 又有 css 还有 image,手动加进来的话,还要按 rails 的约定重新整理一遍。 不过我现在喜欢用 yeoman 来做这些前端的事情,rails 只管数据接口

之前也在考虑这个问题,一般我的思路是这样的:找到合适的 jquery 插件,搜索该插件是否有对应的 gem,如果有对应的 gem,就看看 gem 的活跃程度,要是太久没有维护或者是说 js 库版本太低,就不会考虑用 gem 的形式。但是像 bootstrap 这类比较活跃的框架,对应的 gem 也是比较活跃的,就会直接用 gem 了,毕竟在代码管理上有方便之处。

gem 包一个是方便,一个是版本管理 使用者如果对前端很熟,当然可自己添加各种东西 但很多不熟的,可能连 jquery 包都没有下过 更不用说自己添加自己想要的东西了 gem 的意义在这里

使用前端管理工具--bower 吧

#3 楼 @Martin91 现在的 web 项目,很多情况下要使用到大量的 js lib,但 gem 方面更新速度非常慢。很少有同步更新的 gem,即使有也有很多是左右特殊定制了,不去翻阅 gem 源码很难说清楚为什么。这样就造成是使用上的各种麻烦。

#2 楼 @qhwa 方便分享下么,我也是刚入手这边方面,很多地方也不太了解。

#6 楼 @ytwman 我前幾天在做一個項目的時候就遇到一個特別鬱悶的問題,當時用的是 bootstrap 2.3 的一個 gem,但是死活樣式都不對,後來發現直接使用 bootstrap 源碼就沒問題了。自己手工加的話唯一的麻煩就是要手工加 require 而已吧。

有时候这种 gem 会添加一些 rails controller before_filter,让使用更方便。这就不错。比如说 jquery-modal-rails 会主动套空白的 layout。

首先看看有木有 gem,然后看下版本,然后再看下是否出名。。over..

bootstrap 和 awesome 用了官网的 cdn 地址引用,取代原来的 gem 方式。 不过这种方式怎么定制 bootstrap 一些参数不清除,也不清楚其它有些啥问题

纯 js 的 Gem,用 Gem 来做版本控制其实是一种不便。使用 bower.js 应该是一个方向。自己写的都是用 coffeescript,直接放在 assets 里的,这块的技巧其实是需要向组件化方向发展。目前我倾向于 Rivets.js 来组织结构。

#12 楼 @xds2000 我也是这么觉得,gem 的方式有所限制,或者很大程度上都是没意义的。只有在 #9 楼 @lulalala 说到的情况下会有些用途。对于新手可能算是个坑吧,虽然很方便,但是却有很多的局限性。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号