it-swarm-eu.dev

Jaká je nejrychlejší metoda / implementace pro zpětné volání Ajax?

Mám mapu, která načte značky přes ajax na různé/četné mapové události. V současné době definuji vlastní zpětné volání stránky pro svou položku hook_menu(), která tiskne moje json/js.

Protože zpětné volání mé stránky nevrací žádný obsah a vytiskne pouze obsah, Drupal nevykreslí celou šablonu, nabídku atd., A tak mi umožňuje vrátit stránku s pouze mým JavaScriptem.

Ačkoli to funguje, věřím, že Drupal stále plně bootstrapping, což znamená, že přidává mnoho režijních nákladů, které bych chtěl zahodit).

Díval jsem se na Vysoce výkonný obslužný program pro zpětné volání JavaScript , který se chlubí jako "Vysoce výkonný obslužný program pro zpětné volání JavaScriptu" a který zkrátka vypadá, jako by nabízí js.php poklonu index.php pro nasměrování vašich požadavků a přizpůsobení/omezení/optimalizaci bootstrapping Drupal dělá.

Bohužel projekt js zatím nemá vydání D7 ( petice za t ), což nás vede na začátek ... =

Jaký je nejrychlejší způsob implementace zpětného volání Ajax v Drupalu?

18
electblake

Pro svou položku hook_menu() definuji vlastní zpětné volání stránky, které vytiskne můj json/js.

To je to, co Drupal 6). Drupal 7 AJAX framework může udělat něco víc než to. Ano, zavazuje Drupala, ale také poskytuje spoustu funkcí zdarma. Zkrátka můžete použít ajax_deliver () jako způsob doručování stránky a odesílat příkazy do prohlížeče.

... Ajax může být aktivován přidáním tříd do tlačítek a odkazů. Přidáním třídy 'use-ajax' do odkazu bude odkaz načten prostřednictvím volání Ajax. Při použití této metody může href odkazu obsahovat '/ nojs /' jako součást cesty. Když rámec Ajax podá požadavek, převede jej na '/ ajax /'. Server je pak schopen snadno zjistit, zda byl tento požadavek učiněn prostřednictvím skutečného požadavku Ajaxu nebo v degradovaném stavu, a odpovídajícím způsobem reagovat.

Pokud se však chcete z výkonových důvodů zbavit rámce, není co zastavit, abyste volali php soubory v modulu přímo z javascriptu. Získáte ne Drupal dobrota), ale také budete mít úplnou kontrolu nad stránkou.

8
Jeremy French

Trochu pozdě, ale zejména pokud používáte zpětné volání ajaxu pro dotazování (například zkontrolujte nové zprávy), existuje zajímavá alternativa: integrace Drupalu node.js .

Namísto dotazování vám umožňuje vytvořit systém podobný událostem, kde uživatelé (aka JS na jejich stránce) udržují otevřené připojení k vašemu serveru node.js. Pokud se něco stane, můžete přímo informovat všechny uživatele prostřednictvím node.js.

4
Berdir

Protože chcete implementovat zpětné volání Ajax v Drupalu , vypadá modul JS jako dobrá sázka. Prostě jsem se krátce podíval na kód a v podstatě jsem to navrhl (ale s mnohem větší pozorností na podrobnosti). Správce je jedním z nejlepších vývojářů Drupal).

Vypadá to, že budete muset použít module_load_include() nebo snad více manuální include 'sites/all/modules/contrib/...'; přístupu, pokud potřebujete použít API z jiných modulů.

Samotný problém, o kterém mluvíte, byl v poslední době žhavé téma. Driesova hlavní myšlenka od DrupalCon Chicago mluvil o tom, jak Drupal 8 potřebuje lepší API pro provádění zpětných volání a výstupních formátů bez HTML.

3
Adam DiCarlo