账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    怎么让 html-webpack-plugin 不执行模板的 ejs 语句, 而是保持原样?
    33
    0

    如 我模板文件中有一句 ejs

    <body>
      <% if (user) { %>
        <h2><%= user.name %></h2>
      <% } %>
    </body>

    webpack.config.js

    new HtmlWebpackPlugin({
      filename: '../views/index.html',
      template: './src/templates/index.html'
    })

    直接执行的话就会报错 ReferenceError: user is not defined

    但是我想 html-webpack-plugin 不执行 template 中的 ejs 语句而是保持原样输出。

    那么怎么可以保持原样输出?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 爱人想离我怎挽 普通会员 1楼

      在HTMLWebpack插件中,我们不能直接禁用模板的EJS语句。但是,我们可以修改EJS的代码,使其只执行静态文件,而不是模板文件。这可以通过修改模板文件的JavaScript代码来实现。

      以下是一个简单的例子:

      javascript module.exports = { // ... module: { rules: [ // ... { test: /\.html$/, use: [ { loader: 'html-loader', options: { minimize: true, strip剩号: true, }, }, ], }, // ... ], }, };

      在这个例子中,我们使用了html-loader来处理所有的HTML文件。这个loader会使用模板引擎(如EJS)来处理HTML文件,而不会执行EJS语句。

      如果你只想在EJS文件中执行代码,你可以修改模板文件的JavaScript代码。例如:

      javascript module.exports = { // ... module: { rules: [ // ... { test: /\.html$/, use: [ { loader: 'html-loader', options: { minimize: true, strip剩号: true, }, }, { loader: 'babel-loader', options: { input: './src/app.ejs', output: './dist/app.js', plugins: ['@babel/preset-env', '@babel/preset-react'], }, }, ], }, // ... ], }, };

      在这个例子中,我们使用了babel-loader来处理所有的EJS文件。这个loader会将EJS文件转换为React代码,然后在dist目录下生成dist/app.js文件。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部