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

企术建站cdr做网站怎么导出

企术建站,cdr做网站怎么导出,网站开发图片存哪里,qinmei wordpressWebpack 的分包策略(Code Splitting)是优化前端应用性能的重要手段,它能将代码拆分成多个 bundle,实现按需加载或并行加载,从而减少初始加载时间。 分包策略的必要性 在大型项目中,如果将所有代码打包到一…

Webpack 的分包策略(Code Splitting)是优化前端应用性能的重要手段,它能将代码拆分成多个 bundle,实现按需加载或并行加载,从而减少初始加载时间。

分包策略的必要性

在大型项目中,如果将所有代码打包到一个文件中,文件体积会非常大。用户首次加载时需要下载大量的代码,这会导致页面加载速度变慢。通过分包,可以将代码拆分成多个小块,按需加载,减少初始加载时间。它有如下的优点:

  • 减少初始加载体积:避免用户首次访问时下载整个应用代码
  • 提高缓存利用率:将不常变动的代码单独打包
  • 并行加载:利用浏览器并行下载能力
  • 按需加载:只在需要时加载特定模块

常见的分包策略

1. 入口起点分包

最简单的分包方式,就是通过配置多个入口点实现:

module.exports = {entry: {app: './src/app.js',vendor: './src/vendor.js'},output: {filename: '[name].bundle.js',path: __dirname + '/dist'}
};

这样打包后会生成 app.bundle.js 和 vendor.bundle.js 两个文件,分别对应首页和关于页面的代码。

缺点:如果多个入口共享模块,会导致重复打包。

2. 防止重复分包 (SplitChunksPlugin)

为了避免重复分包,可以通过 splitChunks 策略实现。这是 Webpack 内置的一个插件,用于对公共模块和异步模块进行代码分割。

通过配置 optimization.splitChunks,可以指定如何分割代码块。

使用 SplitChunksPlugin 自动拆分共享模块:

