webpack ejs怎样模块化?

发布于 2022-09-11 22:26:27 字数 1329 浏览 17 评论 0

比如
header.ejs:

<div class="header-tpl"><%= title %></div>

header.js:

import header from './header.ejs';
import './header.css';

export default function HeaderTpl(){
    const data = {
        title: 'I am header'
    }
    return {
        header: header(data)
    }
}

以上是两个毫无关联的文件,在
home.ejs:

<%= require('./components/header.ejs')() %>
...

会报错,找不到title (当然的,因为没关联header.js)
我想问的是在webpack中怎样写才对?

Google到的方案:

  1. 写在配置文件里...(当真么这是...)
const value = {...}
plugins.push(
    new HtmlWebpackPlugin({
      filename: `${value.path}.html`,
      template: path.resolve(__dirname, '../src', `${value.path}.ejs`),
      inject: true,
      chunks: ['common', value.path],
      favicon: './src/assets/img/favicon.ico',
      title: value.text,   // 这里传入了title
      path:value.path,
      minify: {
        collapseWhitespace: true
      }
    })
  )
  1. 通过js导入
import HeaderTpl from '../components/header.js';
const header = new HeaderTpl();
$('body').prepend(header.header);

是可以啦,没啥毛病,但我个人更倾向于

<%= require('./components/header.ejs')() %>

的写法,维护也方便

请问,有大佬知道怎样配置才更合理吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文