A vDOM-less implementation of the snabbdom diffing logic.
futureNodes=domdiff(parentNode,// where changes happencurrentNodes,// Array of current items/nodesfutureNodes,// Array of future items/nodes (returned)getNode,// optional way to retrieve a node from an itembeforeNode// optional item/node to use as insertBefore delimiter);- via CDN, as global variable:
https://unpkg.com/domdiff - via ESM, as external module:
https://unpkg.com/domdiff/esm/index.js - via CJS:
const EventTarget = require('domdiff').default;( orrequire('domdiff/cjs').default) - via bundlers/transpilers:
import domdiff from 'domdiff';( orfrom 'domdiff/esm')
varnodes={a: document.createTextNode('a'),b: document.createTextNode('b'),c: document.createTextNode('c')};varparentNode=document.createElement('p');varchildNodes=[nodes.a,nodes.c];parentNode.append(...childNodes);parentNode.textContent;// "ac"childNodes=domdiff(parentNode,childNodes,[nodes.a,nodes.b,nodes.c]);parentNode.textContent;// "abc"Every. JavaScript. Engine.