rails3.1怎么组织assets比较好 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
stranbird
V2EX    Ruby

rails3.1怎么组织assets比较好

  •  
  •   stranbird 2011 年 9 月 12 日 7231 次点击
    这是一个创建于 5255 天前的主题,其中的信息可能已经有所发展或是发生改变。
    比如js代码该怎么放?因为现在是统一会编译之后扔在每个页面的头头,用jquery的时候常常会在不是它该作用的页面选到不该有的元素,然后一团糟。

    但是如果是每个页面写一些原生的js代码,这样一来就不能写coffeescript,二来感觉代码又非常分散(之前遇到了类似的情况,找一个bug要从十几个文件里边找T T)。既然有pipeline,这样肯定不是最佳实践,我还是很笃行rails的哲学的它让我怎么干,怎么干就比较好。

    求解。
    11 条回复    1970-01-01 08:00:00 +08:00
    chloerei
        1
    chloerei  
       2011 年 9 月 12 日
    首先application.js去掉 require_tree . 然后具体指定需要全局使用的js。现在的 applicaton.js 里面的默认规则就像以前的默认路由一样,让你了解 assets pipeline是做什么的,迟早会注释掉。

    然后特定的 controller 需要特定的 js,再建对应的 js 文件,然后引入页面。
    stranbird
        2
    stranbird  
    OP
       2011 年 9 月 12 日
    @chloerei 就是说我还得用content_for来指定assets?
    话说这样其实application除了require一些vendor的assets之外,就不需要require啥了,这个pipeline完全没意义嘛。
    chloerei
        3
    chloerei  
       2011 年 9 月 12 日
    @stranbird 我觉得还是要 content_for

    缺省一点可以在 layout 里面写

    Javascript_include_tags "applications", controller_name

    但是我觉得这样不好,实际中也还没需要一个 controller 一个 js,所以 Rails 默认模板也没这么搞。

    pipeline 是个很好的工具,引入 js 库变得很干净了(比如 client_side_validations),打包 js 也变得方便。但这东西不是天顶星科技,Release Notes 里面其实也就占很小篇幅。
    stranbird
        4
    stranbird  
    OP
       2011 年 9 月 12 日
    @chloerei 你在说什么..
    chloerei
        5
    chloerei  
       2011 年 9 月 12 日
    @stranbird 问哪一行?
    stranbird
        6
    stranbird  
    OP
       2011 年 9 月 12 日
    @chloerei 那你现在是怎么做的呢? 用content_for还是给那些dom取个好点的不会冲突的名字?
    现在约莫有点理解我师傅说的所谓jquery会污染全局变量是什么意思了。
    stranbird
        7
    stranbird  
    OP
       2011 年 9 月 12 日
    @chloerei pipeline对库的管理应该说是好的,但是自己写的js代码真心不知道怎么处理。
    chloerei
        8
    chloerei  
       2011 年 9 月 12 日
    @stranbird 其实跟原来的没啥变化吧。

    你遇到的问题好像是某个页面特定的 js 跟全局的 applications.js 一起打包导致了别的页面受到干扰?解决方案是不要把特定页面的 js 打包到 applications.js。

    我用 content_for,js 逻辑只出现在需要他的地方。

    jQuery 有个不冲突模式,也就是不改写 $ 全局变量。
    stranbird
        9
    stranbird  
    OP
       2011 年 9 月 12 日
    @chloerei 对对。
    但是不打包的话,仿佛就只能写原生的js,不能写coffeescript了
    chloerei
        10
    chloerei  
       2011 年 9 月 12 日
    @stranbird 不是,比如 assets/Javascript 下面有这几个文件

    applications.js
    topics.js.coffee
    settings.js.coffee

    当你用 Javascript_include_tag 'topics' 的时候,topics.js.coffee 就会被编译输出为 js。

    打包需要声明宏,跟编译是两个过程。
    stranbird
        11
    stranbird  
    OP
       2011 年 9 月 12 日
    @chloerei 原来这样子,非常感谢!
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1901 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 50ms UTC 16:01 PVG 00:01 LAX 08:01 JFK 11:01
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86