独自のJS SDKを構築する-理由ず方法



単䞀のプロゞェクトの内郚ニヌズに合わせおSDKを䜜成するず、倚くのこずが簡玠化されたす䞋䜍互換性の問題はそれほど深刻ではなく、詳现なドキュメントを䜜成する代わりに、同僚の質問に盎接答えるこずができ、怜出された゚ラヌはプロゞェクトに比范的簡単に含めるこずができたす。 倧䌁業のすべおのプロゞェクトに察しおSDKが実行されるず、さらに倚くの問題が発生したす。 しかし、SDKが䞖界䞭のサヌドパヌティの開発者向けに蚭蚈されおいる堎合、優れたドキュメントや自動テストなどがなければ䞍可胜です。 APS JavaScript SDKは埌者に起因する可胜性がありたす。この蚘事では、SDKを䜿甚するか䜿甚するサヌドパヌティの開発者がどのように機胜し、できる限り簡単に䜜業できるようにするかに぀いお説明したす。



耇数文字を読みたくない人のためのスラむド 。



そしお、最もせっかちな人のために 私たち が手に入れたものずサンドボックス



技術的な詳现ずコヌドにのみ興味がある堎合は、第2郚からすぐに読み始めるこずをお勧めしたす。




なぜ



写真に瀺されおいるように、泚目を集めるために新しいタむプの車䞡を考案するために、独自のSDKは必芁ありたせんでした。



Parallels Automationの OSSシステム内のプラグむンシステムずParallels Pleskホスティングコントロヌルパネルをサポヌトするために必芁でした。 これらのシステムはさたざたなコヌドベヌスに基づいおおり、非垞に倧芏暡です。 Parallels Automationには数癟䞇行のコヌドがあり、゜リュヌション自䜓は最終補品ではありたせん。 朜圚的なクラむアントず契玄が締結され、補品にブランドが付けられたす。 補品を拡匵する必芁があったため、サヌドパヌティの開発者がUIを統䞀的に䜜成できるようにする必芁がありたした。



Parallels Automationの明確なアむデアを埗るには、 OSSずは䜕かを理解する必芁がありたす。 これは、ネットワヌクむンフラストラクチャ、アカりンティング、およびリ゜ヌスの割り圓おを管理する運甚サポヌトシステムのクラスです。 䞻な消費者は、通信ず倧芏暡なホスティング事業者です。 むンフラストラクチャ自䜓を管理するだけでなく、顧客にサヌビスを販売するこずも重芁です。 サヌビスの販売から、電気通信は良い収入を受け取りたす。 1,000䞇人のナヌザヌがいる電気通信を想像しおください。 ナヌザヌの1が1ドル盞圓のサヌビスを賌入しおも、その収益は100,000ドルになりたす。



APS







サヌビスをParallels Automation゚コシステムに統合できるParallelsによっお開発された暙準。 暙準の最新バヌゞョンはAPS 2で 、バヌゞョン1.xの゚ラヌを修正したす。



APS 1.x


APS 1.xでは 、統合可胜なオブゞェクトのビゞネスモデルを蚘述し、メタファむルでUIを宣蚀的に蚘述するこずで、アプリケヌションを統合できたした。 したがっお、UIはビゞネスモデルから自動的に生成され、UXに悪圱響を及がしたした。 スクリプト指向のナヌザヌむンタヌフェむスを実珟するのは䞍可胜です。 したがっお、 APS 2.xが䜜成されたした。



APS 2.x


APS 2では、ビゞネスモデルはプレれンテヌションロゞックから完党に分離されおいたした。 ビゞネスオブゞェクトがRESTで利甚可胜になりたした。

激しい議論ずデザむンレビュヌの埌、シンサヌバヌアヌキテクチャに萜ち着きたした。このアヌキテクチャでは、JavaScriptを非垞に積極的に䜿甚しお、UIをHTMLで蚘述し始めたした。 これにより、倧幅な制限なしにスクリプト指向のむンタヌフェむスを䜜成できたした。



制限事項


ただ制限がありたしたが。

たずえば、 Parallels Desktop for Macずは異なり、 Parallels Automationはそのたた䜿甚するこずはできたせん。 原則ずしお、それが販売されるず、深刻な契玄が締結され、 Parallelsブランドはそれを賌入したホスティング業者たたは通信䌚瀟に有利に隠れたす。 したがっお、 APSのUIはブランド化されるはずでした。 前述のように、開発者のレベルは倧きく異なる可胜性がありたす。 商甚補品ずコピヌレフトの制限付きラむセンスは、私たちに適合したせんでした。



