52 lines
1.1 KiB
Markdown
52 lines
1.1 KiB
Markdown
|
# 🤏 micromorph
|
||
|
|
||
|
A very tiny library for diffing live DOM nodes.
|
||
|
|
||
|
Extremely handy when used in conjunction with the [`DOMParser`](https://developer.mozilla.org/en-US/docs/Web/API/DOMParser) API.
|
||
|
|
||
|
---
|
||
|
|
||
|
## Use Cases
|
||
|
|
||
|
#### Want to update one node to match another?
|
||
|
|
||
|
Diff them efficiently and only sync changes between the two nodes.
|
||
|
|
||
|
```js
|
||
|
import diff from 'micromorph';
|
||
|
|
||
|
diff(fromNode, toNode);
|
||
|
```
|
||
|
|
||
|
#### Want to update the current `document` to match a new `document`, maybe from a string?
|
||
|
|
||
|
Micromorph is smart enough to handle full document diffing while avoiding FOUC.
|
||
|
|
||
|
```js
|
||
|
import diff from 'micromorph';
|
||
|
const p = new DOMParser();
|
||
|
|
||
|
const newDoc = p.parseFromString(`<h1>Hello world!</h1>`, 'text/html');
|
||
|
|
||
|
diff(document, newDoc);
|
||
|
```
|
||
|
|
||
|
#### Want to turn your MPA into an SPA?
|
||
|
|
||
|
With the `/nav` entrypoint, Micromorph automatically converts your MPA into a SPA while only re-rendering content that has changed.
|
||
|
|
||
|
```js
|
||
|
import listen from 'micromorph/nav';
|
||
|
|
||
|
listen();
|
||
|
```
|
||
|
|
||
|
For browsers that don't support the `Navigation` API, the `/spa` entrypoint can be used.
|
||
|
|
||
|
|
||
|
```js
|
||
|
import listen from 'micromorph/spa';
|
||
|
|
||
|
listen();
|
||
|
```
|