etpl的node包装器
JavaScript HTML
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
doc
test
.gitattributes
.npmignore
Readme.md
index.js
package.json

Readme.md

etpl-wrap etpl模板引擎的Node包装器

etpl-wrap用于包装etpl模板引擎,以便于在Node.js环境下使用。

etpl-wrap包装后,是独立的模板引擎,不依赖任何web框架,但又适用于任何框架。

详细使用文档

test目录下是一些测试代码及测试模板

为什么要包装etpl?

etpl是我用过的很出色的模板引擎,我想要的功能都有。

etpl本身是可以用在Node下的,但由于服务器环境和浏览器端天生不同,etpl更适合于浏览器端。

有些什么不同?

  1. 从后端语言的模板来讲,每个模板,一般就是一个文件,而不像浏览器端,需要显式的声明一个“模块”。如果接触后后端知识,比如JSP,就知道他们可以将几个模板文件互相include,组成想要的网页。

    而etpl受JS的天生限制,没有直接compile/render一个文件的能力

  2. 后端语言的模板文件,在不同目录下当然允许重名。如根目录root下有list.html,root/content下也能有list.html,这是非常正常的需求,而且两个文件明显应该是不同的。

    而在浏览器端,重名target是不允许的,要你自己规避target名称冲突的问题。

  3. 后端的模块是一个个文件,所以也就涉及到路径的问题。浏览器端没这个问题(虽然etpl支持把target name设为路径形式如:main/content/list,但这需要你自己命名)

  4. 由于文件之间天生独立的特性,所以在浏览器端,必要的target声明,在后端就不再需要的————每个模板文件就对应相应的target

使用方法

先安装etpl,再安装etpl-wrap,然后:

const ETPL = require('etpl-wrap');
let etpl = new ETPL('./views','.html')

new ETPL的参数依次是:模板文件根目录模板文件默认后缀名

此时就可以像在浏览器一样,使用etpl.render渲染对应模板了:

etpl.render('index', {
    title:'欢迎!',
    welcome:'非常欢迎你'
})

此代码即渲染了模板根目录下的index文件。

如果你要独立渲染子目录下的某模板,则:

etpl.render('content/list', data);

详细使用文档