6

私は、mvc スタイル プロジェクトで多くのカスタム JavaScript、特に jquery を実行しているプロジェクトに取り組んでいます。

唯一の問題は、グローバル関数/変数をますます追加し続け、それらが積み重なっていることです。いくつかのファイルがありますが、いくつかのものを別々のファイルに分割する方法がわかりません。

これらの関数とグローバル変数のいくつかをオブジェクトに構成することを考えましたが、javascript のオブジェクト構文は (従来のクラスが存在しないため) 少し扱いに​​くいように思えます。従うべき良い例があれば、私はうまくいくかもしれませんが。

グローバルな javascript 関数と変数がこのように山積みになっているプロジェクトをどのように処理しますか?

4

4 に答える 4

11

一連のグローバル変数と関数を 1 つのグローバル オブジェクトにまとめる非常に簡単な方法:

// Awful pile of globally-scoped names
var foo = 1
var bar = 2
function go = function(){
    console.log('Yeehaw!');
}


// Instead, just dump everything into a global-level object
var MyApp = {
    foo: 1,
    bar: 2,
    go: function(){
        console.log('Yeehaw!');
    }
}  

// Now access stuff like this
console.log(MyApp.foo);
console.log(MyApp.bar);
MyApp.go();

「単純な」トップレベルの変数と関数については、これをお勧めします。これには多くの改善点がありますが、おそらく時期尚早の最適化のカテゴリに分類されます。これは素晴らしい第一歩です。

于 2009-06-09T22:31:03.390 に答える
2

YUI シアターの Crockford Videos は、特に JavaScript 名前空間を設定する方法の良い例です。

于 2009-06-09T22:39:29.033 に答える
1

jQuery を使用している場合、コードを整理する最初の方法は、jquery プラグインを作成することです。

http://docs.jquery.com/Plugins/Authoring

http://www.learningjquery.com/2007/10/a-plugin-development-pattern

あなたがmvcについて言及したように、そこにはさまざまなjavascript実装がありますが、それらが非常に人気があるかどうかはわかりません:jamal、javascript mvc、

http://jamal-mvc.com

http://javascriptmvc.com

于 2009-06-10T00:25:42.533 に答える
1

jquery.ui と同様に、カテゴリまたはアクション/コントロールごとに分割できます。

元:

Effects.blind.js
Effects.bounce.js
ui.accordion.js

扱うコントロールに分割できますか?

または彼らが何をするかによって?

いくつかの提案...

于 2009-06-09T22:34:18.030 に答える