Code splitting 可用于:

    • 模块级别
    • 路由级别

    通过在导入路径前面加上魔法注释/ * webpackChunkName:“ name_here” * /,可以更改块名称

    1. const getUserModule = () =>
    2. import(/* webpackChunkName: "usersAPI" */ "./common/usersAPI");
    3. const btn = document.getElementById("btn");
    4. btn.addEventListener("click", () => {
    5. getUserModule().then(({ getUsers }) => {
    6. getUsers().then(json => console.log(json));
    7. });
    8. });

    借助一个插件,完成对import语法的识别

    cnpm install --save-dev @babel/plugin-syntax-dynamic-import
    

    .babelrc文件下配置,增加一个插件

    {
      "plugins": ["@babel/plugin-syntax-dynamic-import"]
    }
    

    如下:

    // create.js
    async function create() {
        const {
            default: _
        } = await import(/*webpackChunkName:"lodash"*/'lodash')
        let element = document.createElement('div')
        element.innerHTML = _.join(['TianTian', 'lee'], '-')
        return element
    }
    
    function demo() {
        document.addEventListener('click', function () {
            create().then(element => {
                document.body.appendChild(element)
            })
        })
    }
    
    export default demo;