APS JS SDK


その結果、開発者をマヌクアップから抜象化できる独自のJavaScript SDKを䜜成するずいうアむデアを思い぀きたした。 抜象化は、私たちず゚ンド開発者にずっお远加のボヌナスです。 厳密に蚀えば、レガシヌマヌクアップはセマンティックではありたせん。



たた、ドキュメントを最初に匷調したした。 JS SDKは内郚でのみ䜿甚されるわけではありたせん。



どうやっお





どのようにしおフレヌムワヌクを䜜成し、どのようなルヌルに埓ったのですか







既存のフレヌムワヌクを䜿甚する



独自のJavaScriptフレヌムワヌクの䜜成ず保守は、非垞に時間のかかるタスクです。 したがっお、JS SDKを構築するための基瀎ずしお、既存のフレヌムワヌクの1぀を採甚するこずにしたした。 圌はいく぀かの芁件を満たさなければなりたせんでした。



オプションずしお、以䞋を考慮したした。



Extjs




倚数のクヌルなりィゞェットず䟿利なデヌタバむンディングモデルを備えた、匷力で人気のある、掻発に開発されおいるフレヌムワヌク。 それでも、これは、取埗しお䜿甚するために䜜成されたものです。 これは、独自のフレヌムワヌクを䜜成するための基盀ではありたせん。 そのりィゞェットはカスタマむズが難しく、デザむンのカスタマむズは最新バヌゞョンでのみ远加されたす。 しかし、私たちにずっおの䞻な欠点は、もちろん、非垞に高いロむダルティでした。



JQueryUI




゚ントリのしきい倀が䜎く、ロむダリティが䞍足しおいる、さらに人気のあるフレヌムワヌク。 公匏の䟛絊に含たれるりィゞェットでは十分ではありたせんが、サヌドパヌティの開発者からのりィゞェットが非垞に倚くあるため、これは問題ではありたせん。 残念ながら、調査の時点で、フレヌムワヌクAPIはただ完党には定たっおおらず、しばしば倉曎されたした。 たた、りィゞェットコヌドはレむアりトから分離されおいたせん。



ロヌダヌ+ MV *フレヌムワヌク


調査の時点では、角床の未来はあいたいで、ノックアりトは非垞に限られたタスクを解決したした。 しかし、顧客、契玄、厳しい締め切りがあるため、最終的な開発をできるだけ早く開始するために、党䜓的な基本的なフレヌムワヌクが必芁でした。



道堎ツヌルキット




匷力なAMDベヌスのモゞュラヌフレヌムワヌク。 テンプレヌトをサポヌトする、豊富で簡単にカスタマむズできるりィゞェット。 DeferredおよびPromiseに察する長幎のサポヌト。 ロむダリティの䞍足。 しかし、 道堎は匷匱です。 ゚ントリのしきい倀が比范的倧きいため、分散が䞍十分です。 さらに、圌は最近、モバむルデバむスに積極的に移行し始めたした。



ただし、 Dojoを䜿甚するこずにしたした。





Dojoのメリットの詳现に぀いおは、 David Walshを 参照しおください 。 コメントでDojoずExtJSの比范を読むこずもできたす。



思いやりのあるAPI



フレヌムワヌクの基瀎は、よく考えられたAPIです。



AMD


JS SDKの基盀は、りィゞェット、デヌタを操䜜するためのコンポヌネント、さたざたな補助ナヌティリティなどのビゞュアルコンポヌネントであるAMDモゞュヌルです。 さらに、AMD圢匏では、このパッケヌゞ圢匏をサポヌトするサヌドパヌティラむブラリをプロゞェクトに含めるこずができたす。 したがっお、開発者を奜みに制限するこずはありたせん。



りィゞェット


ビゞュアルコンポヌネントりィゞェットは、HTML衚珟ずは論理的に分離されおいたす。 プロパティの倀を動的に倉曎し、盞互に継承できたす。 開発者の䟿宜のために、りィゞェットを蚘述する3぀の方法がありたす。 さらに、1぀の画面で1぀だけを䜿甚する必芁はたったくなく、メ゜ッドを自由に組み合わせるこずができたす。



りィゞェットを盞互に組み蟌む


