前端性能优化(2.2 代码分离——动态导入 dynamic import)
使用 import() 语法实现动态导入
project
webpack-demo |- package.json |- webpack.common.js |- webpack.dev.js |- webpack.prod.js |- /dist |- /src |- index.js |- /node_modules
index.js
async function getComponent () { const { default: _ } = await import(/*webpackChunkName: "lodash"*/'lodash') const element = document.createElement('div') element.innerHTML = _.join(['Hello', 'webpack'], ' ') return element } getComponent().then(component => { document.body.appendChild(component) })
webpack.common.js
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const { CleanWebpackPlugin } = require('clean-webpack-plugin')
module.exports = {
  entry: {
    index: './src/index.js',
  },
  output: {
    filename: '[name].bundle.js',
    path: path.resolve(__dirname, 'dist')
  },
  plugins: [
    new HtmlWebpackPlugin(),
    new CleanWebpackPlugin()
  ]
}
webpack.dev.js
const {merge} = require('webpack-merge')
const common = require('./webpack.common')
module.exports = merge(common, {
  mode: 'development',
  devtool: 'inline-source-map',
  devServer: {
    contentBase: './dist',
    port: 3000,
    open: true
  }
})
webpack.prod.js
const {merge} = require('webpack-merge')
const UglifyjsWebpackPlugin = require('uglifyjs-webpack-plugin')
const common = require('./webpack.common')
const webpack = require('webpack')
module.exports = merge(common, {
  mode: 'production',
  devtool: 'source-map',
  plugins: [
    new UglifyjsWebpackPlugin(),
    new webpack.DefinePlugin({
      'process.env.NODE_ENV': JSON.stringify('production')
    })
  ]
})
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号