Geçenlerde CodeIgniter'ı kullanarak bir AJAX ağır site tamamlanmış ve süreç içinde bir çok şey öğrendim. Bunlar öğrendiğim bazı şeyler (: Ben yapılan hataları okuyun) şunlardır:
Don't return html pages and json from the same method.
İlk bakışta bu bir böyle kurmak için iyi bir fikir gibi görünüyordu:
/ Denetleyici / yöntem / biçim
biçimi için varsayılan 'html' nerede. Fikir Ben o nesne için html sayfası göstermek ve bu nesne için json veri döndürmek / nesne / view / json gibi bir şey var / object / görüntüsü gibi bir şey olabilir, oldu.
Uygulamada bu işler çok dağınık hale getirir. Bunu çok daha karmaşık kod kılan tek bir yöntemle farklı işlevsellik bir sürü karıştırma sonunda. Tran.
Bunun yerine, ne şimdi ne uygulama / denetleyicileri altında bir 'api' alt ekleyin. Bu alt klasöre kontrolörler sadece json veri döndürebilir. Bu çok temiz.
Don't reimplement your templates in javascript
AJAX çağrısı yoluyla bir şeyler alınırken iki yaklaşım vardır. Sen kodlanmış veri çeşit (json, XML) iade ve sayfadaki doğru noktaya içine ekleyebilirsiniz. Yoksa html bir yığın işlemek ve sonra bir div yerde içine ekleyebilirsiniz.
Eğer veri rota, örneğin bir zaman dilimi ya da basit bir sırasız liste gibi çok basit biçimlendirme yapısı, sadık çalışın gidin. Benim durumumda, ben JSON kodlanmış bağlantılar bir dizi olarak sunucudan döndürüldü navigasyon belli bir parçası vardı.
Benim javascript sonra menü için doğru yapısında onları dışarı tükürmek. Menü daha karmaşık hale gelince benim senaryom bu karmaşıklığı dahil. Şimdi o menü için biçimlendirme CI şablonları yanı sıra javascript yineleniyor.
Bu durumda sunucu yerine istemci üzerindeki verilerden inşa çalışırken menü biçimlendirme içeren html bir yığın geri dönmek için daha iyi olurdu.
Use AJAX sparingly/carefully/only as needed
Eğer akıllıca AJAX istekleri ile bazı sunucu kaynaklarını kaydedebilirsiniz. Eğer kapılmak Ancak, (* coughlikemecough *) hızla kullanıcı eylem başına birkaç AJAX istekleri çalıştıran kendinizi bulabilirsiniz. Her istek havai payına sahip ve bu yükü yalnızca gerekli kaynakları isteyen bir fayda inkâr edecek gibi bu bir performans açısından genellikle kötüdür.
Bir arabirim öğesi tıklayarak ne oluyor hakkında sert düşünmek için bir kırmızı bayrak birden fazla AJAX isteği tetikler bulursanız. Sen parası olmadan karmaşıklık yaratıyor olabilir.
JSON encoding is nice
Sen json_encode yapabilirsiniz (bir veritabanı sorgu) sonuçları ve bu sizin komut ile çalışabilirsiniz gerçekten güzel nesneleri oluşturmak olacaktır. Sözdizimi temiz ve CodeIgniter'ın db fonksiyonları dönmek sonuçları ile iyi çalışır.
Bunu yararlı bazılarını bulabilirsiniz umuyoruz. Her zaman daha iyi birisi else's hatalar öğrenebilirsiniz zaman! :)