我基本上在尋找的是如果有更好的方式做到這一點,組織這和學習。這是我粘貼在這裏的代碼。想象一下,具有約50個類似綁定的1800行長的JavaScript文件。一個很好的方式來組織一個小型的JavaScript應用程序
我有一個基於Java EE的REST Api,用於基本的單頁應用程序。我使用jQuery,模板下劃線,jQueryUI自動完成和Blueimp的jQuery文件上傳。 呈現的JSP是940行,其中包括用於模板的<script id="template"></script>
,總共包含約630個DOM元素。
在普通計算機配置中,瀏覽器大約有70個事件是否非常昂貴?我應該重寫所有這些委託給一個容器元素嗎?除此之外,它不會有太大的增長。
在使用JSTL加載之前,jsp文件會與服務器上的大部分內容一起呈現,而不是加載,然後再執行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();
});
我不知道重構此代碼是否真的有必要,但是您可以避免使用全局名稱空間,並避免通過創建一些「類」來重複代碼 – aurbano