将包含文件传递到 Handlebars 布局中

Passing an include file into a Handlebars layout

我正在使用 Node.js、Express 4 和 Handlebars 模板处理器。我使用 Handlebars 呈现的一些页面视图有几 kBytes 的静态内联 SVG 代码。有没有一种简单干净的方法可以将 SVG 代码放入一个单独的文件中,以包含在 Handlebars 布局模板中?理想情况下,此包含文件的扩展名为 .svg,但 .hbs 也是可以接受的。

您可以在您的项目中创建一个静态资源文件夹(例如 /public),然后 include it with Expressapp.use(express.static('public')); 将您的 .svg 文件放在那里。

然后在您的车把文件中简单地添加 SVG,就像在正常的 HTML 项目中一样,例如 <img src="your.svg">

昨天我正在解决同样的问题。我完成了将 svg 文件加载到字符串中,然后将其传递给 handlebars 模板。

var svgTemplate = fs.readFileSync('./public/app/build/images/spriteAll.svg', 'utf8');

var express = require('express'),
    router = express.Router();

router.get('/',  function (req, res) {
    res.render('main', {
        svgTemplate: svgTemplate
    });
});

//其中 main.hbs 包含: ...

<body class="ng-cloak">
    <div class="inline-svg">
        {{{svgTemplate}}}
    </div>
....
</body>

您可以尝试 handlebars-partial-file 将文件内容作为 Handlebars 部分包含。