tel*_*ent 14 javascript ruby-on-rails asset-pipeline
我理解,出于性能原因,最好让资产管道连接并缩小我的所有javascript,并将每个页面请求发送到整个批次.这很公平
但是,我的一堆javascript就像是将特定行为绑定到特定的页面元素之类的东西
$('button').click(function(e) { $('input.sel').val(this.name); }
Run Code Online (Sandbox Code Playgroud)
如果我知道这个代码只在那个页面上执行,我会感觉更舒服 - 而不是在其他页面上可能巧合地使用相同ID或匹配相同选择器的元素人们如何处理这个?
我宁愿不把所有这些东西都放在元素内联中,只是因为当它长度超过两行时,保持javascript正确缩进到.html.erb文件中是比它需要更多的工作
Ine*_*neu 17
这是我做的(基于一些stackoverflow答案):
application_helper.rb
def body_page_name
[controller_name.classify.pluralize, action_name.classify].join
end
Run Code Online (Sandbox Code Playgroud)
application.html.haml
%body{data: {page: body_page_name}}
Run Code Online (Sandbox Code Playgroud)
的application.js
$(function() {
var page = $("body").data("page");
if("object" === typeof window[page])
window[page].init();
});
Run Code Online (Sandbox Code Playgroud)
在适当的js文件中有一个名为ControllerAction的对象:
tickets.js
var TicketsShow = new function() {
var self = this;
self.init = function() {
// code which may call other functions in self
};
};
Run Code Online (Sandbox Code Playgroud)
可能有更好的方法,但这对我有用