0

尝试使用括号表示法时,我似乎在从 mixin 访问值时遇到问题。我有以下设置:

// in webpack plugins
new HtmlWebpackPlugin({
            hash: true,
            template: './assets/template/about.pug',
            filename: 'about-us.html',
            inject: true,
            page: 'about',
            locals: require('./assets/data.json'),
            chunks: ['about']
        }),

json

// data.json (snippet)
{
    "pages" : {
        "about" : {"title" : "About Us","metaDesc" : ""},
    }
}

哈巴狗混音

mixin pageTitle(thePage)
    title= htmlWebpackPlugin.options.locals.pages[thePage].title

使用哈巴狗混合

+pageTitle(htmlWebpackPlugin.options.page)

我收到一个错误Cannot read property 'title' of undefined.

如果我将其更改为htmlWebpackPlugin.options.locals.pages.about.title它将解析得很好。

如果我将其更改为htmlWebpackPlugin.options.locals.pages[thePage]它将返回[object Object],但我无法访问任何属性。

如果我将其更改为htmlWebpackPlugin.options.page或仅使用thePage,则将呈现“关于”。

我做了一个 typeof 来检查它是否是一个字符串。这是。我试过先把它放到一个变量中。同样的问题。

有什么想法吗?

4

1 回答 1

0

为什么需要括号中的符号?这样做的目的是什么?这个记录有效title = thePage.pages.about['title']


我更喜欢以下条目;)
在文件about.pug中,在最顶部创建一个条目。

block variables
- var path = self.htmlWebpackPlugin.options

你传递给函数

// locals is the path to your json file
+pageTitle(path.locals)

Mixin 应该是这样的

mixin pageTile(thePage)
  title = thePage.pages.about.title

除了使用pug-loaderphotoBlog生成多个子页面之外,这里还有整个示例

于 2020-07-02T21:16:10.160 回答