Skip to content

Nightscratch/reactivity-template-js

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reactivity-template-js

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 ++

About

Javascript reactive template framework

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published