snabbdom DEMO
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<script src="https://cdn.bootcss.com/snabbdom/0.7.2/snabbdom.min.js"></script>
<script src="https://cdn.bootcss.com/snabbdom/0.7.2/snabbdom-class.min.js"></script>
<script src="https://cdn.bootcss.com/snabbdom/0.7.2/snabbdom-props.min.js"></script>
<script src="https://cdn.bootcss.com/snabbdom/0.7.2/snabbdom-style.min.js"></script>
<script src="https://cdn.bootcss.com/snabbdom/0.7.2/snabbdom-eventlisteners.min.js"></script>
<script src="https://cdn.bootcss.com/snabbdom/0.7.2/h.min.js"></script>
<body>
<button id="change">更改</button>
<div id="container"></div>
</body>
<script>
var snabbdom = window.snabbdom
//定义patch
var patch = snabbdom.init([
snabbdom_class,
snabbdom_props,
snabbdom_style,
snabbdom_eventlisteners
])
//定义 h
var h = snabbdom.h
var container = document.getElementById('container')
//生成vnode
var vnode = h('ul#list',{},[
h('li.item',{},'item1'),
h('li.item',{},'item2'),
])
patch(container,vnode)
document.getElementById('change').addEventListener('click',function (argument) {
//生成 new vnode
var newVnode = h('ul#list',{},[
h('li.item',{},'item1'),
h('li.item',{},'itemb'),
h('li.item',{},'itemc'),
])
//对比出差异 根据差异进行渲染
patch(vnode,newVnode)
})
</script>
</html>最后更新于