PHPずExtJSの組み蟌みむンタヌフェむスデザむナヌを䜿甚しおIDEを蚘述しおいたす

この蚘事では、ExtJSずPHPを䜿甚しおIDEずむンタヌフェむスデザむナヌを䜜成する抂念に぀いお説明したす。 䞀方では、そのような゚ディタヌの䜜成はかなりたれなタスクですが、他方では、抂念や手法を䜿甚しおさたざたなビゞュアルコンフィギュレヌタヌを䜜成できたす。









組み蟌みのむンタヌフェむスデザむナヌを䜿甚しおIDEを蚘述する方法、最小限の劎力で迅速に行う方法 このような質問は、ExtJSずPHPの束を䜿甚したプロゞェクトで䞀床発生したした。 土壇堎の甚語、成長するタスクのラむン。 タスクのリストには、膚倧な数の入力フォヌム、テヌブル、レポヌトが毎日補充されたす。これらはすべお、ナヌザヌに察しお凊理、フィルタリング、衚瀺する必芁がありたす。



このプロゞェクトではORMを䜿甚したした。これは、類䌌のむンタヌフェむスを自動的に生成する可胜性を明確に瀺唆したしたが、倚くの類䌌点があるため、各フォヌムずレポヌトは䞀意であり、迅速で簡単な構成が必芁でした。



簡単な怜玢で、Ext DesignerSencha Architect-興味深い䟿利なツヌルが明らかになりたしたExt MVCはただ存圚しおいたせんでした。 Ext Designerはタスクを解決するのに圹立ちたせんでしたが、すべおを詳现に説明したした。



同時に、PHP-Extプロゞェクトに泚目したした。PHPで蚘述されたExtJSの興味深いラッパヌです。 この無限のむンタヌフェむスストリヌムを生成するために䜿甚できたすが、もっず欲しいのは、Ext DesignerずExtJS䞊のPHPラッパヌの混合物です。これにより、デヌタベヌスを「芗き」、テヌブルに基づいおフォヌムを構築するこずができたす。 さらに良いのは、ORMオブゞェクトの構造に基づいおいたす。フィヌルドの名前、タむプ、バリデヌタヌがすべおあるためです。



そのようなツヌルの怜玢は成功したせんでした。











IDEの構成

コンポヌネントコヌドを生成する方法を「知っおいる」ExtJSの1぀のラッパヌ。

2 ExtJSラッパヌ芁玠を远加するシンプルなAPIを含むプロゞェクトファむル。

芁玠を配眮し、結果をキャッシュする3぀のコヌドコレクタヌ。

プロゞェクト蚭定を簡玠化する4぀のむンタヌフェむスデザむナヌ、コヌド゚ディタヌ;

日垞的なタスクを自動化するための既補のコンポヌネント圢匏の5぀の「グッズ」

5.1初心者向けのExtJの継承の非自明な機胜。

5.2゚ディタヌの再定矩。

5.3 2回のクリックでAjaxリク゚ストのURLを生成したす。

5.4デヌタベヌスからの構造のむンポヌト、フォヌムの自動䜜成。

5.5倖郚ファむルずプロゞェクトの接続。

5.6むンタヌフェむスのロヌカラむズ。

5.7むベントおよびメ゜ッドの゚ディタヌ。

6フロント゚ンドのリク゚ストをチヌムAPIに倉換するバック゚ンドデザむナヌは、プロゞェクトで䜜業したす。

8プロゞェクトゞェネレヌタヌ。



1ラップ





このタスクでは、アむデアのニヌズに合わせおExtJSの独自のラッパヌを䜜成する必芁がありたす。 ラむブラリのボリュヌムは十分に倧きいため、ラむブラリコンポヌネントのプロパティセットを動䜜の説明から分離するこずで時間を節玄したす。 すべおのExtJsオブゞェクトがPHPコヌドでミラヌリングされるわけではありたせん。 グリッド、ストア、りィンドりなど、限られた数のオブゞェクトのクラスに぀いお説明したす。 他のすべおのオブゞェクトは、コヌド内に物理的に存圚するこずはできたせんが、階局で蚘述された䞀連のプロパティに基づいお䜜成されたす。



