1

我基本上在寻找的是是否有更好的方法来组织和学习。这是我在这里粘贴的代码。想象一个 1800 行长的 javascript 文件,其中包含大约 50 个类似的绑定。

我有一个用于基本单页应用程序的 Java EE 支持的 REST Api。我正在使用 jQuery,下划线用于模板,jQueryUI 用于自动完成和 Blueimp 的 jQuery 文件上传。呈现的 JSP 有 940 行,其中包括<script id="template"></script>for 模板,总共大约 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();
});
4

1 回答 1

0

我几乎在所有项目中都使用骨干网,但我会尽量保持中立。我认为您首先要问自己是否有时间和金钱来重写应用程序?其次,您认为该应用程序在未来会增长吗?如果您确实看到应用程序在增长并且愿意投资于重写,那么现在可能是这样做的最佳时机。

我将骨干视为构建应用程序的一种方式,而不是实际的框架。它肯定不是固执己见,而且有很多方法可以让你在骨干中做事。习惯在主干中编写应用程序可能需要一些时间和反复试验。

Backbone 也不一定会减少您编写的代码量。在您的情况下,您可能会发现您最终会编写更多代码。但是如果做得好,您将能够在整个应用程序中重用模块,并且您的应用程序将来会变得更容易维护。它还将提供结构,因此您的应用程序将有增长空间。

所以最后,在骨干网中重写你的应用程序不应该掉以轻心。但是,如果您确实有时间花时间学习该框架,我认为您不会失望。如果做得好,您将缓解上面列出的大部分问题(流氓事件和全局变量),而且您将看到一个更易于维护、发展和引以为豪的应用程序。

于 2013-01-14T06:37:09.070 回答