1、没有懒加载

1、准备

  1. export function mul(x, y) {
  2. return x * y;
  3. }
  4. export function count(x, y) {
  5. return x - y;
  6. }
  7. console.log("test被加载")
  1. import {mul} from './test'
  2. console.log(mul(2,3))
  3. function sum(...args) {
  4. return args.reduce((p, c) => p + c, 0);
  5. }
  6. console.log("index被加载")
  7. // eslint-disable-next-line
  8. console.log(sum(1, 2, 3, 4));

2、webpack.config.js

  1. const { resolve } = require('path');
  2. const HtmlWebpackPlugin = require('html-webpack-plugin');
  3. module.exports = {
  4. entry:'./src/js/index.js',
  5. output: {
  6. filename: 'js/[name].[contenthash:10].js',
  7. path: resolve(__dirname, 'build')
  8. },
  9. plugins: [
  10. new HtmlWebpackPlugin({
  11. template: './src/index.html',
  12. minify: {
  13. collapseWhitespace: true,
  14. removeComments: true
  15. }
  16. })
  17. ],
  18. optimization: {
  19. splitChunks: {
  20. chunks: 'all'
  21. }
  22. },
  23. mode: 'production'
  24. };

3、结果

image.png

2、懒加载

1、准备

  1. function sum(...args) {
  2. return args.reduce((p, c) => p + c, 0);
  3. }
  4. /*
  5. 通过js代码,让某个文件被单独打包成一个chunk
  6. import动态导入语法:能将某个文件单独打包
  7. */
  8. import('./test')
  9. .then(({ mul, count }) => {
  10. // 文件加载成功~
  11. // eslint-disable-next-line
  12. console.log(mul(2, 5));
  13. })
  14. .catch(() => {
  15. // eslint-disable-next-line
  16. console.log('文件加载失败~');
  17. });
  18. // eslint-disable-next-line
  19. console.log(sum(1, 2, 3, 4));

2、结果

1、没有固定文件名

test.js打包,未命名则根据ID命名
image.png

2、固定文件名

/ webpackChunkName:’test’ / 固定文件名
image.png
结果:
image.png

3、预加载

1、准备

  1. function sum(...args) {
  2. return args.reduce((p, c) => p + c, 0);
  3. }
  4. /*
  5. 通过js代码,让某个文件被单独打包成一个chunk
  6. import动态导入语法:能将某个文件单独打包
  7. */
  8. import(/* webpackChunkName: 'test',webpackPrefetch: true */'./test')
  9. .then(({ mul, count }) => {
  10. // 文件加载成功~
  11. // eslint-disable-next-line
  12. console.log(mul(2, 5));
  13. })
  14. .catch(() => {
  15. // eslint-disable-next-line
  16. console.log('文件加载失败~');
  17. });
  18. // eslint-disable-next-line
  19. console.log(sum(1, 2, 3, 4));

2、结果

image.png