Git Product home page Git Product logo

node-etpl's Introduction

node-etpl

etpl Node.js渲染模块。支持Node.js端渲染,基于模板文件进行渲染,支持按需加载和缓存模板文件。

Node.js version >= 8.0.0

安装和初始化

安装

npm install node-etpl

初始化和使用

const nodeEtpl = require('node-etpl');

// 初始化配置
nodeEtpl.configure({
    baseDir: './views' // 模板根目录
});

// 渲染
nodeEtpl.render('page/index', {name: 'etpl'});
nodeEtpl.renderString('#{name}', {name: 'etpl'});

API

configure

// 初始化配置(默认)
nodeEtpl.configure({
    baseDir: './views', // 模板根目录
    cacheable: true, // 是否缓存模板编译结果
    ext: '.tpl', // 模板扩展名
    // filters,过滤器
    filters: {
        jsonEncode
    },
    // etplOptions, 详见 etpl
    options: {
        commandOpen: '{%',
        commandClose: '%}',
        variableOpen: '#{',
        variableClose: '}',
        strip: true
    }
});

render

let str = nodeEtpl.render('page/index', {
    // data object
});

renderString

let str = nodeEtpl.renderString('#{name}', {
    // data object
    name: 'etpl'
});
// etpl

precompile

nodeEtpl.precompile().then(loader => {
    loader.render('page/index', {
        // data object
    });
});

注意:precompile为异步方法

扩展指令

支持2个扩展指令,@extend@import,在预编译时翻译为etpl支持的模板指令。

注意: 若使用@extend@import,则不需要在文件头声明target名称,会自动添加target,并且自动加载依赖。

在模板中声明的etpltarget不会被node-etpl解析和加载,若要完成etpltarget自动加载工作, 需使用etpl原生的loadloadFromFile方法。

继承模板:@extend

当前模板路径为:page/index.tpl

{%@extend: base/base%}

// or
{%@extend: base/base.tpl%}

// or `:`可省略
{%@extend ../base%}

将会翻译为:

{%target:page/index.tpl(master=base/base.tpl)%}

引入模板:@import

当前模板路径为:page/index.tpl

{%@import: base/base.tpl%}

or
{%@import: base/base%}

// or `:`可省略
{%@import ../base%}

将会翻译为:

{%import:base/base.tpl%}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.