Gem 有人用过 paloma 这个 gem 吗?貌似能够解决 rails 项目中 js 按页面执行和向 js 传递变量这两大痛点,很有点心动啊!

xhj6 · December 24, 2013 · Last by xhj6 replied at December 25, 2013 · 2521 hits

地址在这儿

刚才发现的,很想动手试试,但近期没有时间,

各位瞅瞅,你们认为它科学吗?好用吗?比起 gon + jbuilder 如何?

向页面传递变量很稀有,直接 to_json 放 script tag 就好了

script
  | xxx = #{{ data.to_json }}

唯一要注意的是 json 里可能包含 '</script>' 标签,所以设置里加上

ActiveSupport.escape_html_entities_in_json = true

就安全了。

传递代码的情况就更稀有了... 就为了一两个 case 加个 gem 感觉不值得...

#1 楼 @luikore 传递变量这个需求是比较稀有,但在数据可视化中应该比较常见。

比如说 lazy_high_charts 就是使用您所说的直接在页面中写脚本的形式。但是,一个图表有几十个选项,其中大多数选项可能都是固定的,另外七八个选项才是真正的变量,在每个一个页面中都去插入完整的选项列表和显示所需的完整的 js 代码,其实是相当丑的,重复代码量非常大,这时很自然的就会想把图表显示 js 文件(不是图表库文件)集成进 application.js,然后在页面中获取变量。

另一个需求,我可能没有把“js 按页面执行”这一点说清楚,它其实是解决 这个帖子这个帖子 中所描述的问题,这个问题相信困惑过绝大多数 rails 开发者吧?

#2 楼 @xhj6 不管几个变量,放在一个 hash 中 to_json, 页面上最多就一个 script 标签一个变量... 页面传非默认的设置就好了,重复的逻辑和默认值写在分离的 coffee/js 文件中啊,还有 $.extend 这种便利的工具。提不出来逻辑的时候想想 function as value 就能提出来了。

按页面载入 js 也有两种,大部分情况下 js 是静态的编译时就定好了的,加个 js 按需加载的工具就可以了,根本就没 rails 什么事。小部分情况是通过用户输入生成 js, 我整过一个解析用户创建的 excel 公式然后编译成 js 函数做计算的,也只需要一个 script 标签一个变量...

99.9% 情况下动态的都是数据,逻辑都是固定的,分清楚了代码就不会丑。

#3 楼 @luikore 好吧,你说服我了,这个 gem 的确没什么用

我现在的按需加载 coffeescript 文件的方式是在 body 标签中加个 ID,然后找到这个 ID 后则执行,一直深以为丑,但与引入一个 gem 相比,的确是简单多了……我还以为这个 gem 的解决方案更优雅呢。

You need to Sign in before reply, if you don't have an account, please Sign up first.