HTML/CSS/JavaScript:
在客户端代码中,您拥有表示内容的 HTML、定义该内容的呈现方式的 CSS 以及用于确定和分配内容和呈现元素的行为的 JavaScript。
简而言之,您在这里有正确的想法。仅仅通过将 JavaScript 排除在 HTML 之外,将 HTML 排除在 JavaScript 之外,您就已经在正确规划架构方面做了很多工作。
在 JavaScript 中,您可以遵循 MVC,但在大多数情况下,只要您记住 HTML 是内容,JavaScript 是行为,CSS 是表示,那么您已经做了很多工作来使您的代码具有高度可维护性。
话虽如此,让我们专注于您的 JavaScript。
MVC:
虽然我认为您确实有正确的想法,但您的第一个示例函数的命名可能并不完全正确。当我想到“setOnclick”时,我认为您正在设置 onclick 事件,而不是触发 onclick 事件。
因此,我描绘了这个:
// reuse this same function to bind that same event to other similar buttons
toggleInstance.setOnclick(function(element) {
element.onclick = function() {
onToggle.fire();
public.switch();
}
});
如果您需要多个控件来重复该事件,您只需传入该元素并将相同的单击处理程序绑定到它即可。
您可以通过在单独的函数中定义实际的事件处理程序来更进一步
// event handler is now named, so it can be easily reused
toggleSwitch: function() {
onToggle.fire();
public.switch();
}
toggleInstance.setOnclick(function(element) {
// bind the event to the element passed in
element.onclick = toggleInstance.toggleSwitch;
});
我唯一的建议是小心不要过度架构。MVC 是一种平衡,过度架构的东西可能与粗心的架构不足的东西一样笨拙和难以使用。
考虑这些细节很好;如果您知道需要重用哪些事件并专注于这些事件,他们将以较低的技术债务形式支付红利。