zoukankan      html  css  js  c++  java
  • 前端性能优化(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')
        })
      ]
    })
  • 相关阅读:
    五角星评分小例子
    手风琴案列
    隔行变色
    全选和单选(有一个单选没有打钩,全选也自动不打钩)
    随机数封装
    数组的升降序排列
    js面向对象倒计时与文字左右滚动
    linux知识点总结与随笔(关注linux爱好者公众号的一些笔记)
    线程与进程(我的理解)
    @property在python类中的应用
  • 原文地址:https://www.cnblogs.com/zhoulixue/p/14518647.html
Copyright © 2011-2022 走看看