私はheckuva時間をDojoと新しいAMD構造に移行しています。私は本当に誰かが全体のコンセプトについていくつかの光を当てることを望んでいます。ここ数週間、私はGoogleで生活をしていますが、使用法ではなく、これを使用する際の構造とデザインパターンの傾向に関する情報を見つけようとしています。Dojoが必要です()とAMD(1.7)
Dijitsを作成してスタイルを設定する必要があるメインページやDOM要素の作成など、比較的複雑なjavascriptアプリケーションの場合、私はTONを必要とするので、 AMDシステムの前にdojo名前空間で利用可能な別のモジュール(または、少なくとも23の異なるvarsに割り当てられていない)。
例:
require(['dijit/form/ValidationTextBox', 'dijit/form/SimpleTextarea', 'dijit/form/CheckBox', 'dijit/Dialog', 'dijit/form/Form'])
require(['dojo/ready', 'dojo/parser', 'dojo/dom-style', 'dijit/registry', 'dojo/dom', 'dojo/_base/connect', 'dojo/dom-construct'],
function(ready, parser, style, registry, dom, event, construct){
//...etc
}
私が働いているページのいずれかのモジュールのほんの数です。確かに、これらのメソッドにアクセスするためのより良い、将来のリリースではない方法があります。つまり、実際には全く新しいモジュールをインポートしてbyId()
を使用する必要がありますか?さらにイベントをつなぐ別のものは?その上に、関数の引数リストに変数名を代入することによって作成されたすべての乱雑さは、そのようなバックステップのように見えます。
query
モジュールのように、必要なときにのみrequire()
モジュールを使用すると思っていましたが、複数回必要な場合は、割り当てられている変数が範囲外である可能性がありますdomReady!
またはready
コールに入れてください。 reaalllly .... ??!
私はそれが私の道徳の理解の欠如だと仮定することができます。
私は本当に本を探して検索して購入しましたが、このライブラリは本当に私のお金のために走っています。私は誰でもこれを流すことができる光に感謝します。に全くばかげ
例
require(['dijit/form/ValidationTextBox'])
require(['dojo/ready', 'dojo/parser', 'dojo/dom-style', 'dijit/registry', 'dojo/dom', 'dojo/_base/connect', 'dojo/dom-construct'], function(ready, parser, style, registry, dom, event, construct){
/* perform some tasks */
var _name = new dijit.form.ValidationTextBox({
propercase : true,
tooltipPosition : ['above', 'after']
}, 'name')
/*
Let's say I want to use the query module in some places, i.e. here.
*/
require(['dojo/query', 'dojo/dom-attr'], function(query, attr){
query('#list li').forEach(function(li){
// do something with these
})
})
}
の編集道場ツールキットの人々からだけでなく、サードパーティのサイトの両方多くの例で使用され、この形式のオフに基づいて、それは次のようになり、私見、最初のfunction(ready, parser, style, registy...
が長くなり、名前の衝突などで問題が発生するため、必要なすべてのモジュールをロードしてください。
スクリプトの実行中に必要なすべてのモジュールを起動するだけで私はばかげているようです。それは、私はいくつかの "パッケージマネージャ"スクリプトを見なければならないと言われています。しかし、この例では、選択した場所でクエリモジュールを使用する場合は、残りの部分をメインのrequire()
ステートメントにロードする必要があります。なぜ私は理解していますが、一般的なドット構文の名前空間では何が悪いですか?何か? dijit.findIt()?なぜロードモジュール、一意の名前での参照、閉鎖を通過するのですか?
これは簡単な質問ですが、それが意味をなされることを願っています。 ..狂った私を運転本当に..
憤慨
は初心者くさい私を呼び出しますが、これは本当にです。私はそれがJavascript(明らかにそうではない)だが、うわーではない。私はこれを理解することができませんアウト!
ここに私が集まっているものがあります。いくつかのマスターページまたは任意で
define('adder', function(require, exports){
exports.addTen = function(x){
return x + 10
}
})
:adder.jsできちんとrequire(['cg/adder'])
形式が、何に従わない
require(['./js/cg/adder.js'])
...。今は重要ではありません。
その後、adder
を使用する必要があります:私が得た最も近いconsole.log(adder)
3
を返していました
console.log(adder.addTen(100)) // 110
。うん3
。それ以外の場合はadder is not defined
です。
なぜこれは難しいのですか?私はこれに私のnoobカードを使用しています、なぜ私は実際に一緒に来ていないのか分かりません。
ありがとうございます。
あなたのフォローアップについて新しい質問をする必要があります。私たちに問題を示すのに十分なコードはありません(たとえば、「加算」を定義していないなど)。 – Domenic
上記のサンプルに基づいて、1つのrequireステートメントでdijit/form/ValidationTextBoxとdojo/queryという2つのモジュールの依存関係のみが必要です。推移的な依存関係はあなたのために世話をします。 @Domenicの言葉のように、ここにもっとたくさんのものがあり、私たちはやり直すべきです。 – peller
私はそうではありませんか?うーん、私はちょうどやり直すよ。みんなありがとう。乾杯 – Phix