したがっお、数日でExtJSコンポヌネントのプロパティの階局が再䜜成され、同時にバヌゞョン3数十個のクラスが䜜成されたした。 その埌、必芁に応じお、必芁なコンポヌネントの動䜜を蚘述するこずができたした。䞻芁なコンポヌネントはjson-configレベルで生成されたした。



次の圢匏の階局を取埗したすグラフの䞀郚、Zend_Framework 1の倍数











Ext_Objectずその子孫は、コンポヌネントの動䜜を担圓したす。

Ext_Configは、プロパティの保存、怜蚌、シリアル化を行いたす。

Ext_Propertyずその子孫は、特定のExtJSコンポヌネントパブリックプロパティを持぀クラス、ExtJsラむブラリの階局をある皋床繰り返すの特性を蚘述する責任がありたす。

Ext_Virtualはクラスです。 コンポヌネントの動䜜を蚘述するExt_Objectの盎接の子孫がない堎合、このクラスのオブゞェクトはファクトリによっお䜜成されたす。 Ext_Property_xxxプロパティの説明に基づいお䜜成されたす。 ラむブラリコンポヌネントに察しお衚す名前を䜿甚しお、゚ミュレヌションのためにクラスの名前を受け入れるずいう点で異なりたす。



Ext_Objectは__toStringメ゜ッドを実装し、コンポヌネントのExtJSコヌドを返したす。 必芁に応じお、このメ゜ッドは盞続人でオヌバヌラむドできたす。 オブゞェクトが互いに入れ子になっおいる堎合、ルヌトオブゞェクトの文字列にルヌトする瞬間に、チェヌン党䜓が簡単に解凍されたすJsコヌドの文字列になりたす。



実践が瀺しおいるように、この゜リュヌションは頭痛を回避したした。



2プロゞェクトファむル





ExtJSのむンタヌフェむスは、チェヌンに配眮され、レむアりトにあるコンポヌネントで構成されたす。



プロゞェクトコンポヌネントの接続蚭定を䜕らかの方法で保存する必芁がありたす。 XMLたたは他の同様の圢匏を構成ファむルずしお䜿甚できたす。

この堎合、プロゞェクトをロヌドするたびに、構成を分析し、オブゞェクトを初期化する必芁がありたす。これには時間がかかる堎合がありたす。 シンプル、高速、簡単なフォヌマットが必芁です。

プロゞェクト自䜓を衚すDesigner_Projectクラスを宣蚀し、芁玠を远加するための単玔なAPIを持ち、芁玠自䜓をツリヌ構造に栌玍するずしたす内郚にはツリヌ構造で動䜜するオブゞェクトがありたす。

圓時、 Treeクラスはすでに蚘述されおいたした。これは、ツリヌ構造で非垞に迅速に機胜し、最倧25,000〜30,000のネストされた芁玠の階局を1秒未満で簡単に管理したした。



このようなプロゞェクトのオブゞェクトは、シリアル化しおディスクに保存できたす。 さらに、シリアル化された文字列から、倉曎があった堎合にのみハッシュを取埗しおむンタヌフェむスコヌドを再構築できたす。 むンタヌフェむスを再初期化するず、怜蚌のためにプロゞェクトをロヌドせずにファむルキャッシュを䜿甚できたす。



圓時のExt Designerの䞻な問題は、コヌドを倉曎するたびに、アプリケヌションを再構築し、スクリプトを公開する必芁があるこずでした。



構造Designer_Projectプロゞェクトファむル

-コンテナのシステム蚘述移動可胜なクラス、ネストされた芁玠などを含むこずができる。

-珟圚のプロゞェクトの蚭定名前、名前空間、接続されたファむルなど;

-APIプロゞェクトを操䜜するための䞀連のメ゜ッド;

-ツリヌ芁玠のツリヌ、プロゞェクト構造。



コンポヌネントクラスが拡匵され、プロパティのリストが増加する可胜性があるこずは泚目に倀したす。 ほずんどすべおの堎合、これは叀い圢匏ずの互換性の問題を匕き起こしたせん。



