Ajax geri aramasının en hızlı yöntemi / uygulaması nedir?


18

Çeşitli / sayısız harita olaylarına işaretleri ile ajax yükleyen bir harita var. Şu anda, öğem için hook_menu()json / js yazdıran özel bir sayfa geri araması tanımladım .

Sayfa geri aramam herhangi bir içerik döndürmediği ve yalnızca içerik yazdırdığı için Drupal tam şablonu, menüyü vb. Oluşturmaz ve bu nedenle yalnızca JavaScript'imle bir sayfa döndürmeme izin verir .

Bu işe yarıyor olsa da, Drupal'ın hala tamamen önyükleme yaptığına inanıyorum, bu da düşürmek istediğim çok fazla ek yük oluşturduğu anlamına geliyor.

Ben baktığımız Yüksek performanslı JavaScript geri arama işleyicisi Kısacası, "Yüksek performanslı JavaScript geri arama işleyicisi" ve hangi olarak kendini sahiptir, bakışlar bir sunmaktadır sanki js.phpiltifat etmek index.phpve özelleştirmek / sınıra isteklerinizi yönlendirmek için / önyükleme Drupal varsayılan olarak yapar optimize.

Ne yazık ki js projesinin henüz bir D7 sürümü yok ( burada bir dilekçe ), bu da bizi başlangıca götürüyor ...

Drupal'da bir Ajax geri çağrısı yapmanın en hızlı yolu nedir?

Yanıtlar:


8

Öğem için hook_menu()json / js yazdıran özel bir sayfa geri araması tanımlarım .

Drupal 6'nın sunduğu şey buydu. Drupal 7 AJAX çerçeve daha bundan biraz yapabilirsiniz. Evet Drupal önyükleme yapıyor, ancak aynı zamanda birçok özellik sunuyor. Kısacası ajax_deliver () yöntemini sayfa teslim yöntemi olarak kullanabilir ve tarayıcıya komutlar gönderebilirsiniz.

... Ajax, düğmelere ve bağlantılara sınıflar eklenerek etkinleştirilebilir. Bir bağlantıya 'use-ajax' sınıfı eklenirse, bağlantı bir Ajax çağrısı yoluyla yüklenir. Bu yöntemi kullanırken, bağlantının href'i yolun bir parçası olarak '/ nojs /' içerebilir. Ajax çerçevesi istekte bulunduğunda, bunu '/ ajax /' biçimine dönüştürür. Sunucu daha sonra bu isteğin gerçek bir Ajax isteği yoluyla mı yoksa bozulmuş bir durumda mı yapıldığını kolayca söyleyebilir ve uygun şekilde yanıt verebilir.

Performans nedeniyle çerçeve sidestep istiyorsanız Ancak o zaman doğrudan javascript modülünden php dosyaları çağırmak durdurmak için hiçbir şey yoktur. Drupal iyiliği elde edemezsiniz, ancak sayfa üzerinde de tam kontrole sahip olursunuz.


Teşekkürler! Performansı ne olursa olsun gerçekten Ajax Framework kullanıyorum (şimdi biliyorum) b / c ajax sayfa istek sürecinde herhangi bir gelişme büyük olasılıkla bu bağlamda gerçekleşecek :)
electblake

2
Örnek modüllere bir göz atın, çok yardımcı olacaklar, çerçeve formlara yönelik ancak her yerde kullanılabilir. Cevabımı 'use-ajax' sınıfı hakkında biraz düzenledim.
Jeremy French

3
PHP dosyalarını doğrudan çağırmak bazen iyidir. Bu dosyanın bile bootstrap.inc'i içermesini ve ardından api.drupal.org/api/drupal/includes--bootstrap.inc/function/… ' yı ihtiyacınız olan belirli bir seviyeye çağırabilirsiniz .
greggles

4

Biraz geç, ancak özellikle yoklama için bu ajax geri aramasını kullanıyorsanız (örneğin yeni mesajları kontrol edin) ilginç bir alternatif var: Drupal node.js entegrasyonu .

Yoklama yerine, kullanıcıların (sayfalarındaki JS olarak da bilinir) node.js sunucunuzla açık bir bağlantı kurduğu, etkinlik benzeri bir sistem oluşturmanıza olanak tanır. Bir şey olursa, node.js ile tüm kullanıcıları doğrudan bilgilendirebilirsiniz.


Harika öneriler için asla geç değil - bu tür bir şey için node.js kullanmayı bile düşünmedim ama aniden mantıklı geliyor, teşekkürler!
Electblake

3

Drupal'da bir Ajax geri çağrısı uygulamak istediğinizden , JS modülünü kullanmak iyi bir bahis gibi görünüyor. Ben sadece koda hızlı bir göz attım ve temelde ne önerebilirim (ama ayrıntılara çok daha fazla dikkat). Bakımcı da Drupal'ın en iyi geliştiricilerinden biridir.

Kullanmak gerekecek gibi görünüyor module_load_include()belki bir daha manuel veya include 'sites/all/modules/contrib/...';diğer modüllerden API'leri kullanmanız gerekiyorsa yaklaşım.

Bahsettiğiniz sorun son zamanlarda gündemde olan bir konu oldu. Dries açış DrupalCon Chicago'dan anlattı nasıl yapıyor geri aramaları ve HTML dışı çıkış biçimleri için Drupal 8 ihtiyaçları daha iyi API'leri.


Yani, kısaca - JS.php & do / project / js? D7 sürümü için sayı que'de dilekçe vermeye başlayacağım. Video için teşekkürler!
electblake

Evet, JS projesi henüz D7'ye taşınmamış gerçek bir utanç. Onun utanç verici bir hafif sayfa isteği almak çok zor.
Matt Collins
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.