frejs_一个小而美的前端MVVM框架
frejs安装:
yarnaddfre-S
frejs使用:
import{observe,html,mount}from'./src'
functioncounter(){
constdata=observe({
count:0
})
returnhtml`
<div>
<h1>${data.count}</h1>
<buttononclick=${()=>{data.count++}}>+</button>
<buttononclick=${()=>{data.count--}}>-</button>
</div>
`
}
mount(html`<${counter}/>`,document.body)
Proxy:
constdata=observe({
count:0
})
会生成一个全递归的Proxy对象,会自动去observe,data更新会自动触发rerender,这个更新是准确
fre提供JSX-like的taggedtemplate语法,浏览器原生支持,无需编译
建议根据场景选择,webpack下JSX比较合适,浏览器环境肯定要taggedtemplate(如后端语言的模板引擎)
html`
<div>
<h1>${data.count}</h1>
<buttononclick=${()=>{data.count++}}>+</button>
<buttononclick=${()=>{data.count--}}>-</button>
</div>
`
和jsx一样,最终会被转换成h函数,进而生成vdomtree
总之,frejs性能不会差,可以粗略理解为vue的compile过程,如果使用jsx,将直接省略这个过程。