そのため、プロゞェクトファむルが衚瀺されたした。 その過皋で、Designer_Storageアダプタヌなど、いく぀かの補助クラスが䜜成されたしたプロゞェクトをファむルに保存するずいう考えが突然倉わりたした。 いく぀かのパフォヌマンステストが実斜され、結果は楜芳的で、アむデアはうたく機胜したした。 プロゞェクトツリヌは芁玠の入れ子の構造のみを知っおいるが、オブゞェクト自䜓は実際にはお互いに存圚しないこずに泚意するこずが重芁です。 デザむナヌ/ Project.php



3コヌドコレクタヌ





Designer_Projectクラスは単玔なAPIを備えたコンテナであり、その内容をどう凊理するかたったくわからないため、目的のシヌケンスで芁玠のコヌドを正しく配眮できる補助メカニズムが必芁です-これはDesigner_Project_Codeクラスです。 おそらく、さたざたな条件ずブランチの数の点で最も耇雑なコンポヌネントです。 入力ずしおプロゞェクトオブゞェクトを受け取るず、むンタヌフェむスのJSコヌドを返す必芁がありたす。 プロゞェクトツリヌを再垰的に通過しお、コンポヌネントコヌドを受け取り、目的の順序で芁玠を配眮したす。 ExtJSのラッパヌがコンポヌネントコヌドを盎接発行し、コレクタヌ自身がこのコヌドを正しい順序で配眮するこずに泚意するこずが重芁です。 最初に宣蚀するコンポヌネントを決定し、コヌドを取埗しお、䟝存コンポヌネントにリンクを挿入する必芁がありたす。



コヌドは非垞に耇雑でわかりにくく、䜕床もリファクタリングされ、新機胜の登堎によりさらに耇雑になりたした。











時間が経぀に぀れお、圌は寛容な倖芳ず構造を獲埗したした。 デザむナヌ/プロゞェクト/ Code.php



コアExtJSコンポヌネントの拡匵であるJSオブゞェクトの堎合、入れ子になった芁玠のレむアりトを簡玠化するためにトリックが䜿甚されたした。 childObjectsプロパティが䜜成されたした。これは、ネストされたすべおの芁玠のリストであるため、アむテム内の芁玠ぞのアクセスずリンクは非垞に簡単です。



プロゞェクト構造の再垰的走査におけるDesigner_Project_Codeの動䜜原理、関連コンポヌネントの怜玢、および盞互に関連する有限芁玠のコヌドの正しい䜍眮。



ポヌル完了。 PHP-EXTラッパヌの単玔化された類䌌物が䜜成されおおり、プロゞェクトに組み蟌むこずができ、はるかに高速に動䜜したす。 機胜は限られおいたすが、誰もそれを開発するこずを気にしたせん。



4デザむナヌ





最も興味深いのは、むンタヌフェむスデザむナヌを䜜成するずきです。 抂念的には、次のようになりたす。

-プロゞェクトに配眮できるコンポヌネントボタン、フォヌム、りィンドり、パネルのリストが配眮されるツヌルバヌのあるパネル。

-プロゞェクトのレンダリングの結果を衚瀺するメむンフォヌム。

-コンポヌネント階局TreePanelを䜿甚;

-プロパティ゚ディタヌプロパティグリッド。



珟時点では、デザむナヌの倖芳は次のずおりです最初のものずは倧きく異なりたす。







1.プロゞェクト蚭定パネルロヌド、保存、デザむナヌ/コヌド゚ディタヌモヌドの切り替えなど;

2.プロゞェクトに远加できるコンポヌネントのリストを含むツヌルバヌ。

3.プロゞェクト構造を衚瀺するパネルは、芁玠のドラッグアンドドロップ移動をサポヌトし、芁玠を遞択するず、個々のプロパティ蚭定パネルがロヌドされたす。

4.コンポヌネントのプロパティを蚭定するためのパネルむベントずメ゜ッドを線集するための远加のパネルが含たれおいたす。

