私が基本的に探しているのは、これを行う、これを整理して学習するためのより良い方法があるかどうかです。これは私がここに貼り付けたコードです。約 50 の同様のバインディングを持つ 1800 行の長さの JavaScript ファイルを想像してみてください。
基本的な 1 ページ アプリケーション用の Java EE を使用した REST Api があります。テンプレートにはアンダースコア、オートコンプリートには jQueryUI、Blueimp の jQuery ファイルのアップロードには jQuery を使用しています。レンダリングされた JSP は、<script id="template"></script>
for テンプレートを含めて 940 行で、合計で約 630 の DOM 要素があります。
平均的なコンピューター構成では、約 70 のイベントはブラウザーにとって非常に高価ですか? コンテナ要素にデリゲートするためにこれらすべてを書き直す必要がありますか? これ以上大きく成長することはありません。
jsp ファイルは、常に更新される動的コンテンツがあまりないため、ロードしてから ajax 呼び出しを行うのではなく、JSTL でロードする前にサーバー上のほとんどのコンテンツでレンダリングされます。重要な更新については、ページを更新します。それ以外の場合は、単に DOM を追加します。
10,000 行のコードは大きなアプリケーションと見なされるなどと言う人がいるのを目にするので、私はどこにも近づきません。私のテンプレートはすべて、<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();
});