1

私が基本的に探しているのは、これを行う、これを整理して学習するためのより良い方法があるかどうかです。これは私がここに貼り付けたコードです。約 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();
});
4

1 に答える 1

0

私はほぼすべてのプロジェクトでバックボーンを使用していますが、できるだけ中立的になるように努めています。アプリケーションを書き直す時間とお金があるかどうかをまず自問する必要があると思います。次に、このアプリケーションは将来的に成長すると思いますか? アプリケーションの成長が見られ、書き換えに投資する意思がある場合は、おそらく今が最適な時期です。

バックボーンは、実際のフレームワークというよりも、アプリケーションを構造化するための手段として捉えています。それは確かに独断的ではなく、バックボーンでできることはたくさんあります。バックボーンでのアプリケーションの作成に慣れるには、ある程度の時間と試行錯誤が必要になる場合があります。

また、Backbone によって、作成したコードの量が必ずしも減るとは限りません。あなたの状況では、おそらく最初はより多くのコードを書くことになるでしょう。しかし、正しく行えば、アプリ全体でモジュールを再利用できるようになり、将来のアプリケーションの保守がはるかに簡単になります。また、アプリケーションが成長する余地があるように構造を提供します。

最後に、バックボーンでアプリケーションを書き直すことは軽視すべきではありません。ただし、フレームワークの学習に投資する時間があれば、がっかりすることはないと思います。正しく行えば、上に列挙した問題 (不正なイベントとグローバル変数) の多くが軽減され、さらに、維持、成長、誇りを持ちやすいアプリケーションが提供されます。

于 2013-01-14T06:37:09.070 に答える