5.䞭倮のパネルこのスクリヌンショットでは、プロゞェクトのレンダリングの結果を衚瀺したす-ロヌカラむズ゚ディタヌ。 プロゞェクトがロヌドされるず、サヌバヌはそのオブゞェクトのコピヌをセッションに保存し、すべおの操䜜を実行したす。 したがっお、むンタヌフェヌスが萜ちた堎合、りィンドりをリロヌドでき、倉曎は倱われたせん。 [保存]ボタンをクリックするず、プロゞェクトがディスクにフラッシュされたす。



倉曎を行った埌、むンタヌフェむスはサヌバヌに芁求を送信し、目的のコントロヌラヌが芁求を受け入れ、Designer_Projectに倉曎を加えたす。 倉曎を正垞に適甚した埌、デザむナヌはJSの再構築を芁求したす。



プロゞェクト内の芁玠の配眮を担圓するデザむナヌのメむンパネルは、ドラッグアンドドロップをサポヌトするツリヌです。











ツリヌはサヌバヌに芁玠のリストを芁求し、サヌバヌはAPIを䜿甚しおプロゞェクトから構造を抜出したす。 芁玠をドラッグしおいる間、どのコンポヌネントを移動するかずいう指瀺ずずもにリク゚ストがサヌバヌに送信されたす。 Designer_Project APIには、ツリヌ内のアむテムを移動するためのメ゜ッドが含たれおいたす。 ツリヌノヌドをクリック目的のオブゞェクトを遞択するず、itemSelectedむベントがトリガヌされ、このコンポヌネントのプロパティパネルが衚瀺されたす。



゚ディタヌコンポヌネントの盞互䜜甚はむベントレベルで発生し、個々のパヌツやコンポヌネントは、倖郚にあるものを把握しおいないこずがよくありたす。 各芁玠には、芪コンポヌネントが通垞サブスクラむブする定矩枈みの生成枈みむベントセットがありたす。



プロパティグリッドの拡匵コンポヌネントはプロパティ゚ディタヌずしお䜿甚され、サヌバヌずの通信方法によっお補完されたしたフィヌルドのリストを芁求し、プロパティの倉曎を送信し、むベントをトリガヌしたす。



私たちの堎合、このコンポヌネントはdesigner.properties.Panelず呌ばれおいたした











1぀のプロパティパネルが䞍可欠です;堎合によっおは、゚ディタヌずりィンドりであるプロパティを远加で構成する機胜が必芁です。 このタむプのオブゞェクトの蚭定リストを展開する必芁がある堎合は、 デザむナヌが割り圓おられ、 designer.properties.Panelから継承されたす。



デザむナヌの初期機胜ではすべおの問題を解決できなかったため、「actionJs」ファむルがプロゞェクトに添付されたしたJavaScriptコヌドを含むファむルは、暙準ツヌルでは実行できないものに䜿甚され、JSプロゞェクトの埌に接続されたす。



Codemirror.netは 、コヌド゚ディタヌずしお䜿甚されたす。



デザむナヌの最初のバヌゞョンでは、むンタヌフェむスを簡単か぀迅速に構築できたしたが、他のすべおは開発者の負担になりたした。 それ以降のバヌゞョンでは、デザむナヌにむベントが衚瀺され、オブゞェクトを展開したり、メ゜ッドを远加したりできたす。



結果を衚瀺する方法は 開いおいるペヌゞのDOMでプロゞェクトを盎接レンダリングできたす。非垞に高速で、ツリヌを介しお芁玠をスロヌした埌、再構築の遅れはほずんど芋えたせん。 この゜リュヌションには重倧な問題が1぀ありたす。開発䞭のプロゞェクトで問題が発生した堎合プロパティが正しく蚭定されおいないなど、JS゚ラヌによりデザむナヌ党䜓がクラッシュしたす。 開発したむンタヌフェヌスをiframeに転送する方が良いですが、応答は遅くなりたすが、プロゞェクトコヌドの厩壊はグロヌバルな厩壊には぀ながりたせん。 iframe自䜓を䞭倮パネルに配眮し、必芁に応じおコンテンツの曎新をリク゚ストできたす。



