mae*_*ove 2 javascript node.js webpack webpack-html-loader pug
根据pug-html-loader的自述文件,加载器接受一个data对象,该对象作为的一部分传递options给模板。虽然options在pug API参考中没有提供,但我发现的grunt插件(grunt-contrib-pug)使用API的方式相同。
我为加载程序指定了以下选项:
loader: 'pug-html-loader',
options: {
pretty: true,
exports: false,
debug: !env.production,
compileDebug: !env.production,
cache: config.build.useCaching,
doctype: 'html',
data: {
title: config.metadata.title,
baseUrl: config.build.baseUrl,
server: env.server,
metadata: config.metadata
}
}
Run Code Online (Sandbox Code Playgroud)
根据这个问题,我想通过以下方式访问:
title= data.title
Run Code Online (Sandbox Code Playgroud)
但是,编译时总是遇到以下错误:
ERROR in Error: Child compilation failed:
Module build failed: TypeError: Cannot read property 'title' of undefined
Run Code Online (Sandbox Code Playgroud)
出于调试目的,我在模板中包含以下行:
-
console.log(' DATA! ' + data);
Run Code Online (Sandbox Code Playgroud)
结果是:
DATA! undefined
Run Code Online (Sandbox Code Playgroud)
我还通过声明一些乱码而不是对象(例如,字符串,纯json,数字..)来确保数据正确地传递给pug,然后pug编译器会抱怨数据格式无效等。 。
有人面临同样的问题吗?
小智 5
您应该直接引用数据(即,不要在字段前加上data)
因此,您应该像这样更改代码:
{
loader: 'pug-html-loader',
options: {
data: {
title: 'Hello World'
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后从您的PUG模板中引用它
doctype html
html
head
title= hello
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1007 次 |
| 最近记录: |