2015-07-01 12 views
21

Tarayıcı dışı bir ortam türü (büyük olasılıkla Node.js) olması muhtemel, Knockout JS için farklı bir HTML olmayan DOM arka uç uygulamak istiyorum. Özellikle, bir DOM ile sarmak ve sonra Knockout ile kullanmak istiyorum eski, basit, statik UI framework var. Knockout'un en azından bir tarayıcı ortamı olmadan Node.js içinde çalışabildiğini anlıyorum (bkz. Örneğin here), ancak tamamen farklı bir DOM oluşturmak için ne yapmam gerektiğini merak ediyorum.Knockout JS with Alternate DOM Backend

  • Birkaç DOM manipülasyon sınıfını kendi uygulamalarımla geçersiz kılabileceğim bir şey mi?
  • DOM arabirimiyle ilgili herhangi bir fikir var mı?
  • Veya bir alternatif ko.applyBindings vb. Ile bir şeyleri yapmak zorunda mıyım?

Sadece işin kapsamı açısından çılgın veya tamamen çılgın olduğumu anlamaya çalışıyorum.

+0

Gerçekten knockoutjs bilmiyorum ama dom tabanlı çerçeveler ile sorun onlar .innerHTML içine metin (metin olarak), onlar için ayrıştırmak ve geri DOM almak için html olduğunu bilmiyorum. arka planda çok fazla ekstra şeye ihtiyaç var. – YOU

+0

utils.dom * kaynakları var gibi görünüyor (örn. Utils.domManipulation's setHtml) ancak DOM'ın kendi alanlarına ulaştığı tüm yerleri anlamaya çalışıyorum ... –

+0

Düşündüm de bunun bir nedeni var. ? –

cevap

1

Sana bağlama sözdizimi özel bağları ile özel öğeleri (http://knockoutjs.com/documentation/component-custom-elements.html) (http://knockoutjs.com/documentation/custom-bindings-for-virtual-elements.html) oluşturma ve uzatarak bu yapabileceğini düşünüyorum Muhtemelen o zaman her bağlayıcı ve sözdizimi, bir müşteri elemanı oluşturması gerekecektir (http://knockoutjs.com/documentation/binding-preprocessing.html)

UI'nizdeki eleman, eleman bilgisi içeren bir json dosyası oluşturarak ve json kullanarak özel elemanların oluşturulmasına izin vererek, jsonun her eleman için mantığı içeren bir widget'a bağlanmasını öneririm.

+0

Bu, DOM'u istediğim şekilde genişletmek için ilginç bir yaklaşım olabileceğini düşünüyorum; bununla birlikte, DOM'un DOM'un "kökünü" bularak çözeceğini sanmıyorum - "belge. ???" gibi şeyler var gibi görünüyor. yerleşik. Bunun hakkında başka düşüncelerin var mı? –

0

Bence jsdom en iyi başlangıç ​​noktanızdır.