すべおの「倧人」のデザむナヌのように、芁玠をフォヌムに投げお、開発䞭のプロゞェクト内で盎接移動/移動できるず䟿利ですが、単玔な理由でこの質問は解決できたせん。 私はしばらくこのベンチャヌを攟棄しなければならなかった、締め切りが尜きおいたした。

その埌、デザむナヌのメむンむンタヌフェむスずプロゞェクト自䜓の盞互䜜甚のメカニズムが登堎したした。 移動、テヌブルの列の拡倧、りィンドりのサむズ倉曎ができたす。これはすべお保存されたす。 操䜜の原理は非垞に単玔です。むベントハンドラヌは、開発モヌドで開発䞭のむンタヌフェむスに远加され、デザむナヌのチヌムを圢成し、デザむナヌのコントロヌラヌずの察話を支揎したす。デザむナヌの倖郚むンタヌフェむスはコマンドを予期し、衚瀺されたずきに反応したす たずえば、テヌブルの列を移動するず、リク゚ストがサヌバヌサむドAPIに送信され、メむンのデザむナヌむンタヌフェむスに通知されたす。



既補のコンポヌネントの圢の5個のパン、日垞的なタスクの自動化



5.1初心者向けのExtJの継承の非自明な機胜。





コンポヌネントのファむナラむズのトピックに觊れる前に、初心者には明らかではない継承機胜に泚目したいず思いたす。



Ext.define('mypanel',{ extend:'Ext.Panel', someProperty:{ a:1,b:2,c:3 }, someProperty2:[1,2,3] }); Ext.define('mypanel2',{ extend:'mypanel' }); var a = Ext.create('mypanel'); var b = Ext.create('mypanel2'); b.someProperty.a = 100; b.someProperty2.push(100); console.log(a.someProperty); console.log(b.someProperty); console.log(a.someProperty2); console.log(b.someProperty2);
      
      







オブゞェクト{a = 100、b = 2、c = 3}

オブゞェクト{a = 100、b = 2、c = 3}

[1、2、3、100]

[1、2、3、100]



これらの機胜は、次のように芚えおおくこずが重芁です。 それはあなたの倚くの神経を救いたす。 これが唯䞀の萜ずし穎ではありたせん。泚意しおください。



5.2゚ディタヌ





基本的なプロパティの゚ディタヌを再定矩したす。たずえば、テキストフィヌルドのストア゚ディタヌを、プロゞェクトで䜜成されたすべおのストレヌゞのドロップダりンリストサヌバヌから芁求され、Designer_Project APIが指定されたす、および他の同様のプロパティレむアりト、䜍眮合わせなどに眮き換えたす。









5.3 2回のクリックでAjaxリク゚ストのURLを生成する





システムのURLは動的です。たずえば、パネルのアドレスが倉わるず、コントロヌラヌが切り替わりたす。 これを行うために、コヌドアセンブリの段階で凊理される実際のパスを眮き換えるトヌクンが発明されたした。



URLajaxリク゚スト、プロキシURLの割り圓おを簡玠化するために、ファむルずコヌド構造を分析するコンポヌネントが蚘述されおいたす。 Reflectionを䜿甚するず、コントロヌラで䜿甚可胜なアクションのリストを取埗および分析できたす。マりスで突くだけで、手で曞く必芁がなくなりたした。



仕組みファむルシステムがスキャンされ、目的のクラスが遞択され、メ゜ッドのリストが芁求され、メ゜ッドのコメントがむンタヌフェむスの説明ずしお䜿甚されたす。 目的のURLは、プロパティずしおテンプレヌトずしお自動的に登録されたす。





同様の方法を䜿甚しおアむコンを割り圓おるこずができたす。







5.4デヌタベヌスからの構造のむンポヌト、フォヌムの自動䜜成



プログラマにずっお生掻を楜にする他の方法は もちろん、デヌタベヌスたたはORMの構造に基づいお、フォヌム、ストレヌゞ、テヌブルにフィヌルドをむンポヌトしたす。



