如何命名我们的JS用于Rails资产管道

Erw*_*inM 11 javascript ruby-on-rails

我理解rails 3.1资产管道背后的原因:我们在一个整洁,可缓存的文件中编译所有JS以提高性能.我们想要的很棒.

但是,加载所有内容也意味着我们必须非常小心我们不要在多个页面上使用某个ID或类,如果我们附加了一些JS.否则,JS会在两个页面上触发,因为它总是被加载.

现在,我们想要实现的目标如下:
*我们希望将所有内容保存在单个JS文件中(我们知道如何单独加载文件,只是不希望这样)
*我们希望将JS命名为每个文件,controller_name.js以便它们仅在初始化适当的命名空间时加载
*我们希望通过从<body>布局标记上的数据属性读取当前控制器来初始化相应的命名空间

问题是:我们不知道如何在JS中实现.特别是,我们应该如何命名JS,然后根据HTML标记的内容动态初始化它.

任何帮助是极大的赞赏!

Jes*_*ott 16

这是一种在控制器/操作级别命名所有内容的方法

你基本上是这样声明你的身体

<body data-controller="<%= controller_name %>" data-action="<%= action_name %>">
Run Code Online (Sandbox Code Playgroud)

然后调用这些方法(每个方法都有一系列方法 - 所以如果你需要在每个页面上都有一些东西,它是共同的/ init.或者是所有用户的操作,那就是用户/ init.或者只有用户显示页面?那是用户/节目.

SITENAME.common.init();
SITENAME.users.init();
SITENAME.users.show();
Run Code Online (Sandbox Code Playgroud)

我用过这个,效果非常好.