2009-06-09 9 views
6

私はmvcスタイルのプロジェクトでたくさんのカスタムjavascript、特にjqueryをやっているプロジェクトに取り組んでいます。javascript/jquery関数の数を増やすにはどうすればよいでしょうか?

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

私はこれらの関数とグローバル変数のいくつかをオブジェクトに合成することを考えましたが、javascriptのオブジェクト構文は(古典的なクラスがないために)やや厄介なようです。もし私がたぶん良い例があれば、私は来るかもしれない。

グローバルなjavascript関数と変数がこのように積み重なっていくプロジェクトをどうやって処理しますか?単一のグローバルオブジェクトにグローバル変数と関数の束を積み重ねるために

+0

私はJavaScriptのオブジェクトシンタックスを合理的にハックと呼ぶことはできません。何かあれば、それは言語の中で最もエレガントな部分です。あなたが靴下の授業に苦労していることを意味するならば、私はあなたにもっと賛成できませんでした。これはオブジェクト指向言語であり、クラスベースの言語ではありません。 – Nosredna

答えて

11

非常に単純な方法:「シンプル」トップレベルの変数と関数については

// 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(); 

、私はこれをお勧めすることができます。これにはたくさんの改善がありますが、時期尚早の最適化のカテゴリに該当するでしょう。これは素晴らしい第一歩です。

effects.blind.js
effects.bounce.js

+0

非常にきれいな溶液です。私のjavascriptでそのアプローチを使用します。 +1 – ichiban

+0

これも私がやっていることです。 –

+0

はい。そして、MyAppメソッドは、 "this"を介してMyAppの他のすべてにアクセスします。MyApp以外のものは、これの代わりにMyAppプレフィックスを使用します。イベントやタイマーによってトリガーされたものにも適用されます。 – Nosredna

1

あなたは

EXカテゴリ別やアクション/コントロールによって... jquery.uiが何をするかと同様に、それらを破ることができui.accordion.js

対処できるコントロールに分割することはできますか?

または何によって行われますか?

ただ、いくつかの提案は... YUIの劇場で

+0

提案していただきありがとうございます。 –

2

クロックフォードのビデオは、とりわけJavaScriptの名前空間を設定する方法の良い例です。

+0

良いビデオ、ありがとう! –

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://javascriptmvc.com

関連する問題