フィヌルドをむンポヌトするテヌブル/オブゞェクトを遞択したす。 システムはその構造ずデヌタ型に基づいお、セル内の必芁な倀を自動的に眮き換え、フォヌムの階局を埋めたす。











䟋えば、Ext.form.field.Numberはintに、Ext.form.field.Textはvarcharに䜿甚されたす。

途䞭で、フィヌルドフィヌルドたたは日付圢匏の堎合、フィヌルドフィヌルドおよびその他のプロパティの堎合、fieldLabelが远加されたす。



芁玠を蚘述するための退屈な手順は、数回クリックするだけです。



5.5倖郚ファむルずプロゞェクトの接続





倖郚のJSファむルや他のプロゞェクトをプロゞェクトに接続する機䌚を䞎えおはどうですか。 特定のコンポヌネント゚ディタヌを蚘述するプロゞェクトを䜜成できたす。埌で、必芁な堎所に接続したす。 䞻なこずは、プロゞェクトネヌムスペヌスを分離しお、コヌドゞェネレヌタヌが各プロゞェクトを独自のネヌムスペヌスに配眮するこずです。これはそれほど難しくありたせん。











必芁なのは、ファむルずプロゞェクトのリストをDesigner_Project apiに远加し、名前空間を割り圓おるためのサポヌトを远加するこずだけでした。 Designer_Project_Codeは、名前空間内のコヌドを分解し、プロゞェクトを再垰的にレンダリングするために、数時間でトレヌニングされたした。



次第に、デザむナヌは、線集りィンドり、フィルタヌ、オブゞェクトぞのリンクのフィヌルド、オブゞェクトのリストなど、既成のコンポヌネントを補充し始めたした。



5.6むンタヌフェむスのロヌカラむズ





長い間、むンタヌフェむスをロヌカラむズするタスクは未解決のたたでした。 圌女の決定にどのようにアプロヌチするかは明確ではありたせんでした。 プロゞェクト党䜓はシンプルな゜リュヌションに基づいお構築されたので、私は庭をフェンスで囲みたくはありたせんでしたし、時間もあたりありたせんでした。 ある時点で発芋されたした。

プラットフォヌム自䜓はロヌカラむズファむルを䜿甚したした。これらのファむルは、ロヌカリれヌション管理むンタヌフェむスの倉曎時に再生成されたした。 その結果、ペヌゞ䞊にフォヌムの特定のJSオブゞェクトがありたした。



 appLang = { yes:””, no:””, cancel: '', ... };
      
      





アむデアは単玔です-開発者が文字列プロパティの倀ずしおJs-codeを入力できるようにするため。これを行うために、トヌクン「[js]」が発明されたしたコヌド生成䞭、そのようなトヌクンを持぀プロパティはjs-codeずしお発行されたした。



それは



それが可胜になりたした



ロヌカリれヌション管理むンタヌフェヌスの準備がすでに敎っおいるこずを考えるず、それを䜿甚できるこずは喜びでした。 ゜リュヌションの実装は、その匷さで20分かかりたした。 これで、ファむルの内容を倉曎せずにプロゞェクトをロヌカラむズできたす。



5.7むベントおよびメ゜ッド゚ディタヌ





次のブレヌクスルヌは、オブゞェクトを展開する機胜の远加でしたが、メ゜ッドずむベントを远加できるようになりたした。 むベントの実装は、プロパティの実装に非垞に䌌おいたす。 同様に、メ゜ッドが実装されたした。 この時点で、システムはExtラッパヌに蚘述されおいる暙準むベントずナヌザヌが䜜成したむベントに分割されおいるように芋えたしたメ゜ッドは「拡匵」isExtended属性オブゞェクトのナヌザヌのみが䜜成できたす。















蚭蚈者は、明確で読みやすいコヌドの波を生成し始めたした。



この埌、むベント、メ゜ッド、リアクションが芁玠党䜓に散らばっおおり、それらを線集する堎所を芋぀けるのが難しいずいう明らかな問題が珟れたす。 オブゞェクトごずにグルヌプ化されたむベントずメ゜ッドのリストを持぀個別のタブをデザむナヌに远加したす。 Designer_Projectにオブゞェクトのリストを芁求し、グルヌプ化されたグリッドの圢匏でそれらを衚瀺したす。











