【发布时间】:2018-08-16 22:32:49
【问题描述】:
我在 index.html 中创建了模板来生成带有 js 的 html 代码,代码如下。我的 Webpack 配置也在下面。当我使用 webpack-dev-server 运行它时,出现错误:未定义标题。不知何故,webpack 尝试自行解析“标题”,而不是将其委托给“lodash/template”。请帮我修复代码,我很绝望(。
import path from 'path';
import glob from 'glob';
import webpack from 'webpack';
import ExtractTextPlugin from 'extract-text-webpack-plugin';
import HtmlWebpackPlugin from 'html-webpack-plugin';
const inProduction = process.env.mode === 'production';
export default {
entry: {
app: [
'./src/scripts/main.js',
],
},
output: {
path: path.join(__dirname, 'build'),
filename: '[name].[chunkhash].js',
},
module: {
rules: [
{
test: /\.s[ac]ss$/,
use: ExtractTextPlugin.extract({
use: ['css-loader', 'sass-loader'],
fallback: 'style-loader',
}),
},
{
test: /\.js$/,
use: 'babel-loader',
exclude: '/node_modules',
},
],
},
plugins: [
new ExtractTextPlugin('[name].[chunkhash].css'),
new webpack.LoaderOptionsPlugin({
minimize: inProduction,
}),
new HtmlWebpackPlugin({
template: path.join(__dirname, './src/index.html'),
}),
],
};
import temp from 'lodash/template'
import data from './data';
const titlePicDiscHalf = temp(document.getElementById('titlePicDiscHalf').innerHTML);
document.write(titlePicDiscHalf({ title: 'Hello World!' }));
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
</head>
<body>
<script type="text/template" id="titlePicDiscHalf">
<div class="titlePicDiscHalf">
<div class="picture"></div>
<div class="title"><%=title%></div>
<div class="discription"></div>
<div class="buttons"></div>
</div>
</script>
</body>
</html>
【问题讨论】:
-
更改模板使用的
<%=和%>分隔符。 -
@dfsq,如果我将其更改为
<$=title$>等其他符号,则不会出现错误,但它会呈现<$=title$>,而不是“Hello world” -
html-webpack-plugin使用相同的模板语法。也许错误来自试图解析标题的插件? -
@lukas-reineke 是的,这正是问题所在。
标签: javascript html webpack lodash