组织小型JavaScript应用程序的好方法

时间:2013-01-13 08:52:11

标签: javascript

我基本上寻找的是,如果有更好的方法,组织这和学习。这是我在这里粘贴的代码。想象一下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();
});

1 个答案:

答案 0 :(得分:0)

我几乎在所有项目中使用骨干,但我会尝试尽可能保持中立。我想你首先要问问自己,你是否有时间和金钱来重写申请?其次,你认为这个应用程序将来会增长吗?如果您确实看到应用程序在不断增长并愿意投资重写,那么现在可能是最佳时机。

我将骨干看作是构建应用程序的一种方式,而不是实际的框架。这当然不是自以为是,你可以通过很多方式在骨干中做事。习惯于在骨干网中编写应用程序可能需要一些时间和反复试验。

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

因此,在结束时,不应轻易重写您在骨干网中的应用程序。但是,如果你有时间投资学习框架,我认为你不会失望。如果做得好,您将减轻上面列出的许多问题(流氓事件和全球变量),此外,您将看到一个更易于维护,发展和引以为豪的应用程序。