# jsTmpl **Repository Path**: mirrors_singod/jsTmpl ## Basic Information - **Project Name**: jsTmpl - **Description**: 原生 Javascript 模板与组件引擎 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-09-25 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README jsTmpl - 原生 Javascript 模板与组件引擎 == 引擎介绍 -- jsTmpl 是一套用法极为简单,体积极为轻巧,功能极为明确的 JavaScript 模板与组件引擎。它可以对页面中出现的“同结构同布局”的部分进行模板绑定或组件绑定,之后只需要传入数据即可生成指定的内容,无需书写大量的重复 HTML 代码。非常适合用于简化页面中包含大量重复结构的情况。在进行模板或组件绑定后,相应结构只需要设置一次就可以任意调用,之后只需要关注实际数据即可,极大地简化了 HTML 结构的复杂度。 * 兼容情况:IE9+, Firefox3.6+, Safari6.0+, Chrome8.0+ * 更新日期:2017-06-12 * 当前版本:2.0.1 * 源码下载:[下载](http://jstmpl.applinzi.com/download/jsTmpl-2.0.1.zip) * 官方网址:[jsTmpl 官网](http://jstmpl.applinzi.com/)
功能模块 -- * 模板功能:jsTmpl.`template`(elem, data); * 组件功能:jsTmpl.`component`(name, param); * 替换功能:jsTmpl.`replace`(name, param);
使用方法 -- (一)模板功能:jsTmpl.`template`(elem, data); * elem : 目标元素。模板所进行的所有数据操作都将发生在此目标元素的后代元素中 ( string 类型,且必须传入合法的 css 选择器 ); * data : 数据内容。用来存储所有数据,可为同一模板设置多组不同的数据 ( object 类型 )。 #### 方法说明 1. 目标元素必须包含 js-data 属性并赋值,用来标明此模板所引用的整体数据源(object 类型); 2. 需要遍历循环的元素,必须在其父元素上添加 js-each 属性并赋值,用来标明此循环操作所引用的内部数据源(array 类型); 3. 所有数据变量必须用 {{ }} 分隔符包裹。 ```html

{{ mainTitle }}

{{ subTitle }}

{{ mainTitle }}

{{ subTitle }}

``` (二)组件功能:jsTmpl.`component`(name, param); * name : 组件名称。设置当前所定义的组件的名称 ( string 类型 ); * param : 参数集合。用来存储模板,数据和事件 ( object 类型 )。 #### 方法说明 1. name 用来定义组件名称; 2. param 中只能包含 template / data / event 这三个属性; 3. template 定义模板内容(任何情况下,模板内的结构必须有一个最外层的包裹层,相当于有一个“外壳”包裹着组件结构,并且不能将 js-each 和 js-event 绑定到这个“外壳”上,它仅仅只起到一个包裹的作用,不参与任何函数方法。); 4. data 定义数据源; 5. event 绑定的事件集合; 6. template 定义的模板中,需要遍历循环的元素,在其父元素上添加 js-each 属性并加上对应的数据源作为属性值; 7. template 定义的模板中,需要添加事件的元素,在其标签内部添加 js-event 属性,属性值与 event 参数中的属性相对应; 8. 所有数据变量必须用 {{ }} 分隔符包裹; 9. 组件通过特殊标签 js-tmpl 引入,标签内部需要设置 type="component" name="组件名称" data="数据源"。 ```html ``` (三)替换功能:jsTmpl.`replace`(name, param); jsTmpl 还提供了一个超简单的基础型的组件功能,其用法和功能极为简单,就是“同名变量绑定同名属性的值”,其实就是做内容替换。 * name : 组件名称。设置当前所定义的组件的名称 ( string 类型 ); * param : 参数集合。用来存储模板和数据 ( object 类型 )。 #### 方法说明 1. name 用来定义组件名称; 2. param 中只有 template 属性; 3. template 定义模板内容; 4. template 定义的模板中,所绑定的变量就是 js-tmpl 标签中的相对应的属性; 5. 所有数据变量必须用 {{ }} 分隔符包裹; 6. 组件通过特殊标签 js-tmpl 引入,标签内部需要设置 type="replace" name="组件名称"。 ```html ``` 注意要点 -- * \ 标签不要随意乱加属性,除必填的属性外,最好不要再加入多余的属性; * \ 标签内部不要加入任何内容,jsTmpl 引擎在运行时会进行强制清空操作,内部的所有内容将会被完全删除; * \ 标签必须设置 type 和 name 属性; * 所有绑定的变量必须用双大括号分隔符 {{ }} 进行包裹; * jsTmpl 中的所有方法一定要保证 DOM 结构绘制完成后才能设置调用,否则会报错并导致其他问题; * jsTmpl 引擎并非适用于任何情况,请根据开发的实际状况符合度来合理使用。 更新历史 -- * v2.0.0 ( 将之前的版本完全进行了重写,内部结构和功能的变化都很大,并兼容到了 ie9+ ) * v2.0.1 ( 修复 component 方法中的事件绑定功能在单元素上无效的问题 )