0

私は、最新のスクリプトのネームスペースに次のモデルを使用しています。これまでのところ、いくつかの明確な利点があり、他の方法で複製できると確信していますが、コーディング プロセスに本当に役立ちます。残念ながら、私は重大な欠点に遭遇しました... 一部の JS 圧縮ユーティリティを使用すると、コードがひどく壊れてしまうため、多くの有利なオプションを避ける必要があります。幸いなことに、このモデルで保存したコードは、「損害」を軽減するのに役立ちます。

min.js は Chrome/IE でのみ一貫して失敗するため、より実行可能な解決策があるかどうかを知りたいと思っています。以下は、一部の人にとっては少し抽象的すぎることを知っています。私を正しい方向に向ける専門家はいますか?YUI、Packer、JSMin を使用しました。JSMin は確実に動作しますが、それほど効率的ではありません...

/* Global Namspace */
(function (T) {"use strict";
    /* Top.Sub1 */
    (function(S1) {


        // ... Some methods (public/private)


        /* Top.Sub1.Mini */
        (function(M) {

            // ... Some methods (public/private)

        }(S1.Mini = S1.Mini || function(o){}));
    }
    (T.Sub1 = T.Sub1 || function(o){}));

    /* Top.Sub2 */
    (function(S2) { 

        // ... Some methods (public/private)

        /* Top.Sub2.Mini1 */
        (function(M1) {

            // ... Some methods (public/private)

        }(S2.Mini1 = S2.Mini1 || function(o) {}));

        /* Top.Sub2.Mini2 */
        (function(M2) {

            // ... Some methods (public/private)

        }(S2.Mini2 = S2.Mini2 || function(o) {}));
    } (T.Sub2 = T.Sub2 || function(o) {}));

} (window.Namespace = window.Namespace || function(o){}));

更新:私が直面する最も一般的なエラーは、さまざまな種類の「予期しないトークン」です..時には「)」、時には「}」です。時々、それは '(' です。邪魔にならないようにしたいので、gzip にはまだ対処していません。

更新 2: Tidied-jsHint を渡すファイルで ns をチェック/削除しましたが、まだ正しく縮小されません。それは間違いなくこのモデルに関係しています...理由について明確な答えを持っている人はいますか? そうでない場合は、さらなる推奨事項を歓迎します。PS Github は Tidied-jsHint パッシング コードで更新されました。

4

2 に答える 2

0

私が手に入れることができたすべてのミニファイヤでほぼすべてのオプションをテストした後、コードは非常にうまくミニファイされました。(tidy の有無など...) 問題は、ミニファイヤのいずれかがシンボルを置換または難読化しようとしたときに発生します。特に、これは for ループをうまく処理しません。

for (i = 0; i < l; i++) { 
    _.points[i] = new S.Point(_, pts[i]);
}

ループを削除すると、最適化が正しく行われます。

于 2013-03-20T17:50:49.537 に答える
0

適切な縮小のために何をする必要があり、何を避ける必要があるかについては、この記事を読んでください – <a href="http://alistapart.com/article/javascript-minification-part-II" rel="nofollow ">http://alistapart.com/article/javascript-minification-part-II

次に、 AMDcommonjsなどの適切なモジュール フレームワークを選択します。

UPD。私の主なアドバイスは、http://jshint.comのようなコードでリンターを使用し、http: //google-styleguide.googlecode.com/svn/trunk/javascriptguide.xmlのようなコーディング スタイルに従うことです。特定の状況で何かが壊れる理由の説明。また、オープン ソースの貢献者にとってコードがより親しみやすくなります。

于 2013-03-20T11:37:39.787 に答える