我基本上寻找的是,如果有更好的方法,组织这和学习。这是我在这里粘贴的代码。想象一下1800行长的javascript文件,大约有50个相似的绑定。
我有一个基于Java EE的REST Api用于基本的单页应用程序。我正在使用jQuery,下划线用于模板,jQueryUI用于自动完成和Blueimp的jQuery文件上传。
渲染的JSP是940行,其中包含模板的<script id="template"></script>
,总共有大约630个DOM元素。
普通计算机配置中的浏览器大约有70个事件非常昂贵吗?我是否应该重写所有这些以委托给容器元素?它不会超出这个范围。
jsp文件在使用JSTL加载之前使用服务器上的大部分内容进行呈现,而不是加载然后执行ajax调用,因为没有太多动态内容不断更新。对于任何重要更新,我刷新页面,其他方面只是DOM附加。
我看到人们说像10k行代码这样的东西被认为是一个很大的应用程序,所以我不在那里。
我的所有模板都在代码中的<script id="tpl_xxx"></script>
标记内,预计它们会被插入。我的假设是更容易看到模板,它们将被插入,以便将来要对这些进行更改,不必去寻找它们。
我应该将它们放在外部.html文件中,然后在运行时加载吗?
随着所有这些MVC框架如骨干等的出现,是否值得重新编写这些代码以便其中一个?会有显着的好处吗?
当前代码在全局范围内(缓存dom元素,常量,其他缓存)中有一大堆变量非常混乱,它基本上会破坏JSLint,并且它放弃了大约6%的文件扫描。我意识到这很糟糕,但我想知道它是否值得努力代码不是很大。 它经过了IE7 +(客户端要求)的全面测试,并且工作正常,因此这纯粹是一个开发人员/可维护性/效率/编码实践问题。我希望我可以在这里粘贴代码,但我不能,所以即使是我应该瞄准的模糊建议也会有很好的帮助。
代码基本上是以下x50,在用户消息,模板名称,缓存dom元素等全局范围内有大量常量。
$('#contact-form').submit(function(e) {
e.preventDefault();
var $frm = $(this);
var $submitBtn = $frm.find('a.submit-btn');
var $errorBox = $frm.find('div.error');
var frmSerialized = $frm.serializeObject();
var validStatus = validateContact(frmSerialized);
$frm.find('input, select, textarea').bind("keydown change", function() {
$errorBox.hide();
});
if (validStatus == true) {
busyCursor('show', $submitBtn);
var jsonReq = JSON.stringify(frmSerialized);
$.post($frm.attr('action'), jsonReq, function(data) {
busyCursor('hide', $submitBtn);
if (data.status == ResponseStatus.SUCCESS) {
$('#contact-form-div').addClass('no-display');
$('#contact-confirm').removeClass('no-display');
} else {
if (data.status == ResponseStatus.ERROR) {
showError($errorBox, data.message);
} else {
showError($errorBox, UserMessages.serverException);
}
}
});
} else {
showError($errorBox, validStatus);
}
});
$('#submit-contact').click(function(e) {
e.preventDefault();
$('#contact-form').submit();
});
答案 0 :(得分:0)
我几乎在所有项目中使用骨干,但我会尝试尽可能保持中立。我想你首先要问问自己,你是否有时间和金钱来重写申请?其次,你认为这个应用程序将来会增长吗?如果您确实看到应用程序在不断增长并愿意投资重写,那么现在可能是最佳时机。
我将骨干看作是构建应用程序的一种方式,而不是实际的框架。这当然不是自以为是,你可以通过很多方式在骨干中做事。习惯于在骨干网中编写应用程序可能需要一些时间和反复试验。
Backbone也不一定会减少您编写的代码量。在您的情况下,您可能会发现最终会编写更多代码。但如果做得好,您将能够在整个应用程序中重用模块,并且您的应用程序将来将变得更容易维护。它还将提供结构,以便您的应用程序有增长空间。
因此,在结束时,不应轻易重写您在骨干网中的应用程序。但是,如果你有时间投资学习框架,我认为你不会失望。如果做得好,您将减轻上面列出的许多问题(流氓事件和全球变量),此外,您将看到一个更易于维护,发展和引以为豪的应用程序。