我了解 Pug 不支持模板中的动态包含或扩展。即
extend path/to/template
有效但无效
extend #{dynamic_path_to_template}
是否有一种解决方法(无论多么复杂)可以实现在运行时修改 View 使用的模板的相同目标
上下文:我的用例是我正在开发一个 npm 模块,并且用于扩展其他 View 的模板位于该模块内部。模块发布并安装后,将定义路径(即node_modules/my_module/path/to/template),但在开发阶段,我只需要能够“npm link”到模块并使模板工作。我也不想对链接进行硬编码,这样我就可以发布与测试相同的代码。
最佳答案
我也遇到了这个问题,并在寻找解决方案时发现了这个问题。我的解决方案类似于 Nikolay Schambergs 的答案,但我认为我应该分享它。
我创建了一个函数,通过给定路径并将其传递给选项对象来呈现模板。也许它对你的情况也有帮助
const includeFunc = (pathToPug, options = {}) => {
return pug.renderFile(pathToPug, options); //render the pug file
}
const html = pug.renderFile('template.pug', {include: includeFunc});
然后在模板中按如下方式使用它:
body
h1 Hello World
|!{include(dynamicPugFilePathFromVariable)}
关于javascript - Pug/Jade 中动态包含的解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45824697/