我是网络开发的新手,所以我觉得这个问题对很多人都很简单,但对我来说很难。
在我的页面上,我有1000多行js,我可以将它分为3种类型:
1.我在哪里定义全局变量并向后端询问初始数据:
var charts_data = #{@object.charts_data};
var max_height = #{@object.max};
var min_height = #{@object.min};
var param_from = #{params[:f].nil? ? -1 : params[:f]};
var param_to = #{params[:t].nil? ? -1 : params[:t]};
2.我在哪里定义了一些支持函数(帮助器),与当前页面无关,即与数组有关:
function clone(obj) {
if (null == obj || "object" != typeof obj) return obj;
var copy = obj.constructor();
for (var attr in obj) {
if (obj.hasOwnProperty(attr)) copy[attr] = clone(obj[attr]);
}
return copy;
}
3.与当前页面相关的功能,使用基于页面元素的选择器,即:
$('#range-from, #range-to').keypress(function (e) {
//if the letter is not digit then display error and don't type anything
if (e.which != 8 && e.which != 0 && (e.which < 48 || e.which > 57)) {
return false;
}
});
你能帮助我从js中清除我的视图并正确拆分并放入其他文件吗?
答案 0 :(得分:1)
我自己不是RoR职业选手,但可能会开始这样......
这一切看起来都与视图有关,所以在我看来它属于给定帮助模块的轨道。
您的第一个块似乎与页面无关,因此可能会在ApplicationHelper中找到空间。 您的第二个块(与特定页面相关)将完全适合其页面助手。 第三个我将存储在与页面相关的js-File中(在'assets'下找到 - &gt;'javascripts')。
..也许有更好的解决方案,但是像这样你应该很好地解决。
答案 1 :(得分:1)
我建议你使用angularJS(JS框架)来组织你的JS。我在我的RoR项目中使用它。
答案 2 :(得分:1)
在Rails中管理javascript是一个偏好问题。假设一个项目仅依赖jQuery
,那么我会在三个级别之间对代码进行排序。
在Rails中,每个Javascript代码都转到app/assets/javascripts
(至少从版本3.2开始)。树可能看起来像:
.
| application.js
| common.js
| users
| \ new.js
| \ index.js
| ...
application.js
仅定义应用依赖库的要求,例如jQuery
。 common.js
包含应用的常用代码,users/new.js
包含仅针对该特定视图的代码。要使用这种代码存储方法,需要告诉Rails必须为特定视图加载特定文件。它可以通过以下方式完成:
# application layout:
<body>
...
...
<%= yield :additional_javasript %>
</body>
# users/new.html.erb:
<% content_for :additional_javasript do %>
...
<% end %>