当前位置: 首页 > news >正文

前端基础之《React(4)—webpack简介-编译打包优化》

接上篇......

十二、编译打包优化

1、简化编译后的文件
如果看到dist目录里有xxx-vendors.xxx.js文件,这个是第三方包
部署时可以做优化,第三方包用CDN做优化

2、把第三方包从业务代码中抽离出来,为了以后部署时做CDN优化
config.js:

// 两个环境都需要的公共配置// 从node进程中引入path模块
const path = require('path')
const HtmlWebpackPlugin = require('html-webpack-plugin')
const { ProgressPlugin, ProvidePlugin } = require('webpack') // webpack自带插件module.exports = {entry: {// 把第三方库打包到vendors.js中,从业务代码中抽离出来,为了以后部署时做CDN优化vendors: ['react', 'react-dom/client'],// 可以给入口文件取个名字,给output使用app: {// 用import引入main.js作为入口文件import: path.resolve(__dirname, '../', 'src/main.js'),dependOn: 'vendors' // 用dependOn指定业务代码app依赖于vendors,先打包vendors,再打包app}},// 出口output: {// 自定义打包结果的输出目录,默认是dist目录,这里只能使用绝对路径path: path.resolve(__dirname, '../', 'dist'),// 指定打包结果的JS名称规范// filename: 'bundle.js' // 量词,一捆、一束filename: 'js/[name].[chunkhash:8].js',// 每次build打包时,都自动先删除dist中的旧文件clean: true},// 插件// 所有webpack插件都是class,用的时候需要newplugins: [// 用于把JS脚本和index.html自动注入合并new HtmlWebpackPlugin({template: path.resolve(__dirname, '../', 'public/index.html'),inject: 'body', // 把JS注入到body结束标签前面filename: 'index.html', // 指定打包成功后这个模板叫什么名字title: '测试'}),// 添加编译进度条new ProgressPlugin({handler(percentage, message, ...args) {console.log(percentage, message, ...args)}}),// 从node_modules中加载react包,将其放在全局变量React中,这样之后所有的文件模块都可以直接访问new ProvidePlugin({React: 'react'}),],// 在webpack眼中一切文件皆模块,webpack必须使用各种loaders来处理各种不同的模块文件module: {// 定义模块编译的规则和方式rules: [{test: /\.(js|jsx|ts|tsx)$/, // 检测模块以js结尾use: ['babel-loader'], // 使用babel编译器把ES6+的代码编译成ES5exclude: /node_modules/, // 排除node_modules目录下的第三方包文件}]}
}

修改点:

    entry: {

        // 把第三方库打包到vendors.js中,从业务代码中抽离出来,为了以后部署时做CDN优化

        vendors: ['react', 'react-dom/client'],

        // 可以给入口文件取个名字,给output使用

        app: {

            // 用import引入main.js作为入口文件

            import: path.resolve(__dirname, '../', 'src/main.js'),

            dependOn: 'vendors' // 用dependOn指定业务代码app依赖于vendors,先打包vendors,再打包app

        }

    },

编译后的文件:

dist/index.html:

把vendors换成CDN加速链接。

http://www.dtcms.com/a/540280.html

相关文章:

  • F039 python五种算法美食推荐可视化大数据系统vue+flask前后端分离架构
  • 网站开发框架参考文献京东官方网上商城
  • Spring OXM:轻松实现Java-XML互转
  • 功能测试总结
  • 小白来学习 LVDS 差分原理及应用
  • 【Linux】网络层协议IP
  • 《Muduo网络库:TcpConnection类》
  • 网站详情页怎么做的好看的网页设计作品欣赏
  • 线扫相机上位机开发——如何提高问题排查效率
  • 计算机网络自顶向下方法10——应用层 HTTP/2 成帧 响应报文优先次序和服务器推
  • 孝感网站的建设网页设计一般一个月工资多少
  • 什么是持续集成(CI)和持续交付(CD)?测试在其中扮演什么角色?
  • 利用机器学习优化CPU调度的一些思路案例
  • Kafka 消息顺序消费深度解析:原理、实现方案与全局有序可行性分析
  • 数据结构初识,与算法复杂度
  • 网站色彩搭配中国纪检监察报社官网
  • (六)策略梯度算法 and Actor-Critic 框架
  • 基于萤火虫算法(FA)优化支持向量机(SVM)参数的分类实现
  • 【C++】C++11出来之后,到目前为止官方都做了些什么更新?
  • 公司网站建设及推广淮南网云小镇怎么样
  • UE C++ 离线安装 经验
  • Smart SVG Viewer,一款免费的SVG 图像查看器
  • 基於 MAC 的模型算力估算方法
  • VoxCPM macOS 安装部署
  • 【Linux篇】ELF文件与程序加载:理解链接过程中的静态库,动态库及目标文件
  • 做体育直播网站做数据权威的网站
  • 《因为独特》不畏惧与众不同 王宁泡泡玛特的独特之道:低风险创业的人性解码与产品设计指南
  • 【打靶日记】VulNyx 之 Lower3
  • DomainNet 数据集下载
  • 6.1.2.1 大数据方法论与实践指南-离线任务分类