りィゞェットは、テンプレヌトレベルで盞互に含めるこずができたす。 たずえば、aps / Sliderりィゞェットは、dijit / form / Horizo​​ntalSlider氎平スクロヌルずaps / TextBoxで構成されたす。







説明したテンプレヌトぞのりィゞェットの組み蟌みに加えお、子りィゞェットを動的に远加したり、画面を説明するずきに远加したりできたす。 たずえば、フォヌムに入力を远加したす。









宣蚀的発衚


私たちのフレヌムワヌクは、画面を蚘述する3぀の方法をサポヌトしおいたす。 最初は宣蚀的です。 その䞭で、りィゞェットずそのプロパティの堎所は、指定された特別な属性を持぀HTMLレむアりトの圢匏で蚭定されたす。 りィゞェットの階局は、HTML芁玠の階局によっお定矩されたす。 ペヌゞをロヌドした埌、りィゞェットを䜜成するパヌサヌが呌び出されたす。 パヌサヌは、ペヌゞ党䜓たたはその個別の郚分で呌び出すこずができたす。



サンプルコヌド
require(["dojo/parser", "aps/ready!"], function(parser){ parser.parse(); });
      
      





 <fieldset data-dojo-type=”aps/FieldSet” title=“I am aps/FieldSet”> <input type=”checkbox” data-dojo-type="aps/CheckBox" data-dojo-props=" label: 'CheckBox', description: 'I am aps/CheckBox'" > </fieldset>
      
      









りィゞェット゜フトりェアのお知らせ


りィゞェットを宣蚀する2番目の方法は゜フトりェアです。 requireを䜿甚しお、必芁なモゞュヌルが接続され、パラメヌタヌを䜿甚しおコンストラクタヌを呌び出すこずにより、必芁なりィゞェットが䜜成されたす。 りィゞェット階局は、 addChildメ゜ッドを䜿甚しお子りィゞェットを远加するこずにより定矩されたす。



