我有大量的方法,我想要塑造成一个库。我该如何开始这个过程?
以下是整合工作的结果:我正在尝试决定是否应该为我的整个代码库执行此操作 - 将类似的项目移动到JavaScript对象中。
以下是整个代码库的整合工作:
我应该这样塑造我的代码吗?
var menu = {
menu_timer:0,
menu_element:0,
/* called when mousing over the top menu item */
top_mouse_over: function (id)
{
menu.bottom_mouse_over();
menu.menu_element=document.getElementById(id);
menu.menu_element.style.visibility='visible';
},
/* hide the menu when the timer runs out */
hide_menu: function()
{
if(menu.menu_element)menu.menu_element.style.visibility='hidden';
},
/* keeps the menu open by clearing the timer when mousing over the menu items */
bottom_mouse_over: function()
{
if(menu.menu_timer)
{
window.clearTimeout(menu.menu_timer);}
},
/* set the timer to hide the menu, required by clearTimeout */
mouse_out: function()
{
menu.menu_timer=window.setTimeout(menu.hide_menu, 1000);
}
};
已移至codereview
答案 0 :(得分:4)
首先,重构。
没有理由使用名为16
或m6
的函数。
一些建议:
使用jQuery,Dojo,Zepto或任何其他库来进行AJAX调用和鼠标/键盘事件。没有理由重新发明轮子。您现在需要在世界上的每个浏览器上测试您的AJAX函数。 jQuery的AJAX功能已经过测试。
尝试使用prettyDate代替view_date
。
为什么要最小化函数名称?什么原因?压缩机可以为您完成此操作。说真的,你怎么能用这个:
function m2(a,b){ return document.getElementById(a).innerHTML = b; }
查看模板函数(例如_.template,jQuery.template,mustache等)。查看可能使您的工作更轻松的验证插件。
您有800行代码。您可以将其设置为200个可读代码行。
关于使它成为库:根据上下文,我通常将它设为jQuery插件或使用_.extend。虽然我选择了比菜单更相关的名称,但将其命名为var menu = {}
就足够了。
答案 1 :(得分:1)
您的新方法肯定是一种改进。你应该随意拥有自己的风格,但我会考虑采用documentation generation的传统方法。此外,如果您利用jQuery或Prototype之类的库,您将能够适应他们的风格,而不是发明自己的风格。 (我保证不会扼杀你的创造力。)
最后,您可以考虑使用不太可能在全局覆盖的名称来伪命名对象。 “window.menu”让我觉得有些危险。在命名空间时,品牌是您的核心对象。
答案 2 :(得分:1)
阅读Paul Irish(Google Chrome,jQuery)启动页面特定代码的方法。
http://paulirish.com/2009/markup-based-unobtrusive-comprehensive-dom-ready-execution/