JavaScript 响应式模板引擎
English documents(机翻的,可能有错)
js-template 可以用js生成 HTML 页面。而且非常小,不到1K。并且支持响应式
请先安装rollup.js
cd reactivity-template-js
npm install
npm run build
npm i reactivity-template
引入
import compile from 'reactivity-template'
或在html文件中直接引入iife
<script src="./dist/templatejs.iife.js"></script>
一个demo,在id="demo"的div里是模板,然后通过 template.compile 编译。(该示例在 index.html 里)
<div id="demo">
<p>Hello <%= name %></p>
<% if (!login) { %>
<p>请登录</p>
<% } %>
</div>
<script>
let demo_template = template.compile('demo')
document.getElementById('demo').innerHTML = demo_template({
name:'saobby',
login:true
})
</script>
或
import compile from 'reactivity-template'
let demo_template = compile('demo')
document.getElementById('demo').innerHTML = demo_template({
name: 'saobby',
login: true
})
template-js 有两种标签,分别是<% %>
与 <%= %>
<%= %>
: 输出数据到模板
<% %>
: 脚本标签,可以执行Js
有时在数据更改时调用渲染有点麻烦,所以你可以使用响应式让templateJS来监测数据的改变并重新渲染。
只需要在template.compile 里加上 reactive=true 即可使用响应式
<div id="demo">
<p>Hello <%= name %></p>
<% if (!login) { %>
<p>请登录</p>
<% } %>
<%= time %>
</div>
<script>
let data = {
name:'saobby',
login:true,
time:0,
}
data = template.compile('demo',data,reactive=true);
setInterval(()=>{
data.time ++
},1000)
</script>
以上代码的template.compile
返回了一个Proxy,当data值改变时重新渲染。
若你想获取整个data
值的话请使用data.value
。否则请用data.key
若你想要赋值整个data
的话请data.value = {...}
但是只想修改它的属性的话可以直接data.key = ...
修改。比如上面的代码修改data的time就可以直接data.time ++