问题

假如我们直接引入一张图片,类似于
image.png
是无法引入成功的
需要通过js来import并且通过file-loader来转译(得到的只是图片的路径),事实上,只要我们在js中引入正确,他就会得到正确的路径,并且进行转译。
注意:file-loader生成的图片的名字是自带hash的,因此可以直接用于缓存的更新。

使用方法

1.安装

  1. $ npm install file-loader --save-dev

2.配置webpack

  1. module.exports = {
  2. module: {
  3. rules: [
  4. {
  5. test: /\.(png|jpe?g|gif)$/i,
  6. use: [
  7. {
  8. loader: 'file-loader',
  9. },
  10. ],
  11. },
  12. ],
  13. },
  14. };

3.js中引入图片

  1. import img from './assets/1.png'
  2. const div = document.querySelector('div');
  3. div.innerHTML = `<img src="${img}" >`

懒加载

在js中使用import函数加载js是一个异步过程,我们使用一个按钮去触发,使它在我们需要的时候进行加载,这样即使一个懒加载过程
注意:import函数返回一个promise,因此需要我们设置then方法。我们引入文件时的then方法中,他返回的是一个成功状态且值为module的primise,可以在then的参数中传入peomise的valve,并使用module.default调用。
下面是lazy.js的内容

  1. let a = 1;
  2. export default a;

下面是index.js的内容

  1. const button = document.createElement('button')
  2. document.body.appendChild(button)
  3. button.textContent = '懒加载'
  4. button.onclick = () =>
  5. {
  6. const lazy = import('./lazy.js')
  7. lazy.then((module) =>
  8. {
  9. console.log('成功啦');
  10. console.log(lazy);
  11. console.log(module.default);
  12. })
  13. }

点击按钮结果如图
image.png