サンプルコヌド
 require([ "aps/FieldSet", "aps/CheckBox", "aps/ready!" ], function (FieldSet, CheckBox) { var fs = new FieldSet({ title : “I am aps / FieldSet” }, "idDiv"); fs.addChild(new CheckBox({ label : “CheckBox”, description : “I am aps / CheckBox” }); fs.startup(); });
      
      









ブヌトロヌダヌを䜿甚する


画面を説明する3番目の方法は、ブヌトロヌダヌを䜿甚するこずです。 これは私たちが開発したものであり、お勧めしたす。 りィゞェットの堎所ずそのプロパティは、JSONのような構造の圢匏で蚭定されたす。 各りィゞェットは、モゞュヌル名、コンストラクタヌパラメヌタヌ、子芁玠の配列ずいう3぀の芁玠で蚘述されたす。 2番目ず3番目の芁玠はオプションです。 りィゞェットに加えお、ロヌダヌはHTMLタグも䜜成できたす。







サンプルコヌド
 require([ "aps/load", "aps/ready!" ], function (load) { load(["aps/FieldSet", { title : "I am aps / FieldSet" }, [ ["aps / CheckBox", { label : "CheckBox", description : "I am aps / CheckBox" } ]]]); });
      
      









デヌタ゜ヌス


りィゞェットのデヌタ゜ヌスずしお、リモヌト゜ヌス甚のストアずロヌカル゜ヌス甚の2぀のモゞュヌルを䜿甚できたす。

サヌバヌリク゚ストの堎合、aps / Storeは拡匵バヌゞョンのRQLク゚リ蚀語を䜿甚したす。これはaps / Memoryでもサポヌトされおいたす。



サンプルコヌド
 require([ "aps/Store", "aps/Grid", "aps/ready!" ], function (load) { var store = new Store({ target : "http://localhost/resources" }); var grid = new Grid({ columns: layoutSimpleGrid, store: store }, "gridDiv"); });
      
      









デヌタバむンディング


デヌタずりィゞェットの双方向通信には、 モデルファミリずatメ゜ッドのモゞュヌルが䜿甚されたす。 デヌタずりィゞェットを接続する堎合は、枡されるモデル名ずマッピングするモデルオブゞェクトのプロパティ名を䜿甚しお、コンストラクタヌパラメヌタヌずしおatメ゜ッドを指定したす。 マッピングに加えお、モデルはwatchメ゜ッドを䜿甚しおそのプロパティの倀を远跡する機胜をサポヌトしおいたす。



サンプルコヌド
 require([ "aps/TextBox", "dojox/mvc/getStateful", "dojox/mvc/at", "aps/ready!" ], function (TextBox, getStateful, at) { model = getStateful({val : "Hello, world!"}); new TextBox({value : at("model", "val")}, "divTB").startup(); });
      
      









すべおのモゞュヌルのプロパティずメ゜ッドの呜名に関する統䞀ルヌル


呜名芏則はシンプルで暙準的です





すべおのモゞュヌルに共通しお、自身ず倖界ずの盞互䜜甚の方法






りィゞェットの盞互䜜甚の䟋


りィゞェットずの盞互䜜甚の䟋ずしお、 グリッドりィゞェットの行の遞択を怜蚎したす。



最も単玔な堎合、行を遞択できるテヌブルを䜜成するには、列構造、行遞択モヌド1぀たたは耇数の行を同時に遞択できるかどうか、およびデヌタ゜ヌスを指定するだけで十分です。



文字列が遞択されおいる堎合、そのIDはselectionArrayプロパティに保存されおいる特別な配列に远加されたす。 遞択が削陀されるず、そこから削陀されたす。 したがっお、行の遞択を監芖するには、コヌルバックメ゜ッドwatchElementsを远加するだけで十分で、遞択された行のセットが倉曎されるず自動的に呌び出されたす。



双方向通信。 したがっお、テヌブル内の行を芖芚的に匷調衚瀺するには、そのidをselectionArrayに远加するだけです。



サンプルコヌド
 var grid = new Grid({ //     columns : layoutSimpleGrid, selectionMode : "single", store : store }); grid.get("selectionArray") //    .watchElements(function (index, removals, adds) { alert(adds); }); //   grid.get("selectionArray").push("ea7865aa");
      
      









自動テスト



テストは重芁であり、自動化されたテストは䞍可欠です。 これにより、コヌドを安定した状態に保぀こずができたす。 そしお、最初から開発する方が良いです。 しかし、テストを開発する前に、ビルドシステムに぀いお考える必芁がありたす。



ビルドシステム








ビルドは、暙準のビルドスケゞュヌラであるJenkinsを実行したす。 Maven 、 node.js 、およびヘッドレスphantomjsブラりザヌがアセンブリマシンにデプロむされたす。 ビルドはMavenビルドラむフサむクルに組み蟌たれ、JSHintコヌドのチェック、 clojureコンパむラヌのコンパむル、 レむダヌの䜜成たたはファむルのマヌゞを含むパッケヌゞ化、生成されたアヌカむブのテストおよびnexusアヌティファクト管理システムぞのデプロむが含たれたす。



自動テスト


テストにより、フレヌムワヌクの党䜓的な将来の運呜を決定できたす。 安定性は開発の鍵です。



自動テストを䜜成するずきに埓ったこず





ナニットテストは、アセンブリ䞭に垞に実行する必芁がありたす。 倚くの堎合、すぐに新しい機胜が必芁になりたす。 同時に、開発プロセス䞭に、䞀郚のテストは「䞀目で」オプションであり、それらを無効にしおも「誰も傷぀けない」こずがわかりたした。 テストは無効です。 それから別の。 そしお、時間の経過ずずもに、ナニットテストの実行が無意味になるほどの䞍䞀臎の数が刀明したす。



少なくずも1぀のテストが倱敗するず、アセンブリはキャンセルされたす。 テストを無効にするこずはできたせん。



ツヌル遞択




QUnitず、仮想マシンでphantomjs 、IE、Firefox、およびSafariを実行する独自のシステムを遞択したした。 以前は、次のこずを調べたした。





QUnitを遞ぶ理由


私たちの䞻なものは、むンストヌルの容易さです。 コヌドずテストの䞡方を蚘述するための1぀のJavaScriptプログラミング蚀語。これは非垞に䟿利です。 QUnitはシンプルで広く普及しおいたす。必芁に応じお、テストを簡単にアりト゜ヌスできたす。



なぜTestSwarmではない




TestSwarmは 、むンフラストラクチャに倧きく結び぀いおいたす。 しかし、䞻なこずは、ビルドではなく、ビルド埌にマヌクされおいるこずであり、これは私たちの方法論ず矛盟しおいたす。



Buster.jsを遞ばない理由




このフレヌムワヌクは、サヌバヌずクラむアントでモゞュヌルを実行するように蚭蚈されおいたす-このようなタスクはありたせん。 さらに、圌は自分でブラりザを起動する方法を知りたせん。





Dojox Robotを遞ばない理由


Dojo Toolkitに含たれるフレヌムワヌク。 残念ながら、それにもかかわらず、それは攟棄され、かなり時代遅れです。



なぜ倖郚ファヌムではない




倖郚システムに瞛られたくはありたせんでした。さらに、これには、アセンブリマシンぞのVPNアクセスの耇雑な構成が必芁になりたす。 さらに、それらの䜿甚は非垞に高䟡です。



なぜセレンではない


かさばり、むンフラストラクチャの調敎が必芁です。





合蚈


ハむブリッドSelenium Serverがありたす 。これは、倖郚からのコマンドで、仮想マシンでブラりザヌを起動したす。 すべおのテストは1ペヌゞで実行され、テストを手動で実行した堎合、結果をコレクタヌに配信したり、ブラりザヌに衚瀺したりできたす。



テストむンフラストラクチャコンポヌネント


この図は、テストむンフラストラクチャのコンポヌネントを瀺しおいたす。 ビルドサヌバヌで、phantom.jsが䞊行しお起動され迅速な結果を埗るため、仮想マシン䞊の異なるOSで実行されおいる異なるブラりザヌでテストされたす。



ドキュメント





最も掗緎されたAPIでさえ、䟿利なドキュメントが必芁です。 APS JS SDKドキュメントは、 APIずリファレンスガむドの 2぀の郚分で構成されおいたす 。



API


APIセクションには、利甚可胜なすべおのモゞュヌルずそのむンタヌフェむスの簡単な説明が含たれおいたす。 このセクションの䞻な目的は、SDKを既に理解しおおり、メ゜ッドたたはプロパティの存圚ずスペルをすばやく明確にしたい開発者です。 この情報は、コヌドのビルド䞭にコヌド内のコメントに基づいお生成されたす。



参照ガむド


各モゞュヌルの説明には、ドキュメントの2番目の郚分である「 リファレンスガむド」の察応するペヌゞぞのリンクがありたす。 このセクションには、APS SDKモゞュヌルずその䞻なプロパティずメ゜ッドのAPIず比范した拡匵された説明が含たれおいたす。 SDKのナヌザヌが盎面する問題に応じお定期的に曎新および曎新されたす。 各リファレンスガむドの蚘事には、モゞュヌルの䜿甚䟋も含たれおいたす。



䟋


モゞュヌルの䜿甚ず䜜成の䟋は、りィゞェットを宣蚀する3぀の方法宣蚀的、プログラム、ロヌダヌの䜿甚のすべおに぀いお説明されおいたす。 しかし、実行および詊行できない䟋はほずんど関心がありたせん。 リファレンスガむドの各モゞュヌルのペヌゞには、自動テストのあるペヌゞぞのリンクが含たれおいたす。 ナヌザヌはテストの実行方法を確認でき、゜ヌスコヌドを芋るず、りィゞェットのすべおの機胜を瀺す䟋を芋るこずができたす。



サンドボックス





しかし、垞に自分で詊しおみたいず思うでしょう。 そしお、できれば、迅速か぀簡単に。 これを行うには、ほずんどの䟋を特別なサンドボックスで実行できたす。



サンドボックスを䜜成するずき、悪名高いjsfiddleプロゞェクトに觊発されたため、 apsfiddleず呌ばれたす 。 このように、ナヌザヌはHTML゚ディタヌ、CSS゚ディタヌ、JS゚ディタヌ、およびコヌド実行の結果の4぀の領域を䜿甚できたす画面の指定された領域ず新しいタブの䞡方で確認できたす。 コヌド゚ディタヌを䜜成するために、 CodeMirrorプロゞェクトを䜿甚したした。



サンドボックスにテキストを手動で入力するこずに加えお、ファむルをブラりザヌりィンドりにドラッグするだけで開くこずができたす。 ゚ディタヌは自動的にいっぱいになりたす。 埓来の方法でファむルを開くこずもできたす。



コラボレヌションには、 TogetherJSが䜿甚されたす。



線集者のサポヌト





自動補完


通垞、HTML + JSのサンドボックスを䜜成する開発者は、単玔な゚ディタヌず入力されたコヌドが実行されるフレヌムに限定されたす。 これは正しくないず考えおいたす。 サンドボックスに来た人はフレヌムワヌクAPIをよく知らないので、最倧限のヒントがなければ、ほずんど䜕もできないでしょう。 そのため、ツヌルチップを䜿甚しおスマヌトコヌド補完を実装したした。











オヌトコンプリヌトには、 Habrで既に説明したプロゞェクトTern が䜿甚されたす。 圌の䜜品では、圌はいく぀かの蟞曞を䜿甚しおいたす。 ECMA5およびJQueryのメ゜ッドずプロパティのディクショナリはプロゞェクト䜜成者によっお提䟛されたした; APS JS SDKオブゞェクトの堎合、ドキュメントに基づいおディクショナリが生成されたす。 これにより、゚ディタヌは、䜜成されたコンストラクタヌに基づいおオブゞェクトのメ゜ッドずプロパティをプロンプトするこずができたす。



 "MessageList":{ "!type":"fn(options: object)->!custom:MessageList_ctor", "prototype":{ "add":{ "!type": "fn(description: string, error: string)", "!doc": "added new message" }, ...
      
      







画面の4分の1以内で混雑するこずがよくあるので、すべおの゚ディタヌはフルスクリヌンモヌドをサポヌトしたす。このモヌドでは、通垞モヌドに入らずにホットキヌで画面を切り替えるこずができたす。



ホットキヌ


ホットキヌはapsfiddleを操䜜する重芁な芁玠です。 それらはすべおの機胜を耇補し、䞀郚の操䜜はそれらによっおのみ実行できたす。 これは、倚数のボタンで画面が乱雑にならないようにするためです。 ナヌザヌが䜿甚できるキヌの組み合わせをすぐに認識できるように、 apsfiddleを開くず、最初にキヌボヌドの組み合わせの完党なリストが衚瀺されたす。



システム

Ctrl + H-ヘルプ

Ctrl + O-ファむルのダりンロヌド

Ctrl + R-フィヌルドをクリア

Ctrl + Enter-開始

Ctrl + 1- HTML゚ディタヌにフォヌカス

Ctrl + 2 -CSS゚ディタヌにフォヌカス

Ctrl + 3 -JavaScript゚ディタヌにフォヌカス

F11-党画面切り替え

Esc-党画面モヌドを終了



党般

Ctrl + B-矎しいフォヌマットを䜜成

Ctrl + F-怜玢

Ctrl + K-コヌドブロックを最小化

Ctrl + / -コメント

Ctrl +スペヌス -コヌド補完



HTML

Ctrl + J-タグで切り替える



Javascript

Ctrl + I-タむプを衚瀺

Alt +。 -広告にゞャンプ

Alt +、 -ゞャンプバック



自動保存


偶発的なデヌタ損倱を防ぐため、入力されたコヌドは定期的にlocalStorageに保存されたす。 apsfiddleを再床開くず 、最埌に保存されたコヌドが゚ディタヌに眮き換えられたす。



ご泚意


サンドボックスを䜜成したずき、本栌的なクラりドIDEを開発するタスクを蚭定したせんでした。 たず、ナヌザヌがSDKを簡単に詊しお、提䟛された䟋に基づいおその操䜜方法をすばやく孊習できるプラットフォヌムが必芁でした。 そのため、たずえばCloud9などの倧芏暡プロゞェクトのコヌドは䜿甚したせんでした。



私たちのフレヌムワヌクで最もむンテリゞェントで䟿利なコヌド補完を䜜成するこずで、私たちは旅のたさに始たりに過ぎたせん。 珟圚、プラグむンの呜名芏則に準拠する必芁がありたす。たた、暗黙的な䜿甚䞭にプロパティ名を入力する方法もわかりたせん。 ぀たり コンストラクタヌぞの匕数であるオブゞェクトを宣蚀するずき、およびカプセル化メ゜ッドを呌び出すために、プロパティの名前を文字列ずしお指定するずき



簡単な芁玄



珟圚、 APS JS SDK



ここで説明されおいるすべおを詊すこずができたす 。 䞻なクラむアントは西郚にあり、サヌバヌはそこでホストされおいるため、apsfiddleの最初のダりンロヌドは長くなる可胜性がありたす。



䞀般的に、この蚘事はレビュヌであるこずが刀明したした。実装の詳现に興味がある堎合は、コメントで質問しおください。 䜕かに぀いお倚くの質問がある堎合は、別の蚘事で取り䞊げようずしたす。



この蚘事の著者は、ParallelsのTimur NizametdinovずEvgeny Uspenskyです。



All Articles