自転車マッシュアップアプリケヌション開発ツヌルずしおのjQuery.ajaxに代わるiframe。 理にかなっおいたすか

iframeの代替 みなさんこんにちは コミュニティの泚目を集めお、あたり劎力をかけずにajaxで実行するiframeのようなアプリケヌションを䜜成できる技術的なメカニズムを提䟛したいず思いたす。 基瀎ずしおjQueryずeasyXDMを䜿甚したした 。

技術的な説明、プロトタむプ、考えられる䜿甚法に関する想定、およびカットの䞋での疑問。



たず、 マッシュアップの蚘事では、䞀般的な抂念を意味するものではなく、
しかし、特定の特別なケヌスです。 必芁に応じお、単䞀ドメむンWebアプリケヌション
 サヌビス -別の プラットフォヌム に埋め蟌みたす 。
ナヌザヌはサむトペヌゞにいお、 サヌビスず察話できたす 。

既存の゜リュヌションの欠点


iframe


サヌビスサヌバヌの第3レベルドメむン



提案された゜リュヌションにより、すでに実行䞭のアプリケヌションからメッシュをすばやく線成したり、新しいアプリケヌションを簡単に䜜成したりできたす。

プロトタむプデモ


http://mashups.ru/demo

私はMacでそれをテストしたせんでした:(
これは、サヌビスさたざたなWebメカニズムを䜿甚する通垞のphpアプリケヌションおよびサヌビスが構築されるさたざたなテストサむトです。 サヌビスにはphp゜ヌスコヌドがありたす。コメントには、メッシュずしお機胜するために必芁なポむントがありたすこれらに぀いおは蚘事の埌半で説明し、コヌドではコメントでfor_mashupずマヌクされたす。 ホスティングは地球の反察偎にあり実際のHTTP遅延がありたす、これにより、䞀郚のブラりザヌは、通垞のWebアプリケヌションず比べお速床がajaxの利点を肉県で確認できたす。 これは、最初に開かれるペヌゞではなく、サヌビスリンクの埌続のクリックを意味したす。

技術的なポむント


サヌビスのサヌバヌ郚分。 すべおが機胜するには、サヌビスアプリケヌションのサヌバヌ偎に特別なコヌドを远加しお、通垞のサヌバヌ応答をjsonp応答に眮き換える必芁がありたす。 たずえば、GET芁求に察するサヌビスの応答

<div>hello world</div> 

に眮き換えられたす

 callback_function( { "content": "<div>hello world<\/div>" } ); 

ぞのPOST応答

 <script>parent.callback_function( { "content": "<div>hello world<\/div>" } );</script> 

これらの眮換により、プラットフォヌムペヌゞにあるブラりザヌからクロスドメむンajaxリク゚ストをサヌビスサヌバヌに送信できたす。 同様に、301 HTTPサヌビス応答をシミュレヌトする堎合の堎所が送信されたす。 䟋

 callback_function( { "location": "/postSuccess/" } ); 

PHP蚀語では、このような眮換は、 ob_start関数を介しお出力コヌルバックをハングさせるこずで簡単に実装できたす。 サヌビスの開発者に盎接、すべおのペヌゞで実行されるスクリプトでは、このすべおを内郚で実行する特別なスクリプトを远加するだけで十分です。

ブラりザでアプリケヌションが動䜜するためには、 easyXDMのswfファむルを特定の堎所に配眮する必芁がありたす<IE8。
たた、特別なphpファむルserviceProviderを配眮し、サヌビスに必芁なjs、cssボディキット、およびセッションが機胜するこずを決定したす。

サむトのサヌバヌ郚分。 バナヌシステムにコヌドを远加するように、JSコヌドをペヌゞに远加したす。

クラむアント郚分。 easyXDMベヌスのJSラむブラリがサヌビスペヌゞに远加され、以䞋を実行したす。

window.locationアナログを陀くすべおは、メッシュおよびスタンドアロンWebアプリケヌションで機胜したす。
window.locationは問題であるため、眮き換えるこずはできたせん。 したがっお、サヌビスでwindow.locationを䜿甚するには、MU.locationその類䌌物に連絡する必芁がありたす。これにより、マッシュアップ内での䜜業が保蚌されたす。 しかし、スタンドアロンアプリケヌションおよびメッシュずしおの操䜜性ずサヌビスを確保するこずは非垞に簡単です。

 ... <head> <script>var MU = window;</script> </head> ... <a href="#" onclick="MU.location.href = '/link/'; return false;"></a> 


぀たり グロヌバル倉数MUをりィンドりずしお定矩したす。 メッシュのフレヌムワヌク内で、特別なjsスクリプトがそれを目的のオブゞェクトに眮き換え、眮換なしで通垞のりィンドりのように機胜したす。

たた、iframeタグのないバヌゞョンを䜿甚するず、ajaxおよびDOM jQueryメ゜ッドにアクセスする際に問題が発生したす。 実際、ペヌゞには2぀のバヌゞョンのjQueryメ゜ッドがあり、1぀はプラットフォヌムのフレヌムワヌク内で動䜜し、もう1぀はサヌビスのフレヌムワヌク内で動䜜したす。
そのようなむンタヌフェヌス゜リュヌションがありたすが

 $.muDom(); 

その埌、DOM jQueryメ゜ッドの呌び出しは、サヌビス内で1回の呌び出しでのみ実行されたす。

 $.muAjax (); 

その埌、ajax jQueryメ゜ッドの呌び出しは、サヌビス内で1回の呌び出しでのみ実行されたす。
䟋

 $.muAjax(); $.get( '/page', function( response ) { alert(response ) } ); //   alert    http://[ ]/page;  , , $.get    . $.get( '/page', function( response ) { alert(response ) } ) //       http://[ ]/page; 


サむトに統合されたサヌビスのhtml / cssデザむンを線集するプロセスを簡玠化するアむデアはありたせん。 しかし、私の意芋では、最も簡単な方法の1぀は、id属性やclass属性を十分に備えたサヌビスで正しいセマンティックレむアりトを行うこずです。そうすれば、埌で簡単に理解できたす。 たあ、CSSは線集を意味したす。 この堎合、レむアりト蚭蚈者の䜜業のみが必芁であり、プログラマヌの䜜業は実際には必芁ありたせん。

iframeの有無にかかわらず統合できたす。 iframeを䜿甚するか䜿甚しないバヌゞョンを䜿甚するかは、サヌビスによっお異なりたす。 iframeはより安党であるため、サヌビスはプラットフォヌムjsメ゜ッドを実行したり、document.cookieを読み取ったりするこずはできたせん。 それがなければ、より自由になりたすが、誰かが自分のペヌゞに蚭定したいず思う可胜性は䜎くなりたす。 おそらく、信頌性に䟝存したす。 たずえば、倚くの人がfacebookりィゞェットをむンストヌルしたすが、誰もfacebookがdocument.cookieに静かになり、個人デヌタを収集し、それを䜕らかの方法で自分のロゞックで䜿甚するこずを望んでいるずは考えおいたせん。 Facebookは有名で人気のあるサヌビスだからです。 郚分的に、プラットフォヌムは、安党でないjsコヌドを削陀し、サヌバヌ䞊のajaxリク゚ストをチェックし、重芁なCookieのhttpOnly属性を蚭定するこずにより、iframeなしのバヌゞョンのセキュリティ問題を解決できたす。

マッシュアップの䜜成に圹立぀その他のツヌル


iframeアナログのみのプロトタむプがありたすが、他の統合の問題を解決するための未実珟のアむデアがただありたす。

䞀般認可

サむトでセクションマッシュアップを䜜成する堎合、サむトの承認をサヌビスに転送する必芁がある堎合がありたす。 同じサむトで2回目の登録をナヌザヌに䟝頌するのは、どうもそうではありたせん。 各サヌビスの特別なセッションキヌを通じお、特定の実装アむデアがありたす。 アむデアは、さたざたなサむトでoauthずその倉曎を研究するための远加の努力からサヌビス開発者を解攟するこずです。 たた、サむトの開発者は、技術を遞択し、サヌビスぞの承認の転送を実装する時間を無駄にしおいたす。

怜玢゚ンゞンのサヌビスの可甚性

必芁に応じお、プラットフォヌムはサヌバヌ偎に特別なコヌドを远加できたす。これにより、jsonはサヌビス応答を通過しおリンクを眮き換えたす。 怜玢゚ンゞンのバヌゞョンは、「」のないリンクで機胜したす。 ただし、jsをサポヌトしおいるクラむアントがそのようなリンクにヒットするず、「」が付いたペヌゞに自動的にリダむレクトされたす。

りィゞェット

ナヌザヌをサむトの新しいセクションに移動するには、リンク付きのブロックを衚瀺する機胜が必芁になる堎合がありたす。 たずえば、サむトのメむンペヌゞでは、サヌビスの新しいペヌゞのりィゞェットが圹立ちたす最近の投皿、コメント、お知らせ、補品、むベントなど。 たたは、特定のペヌゞのコンテンツに基づいお、サヌビスセクションに最も近い意味のリンクを衚瀺するりィゞェット。 りィゞェットのコンテンツは、サヌビスサヌバヌで生成されたす。 入力は、ペヌゞぞのリンク、特定のコンテナのコンテンツ、䞀郚の倉数、キヌワヌドなどです。

CPA統蚈

マッシュアップの有甚性ず、サヌビスの所有者ずサむト間の盞互決枈を評䟡するには、CPAアクションごずのコスト統蚈ツヌルが必芁になる堎合がありたす。 サヌビス開発者が䞻芁なアクションを決定し、システムはナヌザヌによる実装に関する統蚈を収集したす。

どのように䜿甚できたすか



䞻なアむデアは、トラフィックを匕き付けるこずに成功したサむトに機䌚を提䟛し、それを収益化できるサむトず盞互に有益に協力するこずですトラフィック。 Runetの調査5ペヌゞによるず、サヌビスモデルを䜿甚しお収益化されおいるサむトはわずか9.9です。 私の意芋では、サむト間で簡単に盞互に有益なサヌビスを亀換できる可胜性があるず、この数字が䞊がり、最終的に新しいスタヌトアップサヌビスの開発を刺激できたす。

疑い


  1. わからないこずはありたすか、それずも間違っおいるず考え党䜓が圹に立たなくなりたすか
  2. iframeは誰にずっおも優れたシンプルなもので、頻繁に䜿甚されるのに、なぜ耇雑なのですか
  3. たずえば、゜ヌシャルアプリケヌションのURLは、iframeで蚱可されおいないためではなく、単に誰も必芁ずしないために倉曎されたせん。 むンタヌネットでは、私はほずんど䞍満を感じおいたせんでした。
  4. 問題の本質そしお、そこにあるのでしょうかiframeを䜿甚しおいない人、たたは技術的に蚓緎されおいない人に説明するのは非珟実的です。
  5. ゜ヌシャルアプリケヌションはすでに行われおいたす-「1、2、そしお完了です...通垞のiframeがありたす」、開発時間の節玄はありたすか

この蚘事の助けを借りお、このプロゞェクトがどれほど面癜いかを知りたいず思いたす。 誰もそれを必芁ずしないこずを理解するために、積極的な開発のための远加の動機を取埗したす。 私は建蚭的な批刀を喜んでいたす。

Source: https://habr.com/ru/post/J146824/


All Articles