ecomfe / etpl

ETPL是一个强复用、灵活、高性能的JavaScript模板引擎,适用于浏览器端或Node环境中视图的生成。
http://ecomfe.github.io/etpl/
BSD 3-Clause "New" or "Revised" License
496 stars 96 forks source link

如何在 express 上使用 etpl? #63

Open yozman opened 9 years ago

yozman commented 9 years ago

app.set('view engine', 'etpl'); 没有用啊, 能否开发适配 express 的版本?

treelite commented 9 years ago

etpl 的 express 插件在开发计划中~ 如果目前情况下需要在 express 中使用 etpl 的话,可以考虑先手动调用 etpl.compile 然后 res.end(etpl.render(target)) 的方式来渲染

yozman commented 9 years ago

http://expressjs.com/advanced/developing-template-engines.html

根据 express 文档编写的

/***
 *  编写模块
 *  /service/etpl.js
 */

var ET = require('etpl');
var FS = require('fs');

// 模板引擎初始化
exports.init = function ( EXP ) {

    // 扩展模板引擎
    EXP.engine('etpl', function (filePath, options, callback) {
        FS.readFile(filePath, function (err, content) {
            if (err) return callback(new Error(err));
            var render = ET.compile(content.toString());
            return callback(null, render(options));
        });
    });

    // 返回渲染文件后缀
    return 'etpl';
}

/***
 *  引用模块
 *  /app.js
 */

var EXP = require('express');
var ETpl = require('./service/etpl');
var app = EXP();

// 设置模板引擎
app.set('view engine', ETpl.init(app) );

...

// 启动服务器
app.listen(3000);
treelite commented 9 years ago

赞~

不过要使用完整的 etpl 功能,比如 母版 的话 简单的编译单个模版文件还不成 还需要考虑额外的模版引入,另外每个模版之间的隔离问题也需要考虑下(不然可能 target 会有重复)

tower1229 commented 7 years ago

这个需求还开不开发啦?

otakustay commented 7 years ago

最新版的etpl已经有node端渲染的支持,直接自己封装一下用呗?