加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

Web性能优化: 使用Webpack分离数据的正确方法

发布时间:2019-03-05 22:15:55 所属栏目:建站 来源:前端小智
导读:制定向用户提供文件的最佳方式可能是一项棘手的工作。 有很多不同的场景,不同的技术,不同的术语。 在这篇文章中,我希望给你所有你需要的东西,这样你就可以: 了解哪种文件分割策略最适合你的网站和用户 知道怎么做 根据 Webpack glossary,有两种不同类

我们只需手动添加一些入口点,告诉 Webpack 为每个项创建一个文件。

  1. module.exports = {  
  2.   entry: {  
  3.     main: path.resolve(__dirname, 'src/index.js'),  
  4.     ProductList: path.resolve(__dirname, 'src/ProductList/ProductList.js'),  
  5.     ProductPage: path.resolve(__dirname, 'src/ProductPage/ProductPage.js'),  
  6.     Icon: path.resolve(__dirname, 'src/Icon/Icon.js'),  
  7.   },  
  8.   output: {  
  9.     path: path.resolve(__dirname, 'dist'),  
  10.     filename: '[name].[contenthash:8].js',  
  11.   },  
  12.   plugins: [  
  13.     new webpack.HashedModuleIdsPlugin(), // so that file hashes don't change unexpectedly  
  14.   ],  
  15.   optimization: {  
  16.     runtimeChunk: 'single',  
  17.     splitChunks: {  
  18.       chunks: 'all',  
  19.       maxInitialRequests: Infinity,  
  20.       minSize: 0,  
  21.       cacheGroups: {  
  22.         vendor: {  
  23.           test: /[/]node_modules[/]/,  
  24.           name(module) {  
  25.             // get the name. E.g. node_modules/packageName/not/this/part.js  
  26.             // or node_modules/packageName  
  27.             const packageName = module.context.match(/[/]node_modules[/](.*?)([/]|$)/)[1];  
  28.             // npm package names are URL-safe, but some servers don't like @ symbols  
  29.             return `npm.${packageName.replace('@', '')}`;  
  30.           },  
  31.         },  
  32.       },  
  33.     },  
  34.   },  
  35. }; 

Webpack 还会为 ProductList 和 ProductPage 之间共享的内容创建文件,这样我们就不会得到重复的代码。

这将为 Alice 在大多数情况下节省 50 KB 的下载。

只有 1.815 MB!

我们已经为 Alice 节省了高达56%的下载量,这种节省将(在我们的理论场景中)持续到时间结束。

所有这些都只在Webpack配置中进行了更改——我们没有对应用程序代码进行任何更改。

我在前面提到过,测试中的确切场景并不重要。这是因为,无论你提出什么场景,结论都是一样的:将应用程序分割成合理的小文件,以便用户下载更少的代码。

很快,=将讨论“code splitting”——另一种类型的文件分割——但首先我想解决你现在正在考虑的三个问题。

#1:大量的网络请求不是更慢吗?

答案当然是不会。

在 HTTP/1.1 时代,这曾经是一种情况,但在 HTTP/2 时代就不是这样了。

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读