webpack圖片打包+ejs include其他模塊

對本菜鳥來說,webpack?哦,一個構(gòu)建打包工具,感覺很高大上,用??!ejs?模板引擎,好像特別高大上,一定要用?。。⌒〔锁B心潮澎湃,在小項目中一結(jié)合,很好,很無奈,啊啊啊啊,遇到了好多問題。

圖片打包

webpack.config.jsmodule 關(guān)于圖片的配置:

module: {
  rules: [
    {
      test: /\.(png|jp?g|gif|svg)$/,
      use: [
        {
          loader: 'url-loader',
          options: {
            limit: 10000,
            name: 'public/images/[name].[hash].[ext]',
          },
        },
      ],
    },
  ]
}

css中圖片正常引用即可:

background-image: url(../../public/images/banner.jpg);

js中需要通過模塊化的方式引用圖片:

const gLogo = require('../../public/images/logo.png');

html中引用的圖片不會被打包,因為 webpackhtml 的處理并不友好,Google、Baidu了很久,參考了許多人的解決辦法,比如說使用 html-withimg-loder,但是在我這邊并不起作用(完全不知道為啥,暫時也不想知道為啥┑( ̄Д  ̄)┍)。

<img src="../../public/images/logo.png">

ejs登場,當當當~~~

webpack.config.jsmodule 配置增加了ejs rules

module: {
  rules: [
    {
      test: /\.ejs$/,
      loader: 'ejs-loader',
    },
  ]
}

對于圖片打包,ejs有特殊的引用圖片方式:

<img src="<%= require('../../public/images/logo.png') %>">

# 附贈ejs官網(wǎng)
http://ejs.co/

運行

npm run build

## package.json
"scripts": {
    "start": "echo TODO",
    "dev": "webpack-dev-server --open",
    "build": "webpack --mode production",
  },

很好,圖片打包成功。

然鵝,在將模板公共部分抽離出來,如 headerfooter,再 include 到各頁面時,webpack打包時會報錯:

ERROR: include is not defined

官方推薦使用 ejs-compiled-loader 來引入其他的ejs模塊:

test: /\.ejs$/,
loader: 'ejs-compiled-loade',

but, ejs中圖片不能打包,require也不行呢。

經(jīng)過“千挑萬選”,看到了一個神器 underscore-template-loader ,這是一個可以一打二的loader,很贊!?。?/p>

test: /\.ejs$/,
loader: 'underscore-template-loader',
<body>
  @require('../header/header.ejs')
  <div>
    <img src="../../public/images/bg.jpg">
  </div>
</body>

哇~,真是特別好呢,運行完全沒有問題,還可以向其中傳入對應(yīng)的值:

@require('../header/header.ejs',  {"name": "這是一個值"})

當然,現(xiàn)在沒問題不代表以后也沒問題,暫時解決了ejs include問題,滿足。

未來會出現(xiàn)的問題,就交給未來會變的厲害的我吧。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容