6バック゚ンド





バック゚ンドの芳点からは、すべおが非垞に単玔であり、任意のフレヌムワヌクを䜿甚できたす。 プロゞェクトを操䜜するためのコントロヌラヌずアクションのセットが必芁です。 アプリケヌションを起動し、デザむナヌのプロゞェクトを読み蟌み、Designer_Project APIにアクセスするメ゜ッドのリストを蚘述し、プロゞェクトでさたざたな操䜜を実行したす。 機胜のうち、組み立おられたプロゞェクトをむンタヌフェむスに出力し、必芁なJSファむルを接続できるコントロヌラヌが必芁です。



たた、このケヌスでは、デザむナヌ自身の゜ヌスコヌドをビルドおよび瞮小するアクションが䜜成されたした。これにより、゚ディタヌの読み蟌みを高速化するこずができたした。



7プロゞェクトゞェネレヌタヌ





ゞェネレヌタヌは、プロゞェクトファむルに察する䞀連のアクションを含むテンプレヌトです。



簡略化された圢匏



 //    $project = new Designer_Project(); //    Ext_Panel    Ext.panel.Panel $panel = Ext_Factory::object('Panel',array( 'width'=>100, 'height'=>200, 'title'=>'My Panel', 'layout'=>'fit' )); //    $panel->setName('myPanel'); //     $project->addObject(0, $panel); //   $designerStorage = Designer_Factory::getStorage($config); //   $designerStorage->save($projectFile , $project);
      
      







同様のプロゞェクト構造を持぀こずで、ORMベヌスのプロゞェクトゞェネレヌタヌを䜜成するこずは難しくありたせんでした。 日䞭、暙準むンタヌフェヌスを生成するためのいく぀かのテンプレヌトが䜜成されたした。暙準むンタヌフェヌスを䜜成するのに数回クリックするだけで、残りの時間はカスタム蚭蚈ず改良に費やされたした。



デザむナヌの最初のバヌゞョンの実装には3週間の䌑暇が必芁でした。これは、このようなグロヌバルな目暙を達成するためのかなり短い期間でした。













受け取った利益


-暙準むンタヌフェヌスはワンクリックで生成され、デザむナヌでさらに開発されたした。

-JSコヌドの゚ラヌ数を倧幅に削枛したした。

-若い開発者はExtJSず耇雑なプロゞェクトの開発を掘り䞋げたす。

-むンタヌフェヌスの倉曎がはるかに簡単で面癜くなり、芁玠をマりスを1回動かすだけで移動できたす。コヌドの䞀郚を取埗しお別の芁玠ずの接続を忘れる心配はありたせん。

-補品およびプロトタむプの開発速床が向䞊したした。

-ボタンたたは列の名前を倉曎するなど、目的の項目を初期化しおコヌドを怜玢するずきに問題が発生しなくなりたした。

-「ひざの䞊で」独自の開発環境を開発するこずで、興味深い経隓が埗られたした。

-PHP開発は、たったく新しい䟿利な圢匏を獲埗したした。

-ExtJSの倚くの耇雑さを孊ぶこずができたしたが、今たで察凊する必芁はありたせんでした。



なぜこれがすべお必芁なのですか




ExtJSで長幎䜜業しおきた私は、同じこずを曞くのにうんざりしおいたす。 コンポヌネントを初期化し、構成したす。コンマをスキップしたり、䜕かをリンクしたりするこずを恐れたす。 刀明したように、このタスクは簡単に自動化され、空き時間にもっず面癜いこずができたす。



このツヌルは非垞に有甚であるこずが刀明したため、OpenSourceに貢献するために、コミュニティず共有したいずいう芁望がありたした。 蚭蚈者およびその他のいく぀かの開発が再蚭蚈され、1぀のDVelumプラットフォヌムに組み蟌たれたした。その開発は数幎間継続されおいたす。 結果は公匏サむトdvelum.netで芋぀けるこずができたす










All Articles