How to pass variable from jade-loader to a jade template file?

↘锁芯ラ 提交于 2019-11-28 05:23:48

问题


I want to pass my data-object to jade files, but but it is impossible My jade-loader:

{
   test: /\.jade$/,
   loader: "jade",
   query: {
      pretty: true,
      locals: {
          name: "Georg"
    }
}

}

plugins:

plugins: [
    new HtmlWebpackPlugin({
       filename: "index.html",
       template: "./src/jade/index.jade"
})]

index.jade:

span=locals.name

I run webpack and I get this index.html:

<span></span>

My variable name don't pass. Why? How to fix it?


回答1:


You can pass the custom properties to HtmlWebpackPlugin options and use them in your pug templates (see htmlWebpackPlugin.options in documentation). It works with the latest versions of the HtmlWebpackPlugin, pug-loader and webpack 2. Can't confirm that it works with the previous versions, but I believe it does.

pug rule:

{
  test: /\.pug$/,
  loader: 'pug-loader',
  options: {
    // Use `self` namespace to hold the locals
    // Not really necessary
    self: true,
  },
}

HtmlWebpackPlugin options:

{
  filename: 'index.html',
  template: 'src/html/index.pug',

  // Your custom variables:
  name: 'Georg',
}

Using it in index.pug template:

span= self.htmlWebpackPlugin.options.name

Note that you can set the self option to false and omit it in your pug templates using variables directly. For more details see the Pug reference.




回答2:


you should use pug-html-loader

then in webpack.config.js

  ...
  {
    test:/\.pug$/,
    exclude: ['/node_modules/'],
    loader: 'pug-html-loader',
    query: {
      data: {name:'test'},
      pretty: true
    }
  },
  ...

then in your pug(jade) files, use this data

 h3.title= data.name


来源:https://stackoverflow.com/questions/37755652/how-to-pass-variable-from-jade-loader-to-a-jade-template-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!