Javascript 使用备用DOM后端淘汰JS

Javascript 使用备用DOM后端淘汰JS,javascript,dom,knockout.js,Javascript,Dom,Knockout.js,我想为Knockout JS实现一个不同的非HTML DOM后端,可能是在一个非浏览器类型的环境中(可能是Node.JS)。具体地说,存在一个旧的、简单的、静态的UI框架,我想用DOM包装它,然后与Knockout一起使用。我知道Knockout本身至少能够在Node.js中运行,而无需浏览器环境(例如,请参阅),但我想知道我需要实现什么来创建一个完全不同的DOM 我是否可以用自己的实现覆盖一些DOM操作类 有DOM接口的概念吗 或者我可能需要用另一个ko.applyBindings等从头开始

我想为Knockout JS实现一个不同的非HTML DOM后端,可能是在一个非浏览器类型的环境中(可能是Node.JS)。具体地说,存在一个旧的、简单的、静态的UI框架,我想用DOM包装它,然后与Knockout一起使用。我知道Knockout本身至少能够在Node.js中运行,而无需浏览器环境(例如,请参阅),但我想知道我需要实现什么来创建一个完全不同的DOM

  • 我是否可以用自己的实现覆盖一些DOM操作类
  • 有DOM接口的概念吗
  • 或者我可能需要用另一个ko.applyBindings等从头开始做一些事情吗

我只是想弄清楚我对工作范围是最疯狂还是完全疯狂。

我认为可以通过使用自定义绑定()创建自定义元素()并扩展绑定语法()来做到这一点


然后您可能需要为UI中的每个元素创建一个customer元素、绑定和语法,我建议您创建一个包含元素信息的json文件,并允许使用json创建自定义元素,json链接到包含每个元素逻辑的小部件

我认为jsdom是您最好的起点。

我不太了解knockoutjs,但基于dom的框架的问题是,它们将html(文本)写入.innerHTML,浏览器为它们解析,然后取回dom。在后端,这需要很多额外的东西。似乎有utils.dom*源代码(例如utils.domManipulation的setHtml),但我试图理解dom延伸到的所有地方…我看到这被否决了-有人能解释为什么吗?不是我,但我能理解。您实际上是在说:“我想使用Knockout,但想用domdiff-like’s替换其中的50%(=绑定机制)。据我所知,可以使用
ko.bindingProvider.instance
(和其他util)修改Knockout绑定视图的方式,但是取消整个绑定机制听起来是不合理的。如果我认为这个问题和“我可以用一个ReaT.js DOM DIFF构建一个敲除叉”一样吗?是的,有很多工作要做。所以你“几乎疯了”=)这听起来很有趣。在节点内部使用类似jsdom的东西会有帮助吗?我一直在使用它来让jquery在服务器端工作;然而,我不认为它能解决查找DOM的“根”的问题——似乎有“文档”之类的内置内容。还有什么想法吗?