webpack优化篇(四十五):进一步分包:预编译资源模块

简介: webpack优化篇(四十五):进一步分包:预编译资源模块
+关注继续查看

说明

玩转 webpack 学习笔记



分包:设置 Externals

思路:将 react、react-dom 基础包通过 cdn 引入,不打入 bundle 中。

方法:使用 html-webpack-externalsplugin

const HtmlWebpackExternalsPlugin = require('html-webpack-externals-plugin');

module.exports = {
    plugins: [
        new HtmlWebpackExternalsPlugin({
            externals: [
                {
                    module: 'react',
                    entry: '//11.url.cn/now/lib/15.1.0/react-with-addons.min.js?_bid=3123',
                    global: 'React'
                }, {
                    module: ' react-dom',
                    entry: '//11.url.cn/now/lib/15.1.0/react-dom.min.js?_bid=3123',
                    global: 'ReactDOM'
                }
            ]
        })
    ]
}


5ff8933abb934a958023f6bd0bad37b8.png



进一步分包

思路:将 react、react-dom、redux、react-redux 基础包和业务基础包打包成一个文件


方法:使用 DLLPlugin 进行分包,DllReferencePlugin 对 manifest.json 引用

使用 DLLPlugin 进行分包

const path = require('path');
const webpack = require('webpack');

module.exports = {
    context: process.cwd(),
    resolve: {
        extensions: ['.js', '.jsx', '.json', '.less', '.css'],
        modules: [__dirname, 'node_modules']
    },
    entry: {
        library: [
            'react',
            'react-dom',
            ' redux',
            ' react-redux '
        ]
    },
    output: {
        filename: '[name].dll.js',
        path: path.resolve(_dirname, './build/library'),
        library: '[name]'
    },
    plugins: [
        new webpack.DllPlugin({
            name: ' [name]',
            path: './build/library/[name].json'
        })
    ]
};


使用 DllReferencePlugin 引用 manifest.json

在 webpack.config.js 引入

module.exports = {
    plugins: [
        new webpack.DllReferencePlugin({
            manifest: require('./build/library/manifest.json')
        })
    ]
};


引用效果:

0e5d8739dec14c79bf8abd2d3c2f1ce5.png


实战进一步分包

Step 1. 新建文件 webpack.dll.js

const path = require("path");
const webpack = require("webpack");

module.exports = {
    entry: {
        library: [
            "react",
            "react-dom"
        ]
    },
    output: {
        filename: "[name]_[chunkhash].dll.js",
        path: path.join(__dirname, "build/library"),
        library: "[name]"
    },
    plugins: [
        // webpack 内置插件
        new webpack.DllPlugin({
            name: "[name]_[hash]",
            path: path.join(__dirname, "build/library/[name].json")
        })
    ]
}


Step 2. 在 package.json 里添加 dll 分包的脚本

"scripts": {
    "dll": "webpack --config webpack.dll.js"
 },


Step 3. 运行命令

npm run dll
# 或者
webpack --config webpack.dll.js


640a93c9ba5d495cae0ccb8789cb7afc.png

生成的文件如下:

0c17481c74194a2f88b727f88ec56bb9.png


Step 4. 先不分包,运行一下 npm run build

image.png



Step 5. 在 webpack.prod.js 插件里添加分包

new webpack.DllReferencePlugin({
    manifest: require("./build/library/library.json")
})


image.png


在运行 npm run build



image.png


我们可以看到速度跟体积都有了明显降低。


目录
相关文章
|
3月前
|
JavaScript 前端开发 定位技术
vue2项目webpack打包的优化策略,降低打包文件后的大小
vue2项目webpack打包的优化策略,降低打包文件后的大小
54 0
|
4月前
|
缓存 前端开发 JavaScript
如何利用Webpack来优化前端性能的?
用webpack优化前端性能是指优化webpack的输出结果,让打包的最终结果在浏览器运行快速高效。
|
4月前
|
缓存 前端开发 JavaScript
如何用webpack来优化前端性能?
如何用webpack来优化前端性能?
53 0
|
4月前
|
前端开发 JavaScript 安全
说说如何借助webpack来优化前端性能?
说说如何借助webpack来优化前端性能?
|
5月前
|
Web App开发 缓存 资源调度
使用 Webpack 优化前端开发流程
在现代前端开发中,构建工具的选择和优化流程的设计至关重要。Webpack 是一个功能强大的前端构建工具,能够优化我们的开发流程,提高开发效率和项目性能。本文将介绍如何使用 Webpack 来优化前端开发流程。 代码优化和资源管理也是前端项目中不可忽视的一部分。我们将介绍如何通过压缩和混淆代码来减小文件大小,并探讨如何分割代码和异步加载模块,以优化页面加载速度。此外,我们还将讨论如何处理和优化图片、样式和字体等资源文件,以提高整体项目性能。
112 1
|
5月前
|
JavaScript CDN
webpack打包构建优化
webpack打包构建优化
59 0
|
8月前
|
存储 缓存 JavaScript
前端工程化之Webpack优化
1. Webpack Loader 和 Plugin 的区别 2. Webpack 生命周期 3. Webpack编译阶段提效 a. 减少执行编译的模块 b. 提升单个模块构建的速度 c. 并行构建以提升总体效率 4. Webpack打包阶段提效 a. 以提升当前任务工作效率为目标的方案 • 压缩 Chunk 产物代码 b. 以提升后续环节工作效率为目标的方案 • Code Splitting • Tree Shaking • Scope Hoisting (作用域提升) • sideEffects 5. 缓存优化
167 0
|
8月前
webpack打包优化之moment语言包优化moment-locales-webpack-plugin
webpack打包优化之moment语言包优化moment-locales-webpack-plugin
115 0
|
8月前
|
缓存 JavaScript CDN
webpack打包优化之外部扩展(Externals)配置
webpack打包优化之外部扩展(Externals)配置
94 0
webpack打包优化之外部扩展(Externals)配置
|
8月前
|
缓存 JavaScript 前端开发
如何使用Webpack优化Vue.js应用性能
Webpack是一个模块化打包工具,可以将各种资源(JavaScript、CSS、图片等)打包成一个或多个静态资源,从而提高应用程序的性能和加载速度。本文将介绍如何使用Webpack来优化Vue.js应用的性能。
55 0
相关产品
云迁移中心
推荐文章
更多