module.exports = {optimization: {splitChunks: {chunks: 'all', // 对所有类型的代码块进行分割minSize: 30000, // 模块大于30KB才拆分minChunks: 1, // 模块被引用至少1次才拆分cacheGroups: {react: { // 第三方库单独分包test: /[\\/]node_modules[\\/](react|react-dom)[\\/]/,name: 'react',chunks: 'all'},vendors: {test: /[\\/]node_modules[\\/]/,  // 匹配 node_modules 中的模块priority: -10,name: 'vendors' // 第三方库代码块的名称},commons: {name: 'commons', // 公共代码块的名称minChunks: 2, // 最少被引用两次的模块才会被提取到公共代码块priority: 10 // 优先级,值越大优先级越高},}}}
};

这样配置后,项目中被多个模块引用的代码会被提取到 commons 代码块,而 node_modules 中的第三方库代码会被提取到 vendors 代码块,从而实现代码的复用和优化。

3. 动态导入分包 (Dynamic Imports)

使用 ES6 的 import() 语法实现按需加载:

document.getElementById('loadFeature').addEventListener('click', () => {import('./feature.js').then((module) => {module.initFeature();});
});

Webpack 会自动将 feature.js 打包成一个单独的代码块,当用户点击按钮时,才会去加载这个代码块。

4. 按路由分包(针对但页面应用)

在单页面应用(SPA)中,通常会根据路由来分包。例如,使用 Vue.js 的 Vue Router 或 React 的 React Router。

Vue:

const routes = [{path: '/',component: () => import('./views/Home.vue')},{path: '/about',component: () => import('./views/About.vue')}
];

React:

const Home = lazy(() => import(/* webpackChunkName: "home" */ './pages/Home'));
const About = lazy(() => import(/* webpackChunkName: "about" */ './pages/About'));

这样每个路由对应的组件会被打包成单独的代码块,当用户切换路由时,对应的代码块才会被加载。

5. 预获取/预加载分包 (Prefetching/Preloading)

import(/* webpackPrefetch: true */ './path/to/Modal.js');
import(/* webpackPreload: true */ './path/to/Chart.js');
  • prefetch:空闲时加载,用于未来可能需要的资源
  • preload:与主 bundle 并行加载,用于当前导航可能立即需要的资源

6. CSS分包
CSS 分包主要是将项目中的 CSS 文件按照一定的规则拆分成多个小的 CSS 文件。可以借助 webpack 的 MiniCssExtractPlugin插件 结合 SplitChunksPlugin 实现。

const MiniCssExtractPlugin = require('mini-css-extract-plugin');module.exports = {plugins: [new MiniCssExtractPlugin()],module: {rules: [{test: /\.css$/,use: [MiniCssExtractPlugin.loader, 'css-loader']}]},optimization: {splitChunks: {cacheGroups: {styles: {name: 'styles',test: /\.css$/,chunks: 'all',enforce: true}}}}
};

分包策略的优化建议

1. 合理设置公共模块

  • 在使用 SplitChunksPlugin 时,要合理设置 minChunks 等参数,避免过度提取公共模块。如果公共模块太小,可能会导致打包后的文件数量过多,反而影响性能。
  • 可以通过分析打包后的文件,观察公共模块的大小和包含的模块,根据实际情况调整配置。

2. 关注异步加载的时机

  • 对于动态导入的代码块,要合理安排加载时机。例如,在一些交互操作(如点击按钮)后加载,或者在页面滚动到某个位置时加载,避免在页面加载初期就加载过多的代码块,影响首屏加载速度。

3. 测试和监控分包效果

  • 在开发过程中,要使用 Webpack 的分析工具(如 Webpack Bundle Analyzer)来查看打包后的文件结构和大小。根据分析结果,不断调整分包策略。
  • 同时,在生产环境中,要监控页面的加载性能,如首屏加载时间、资源加载时间等,根据实际使用情况进一步优化分包策略。

分包策略的最佳实践

  • 第三方库单独打包:将 react、lodash 等稳定库单独分包
  • 按路由/功能分包:结合动态导入实现按需加载
  • 小模块合并:避免生成过多小文件(设置合理的 minSize)
  • 长缓存优化:使用 contenthash 命名文件
    output: {filename: '[name].[contenthash].js',chunkFilename: '[name].[contenthash].chunk.js'
    }
    
  • 监控分析:使用 webpack-bundle-analyzer 分析包大小

文章转载自:

http://2TP4Kkla.sffwz.cn
http://uOzWQ199.sffwz.cn
http://Mmzf6BkF.sffwz.cn
http://PZV9PnSA.sffwz.cn
http://x75VDWfs.sffwz.cn
http://TDA1le3j.sffwz.cn
http://W2RWWwJ3.sffwz.cn
http://lZZPTRPT.sffwz.cn
http://6QYOlTOh.sffwz.cn
http://5uDlchDF.sffwz.cn
http://5jjsJozS.sffwz.cn
http://wOSawGTY.sffwz.cn
http://Z2Cjx1mR.sffwz.cn
http://zkOgmRRz.sffwz.cn
http://FWwbPk34.sffwz.cn
http://iQxa9PWI.sffwz.cn
http://fbezGTFO.sffwz.cn
http://8KSwYz80.sffwz.cn
http://ywfONXOP.sffwz.cn
http://DunMcaUp.sffwz.cn
http://wCw9w3Ul.sffwz.cn
http://Qg9hnUYX.sffwz.cn
http://mU3TAXhJ.sffwz.cn
http://KkL5DZvb.sffwz.cn
http://RdNvZKO3.sffwz.cn
http://QkX7k0FM.sffwz.cn
http://9HHURyuA.sffwz.cn
http://0kphYFia.sffwz.cn
http://xek62Nqc.sffwz.cn
http://DAvP5eP4.sffwz.cn
http://www.dtcms.com/wzjs/669850.html

相关文章:

  • 西安信息网站建设wordpress 登录很慢
  • 新手做网站的详细步骤上品设计
  • 曲阜住房城乡建设局网站网站开发与管理实验五
  • 微信导航网站怎么做小当网 绵阳网站建设
  • 安徽省经工建设集团网站自己电脑做网站好吗
  • 太原响应式网站建设如何做亚马逊备案的网站
  • 网站备案帐户有什么用wordpress文章下载
  • 开发软件的网站php做网站的支付功能
  • 做网站公司经营范围手机微网站开发的目的和意义
  • 关于建设公司网站的建议24 手表网站
  • 学院路网站建设做网站用框架么
  • 做视频直播网站wordpress用户名是哪个文件
  • 包包网站建设策划书下载京东网上商城
  • 中国营销网站大全秦皇岛海三建设
  • 成都网站设计公司价格网站建设 业务走下坡
  • 怎样提升网站流量360安全网址导航
  • 微信公众号 做不了微网站优化大师有用吗
  • 浙江省建设厅网站资质迁移网站开发公司合作协议书
  • 网站备案名称几个字贵州建设工程招投标网站
  • 重庆企业网站推广流程取消工法建设部网站
  • 河南网站建设价位html个人网站
  • 如何做优酷网站点击赚钱惠州seo优化
  • 怎么做钓鱼网站微信扫码点餐小程序
  • 网站不用下载免费软件网址seo优化排名
  • 建网站公司用什么网站程序石家庄网站优化
  • wordpress网站地图生成联客易外贸网站建设推广
  • 江苏国家住房和城乡建设部网站php做网站安全性
  • 江苏昆山网站建设大连网站建设主页
  • 南京做网站需要多少钱网站建设捌金手指下拉六
  • 购物网站开发历史怎么样让百度收录网站