2.4.2 • Published 4 months ago

mm_tpl v2.4.2

Weekly downloads
6
License
ISC
Repository
github
Last release
4 months ago

mm_tpl

这是超级美眉模板帮助类模块,用于MVC模式下的视图渲染。基于art-template模板引擎,提供了更强大的模板渲染功能。

安装

npm install mm_tpl

基本使用

1. 初始化模板引擎

const Tpl = require('mm_tpl');
const tpl = new Tpl({
    // 可选配置参数
    root: process.cwd(),           // 根目录
    default_dir: "./template/",    // 默认模板目录
    default_theme: 'default',      // 默认主题
    extname: ".html",             // 模板文件扩展名
    cache_root: './cache',        // 缓存目录
    cache_extname: '.cache.html'  // 缓存文件扩展名
});

2. 基础模板渲染

// 简单变量替换
const result = tpl.render("<div>${message}</div>", {
    message: "Hello World"
});

// 输出: <div>Hello World</div>

3. 循环渲染

// 数组循环
const arrayResult = tpl.render(`
    <ul>
        ${loop arr value idx}
            <li>${idx}: ${value}</li>
        ${/loop}
    </ul>
`, { 
    arr: [123, 234] 
});

// 对象循环
const objectResult = tpl.render(`
    <dl>
        ${loop obj value key}
            <dt>${key}</dt>
            <dd>${value}</dd>
        ${/loop}
    </dl>
`, { 
    obj: { name: "张三", age: 25 } 
});

4. 视图渲染

// 设置全局变量
$.globalBag.siteName = "我的网站";

// 设置视图变量
tpl.viewBag.title = "首页";

// 渲染视图文件
const html = tpl.view("./views/index.html", {
    user: { name: "张三" }
});

5. 缓存机制

// 使用缓存渲染视图
const html = tpl.view("./views/page", {
    data: someData
}, {
    cache: true,                // 是否使用缓存
    cache_filename: "./cache"   // 缓存文件名
});

// 清除指定目录的缓存
tpl.clear_cache('./views/mall');

6. 钩子系统

添加函数钩子

$.hook.addFunc('list', async function(viewBag, req, type) {
    // 处理列表逻辑
    return someData;
});

添加动作钩子

$.hook.addAction('header', function(viewBag, param) {
    return "<header>网站头部</header>";
}, 1, "headerAction");

添加过滤器钩子

$.hook.addFilter('content', function(viewBag, content, param) {
    return content.replace("旧文本", "新文本");
}, 1, "contentFilter");

使用钩子

// 运行函数钩子
await tpl.runFunc('list', {
    query: { page: 1 }
}, 'article');

// 在模板中使用动作钩子
${hook_action('header')}

// 在模板中使用过滤器钩子
${hook_filter('content', '原始内容')}

高级特性

1. 主题支持

// 设置当前主题
tpl.current_theme = "dark";

2. 模板规则

模块内置支持多种模板规则,包括:

  • nativeRule: 原生语法规则
  • artRule: art-template语法规则
  • htmlRule: HTML注释语法规则
  • jsRule: JavaScript语法规则
  • pyRule: Python风格语法规则

3. 错误处理

const html = tpl.view("./template.html", data);
if (tpl.error) {
    console.error("渲染错误:", tpl.error);
}

注意事项

  1. 确保模板目录具有正确的读写权限
  2. 使用缓存时注意及时清理过期缓存
  3. 钩子的优先级数值越小,执行顺序越靠前
  4. 建议在生产环境开启模板缓存以提高性能

许可证

MIT

2.4.1

4 months ago

2.4.0

4 months ago

2.4.2

4 months ago

2.3.9

9 months ago

2.3.0

12 months ago

2.3.2

11 months ago

2.3.4

11 months ago

2.3.3

11 months ago

2.3.6

11 months ago

2.2.7

1 year ago

2.3.5

11 months ago

2.2.6

1 year ago

2.3.8

11 months ago

2.2.9

1 year ago

2.3.7

11 months ago

2.2.8

1 year ago

2.2.5

2 years ago

2.2.4

2 years ago

2.2.1

2 years ago

2.2.0

2 years ago

2.2.3

2 years ago

2.2.2

2 years ago

2.1.6

2 years ago

2.1.5

2 years ago

2.1.8

2 years ago

2.1.7

2 years ago

2.1.9

2 years ago

2.1.4

4 years ago

2.1.3

4 years ago

2.1.2

4 years ago

2.1.1

5 years ago

2.0.8

5 years ago

2.1.0

5 years ago

2.0.6

5 years ago

2.0.5

5 years ago

2.0.4

5 years ago

2.0.3

5 years ago

2.0.2

5 years ago

2.0.1

5 years ago

2.0.0

5 years ago

1.2.9

5 years ago

1.2.8

5 years ago

1.2.7

6 years ago

1.2.6

6 years ago

1.2.5

6 years ago

1.2.4

6 years ago

1.2.3

6 years ago

1.2.2

6 years ago

1.2.1

6 years ago