Protovis vs D3.js
TLDR: herkes & D3.js hem protovis deneyime sahip ikisi arasındaki farkları aydınlatan Mu?
Son 2 haftadır protovis ile oynuyorum ve her şey çok güzeldi. Şimdi dışında animasyon ile bir tuğla duvar bir gem vurmak gibi görünüyor.
protovis: http://vis.stanford.edu/protovis/
Oldukça basit ama daha kolay daha geliyor protovis ile bazı animasyon yapmak istiyorum - protovis hiç animasyon için bir anlamı olduğunu düşünmeye başladım. Yani D3.js bakmaya başladım:
http://mbostock.github.com/d3/ex/stack.html
Çok benzer görünüyor, ama:
- Daha hafif görünüyor
- Diğer DOM elemanları ile etkileşim için tasarlanmış gibi SVG görünüyor
- Anlaşılan animasyonlar eklemek için tasarlanmış
Başka farklılıklar aydınlatabilir mi?
Her türlü giriş için çok minnettar olurum
CEVAP
Protovis ve D3 ile bir kaç şey ile çalışma adil bir miktar yaptım. Söz puan ek olarak, aşağıdaki farklılıkları benim için dikkat çekiyor bence
Nerede Protovis sağlar basitleştirilmiş bir soyutlama katmanı arasındaki görsel özellikleri olduğunu belirterek, D3 kullanan gerçek CSS ve DOM gözlük - yerine
.width(10)
.fillStyle('#00C')
....style('width', 10)
.attr('fill', '#00C')
. Bu örneklerde, fark oldukça saçmadır, ama SVG görüntüde bir çizgi gibi bir şey yaptığın zaman, büyük farklılıklar vardır. Sonucu kullanarak D3 hissedebilirsin, biraz daha alt seviyede - daha fazla kontrol, ama güzel olmak zorunda aşina SVG sözdizimi için bazı şeyler Protovis yapar çok daha kolay.Not olarak, Protovis tüm D3 DOM diğer parçaları kullanmak varken SVG işlenmiş. Bu, SVG tabanlı görsel öğeler gerektirmeyen görsel öğeler için, SVG desteklemeyen tarayıcılar bile D3 kullanabileceğiniz anlamına gelir. Ayrıca çok daha kolay şeyler için gerçekten güzel olan HTML entegre ve aynı görselleştirme SVG, metin (metin düzenleme ve düzeni Protovis oldukça zayıftır) ile ilgili gibi olacağı anlamına geliyor.
D3 veya ölçekler ve veri işleme gibi temel Protovis araçlardan bazı değişiklikler düşer.
.nest()
iki kütüphaneler arasında paylaştırılır gibi olsapv.sum()
pv.mean()
gibi temel kamu hizmetlerini D3 benzerleri yok tekrar tekrar rahatsız ediyorum.10/1/12 düzenleme:D3 veri yardımcı doldurdu ama hala Protovis birkaç içerir ve D3 değil, örneğin*, **7 8*pv.repeat
vardır. Muhtemelen daha az genellikle yararlı kabul edildi çünkü terk edildi.D3 asenkron istekler için yarar sağlar. Protovis bu istediğim zaman, ben genellikle harici bir kütüphane (jQuery gibi) kullanmak zorunda.
D3 API belgelerine
neredeyse tamamen eksik eksik, Protovis için oldukça detaylı dokümanlar ile karşılaştırıldığında.Düzenle (8/30/13): D3 şimdi bu noktada artık önemli değil 13 ** vardır.Son olarak, çok animasyon ile yapmadım, ama tamamen doğru - D3 sağlar Protovis daha fazla animasyon desteği, özellikle animasyonlu geçişler açısından olduğunu düşünüyorum. Protovis yeniden oluşturmak bazı veya tüm görselleştirme talep, ama yok destek için Atlama bir sınırlı süreli bir animasyon - sen kodu herkes tarafından el ile
setInterval
. D3 bu kütüphanenin çok daha ayrılmaz bir parçası gibi görünüyor.
Düzenle (7/12/11): Yeni büyük bir fark var gibi görünüyor - Haziran 28, 2011, Protovis etkin geliştirme altında artık, Protovis takım yerine D3.js bastırıyor. Son sürüm bu kullanmaya engel olmamalıdır oldukça kararlı, ama kesinlikle alınması gereken bir nokta.