我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎么在Webpack中执行代码分割

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎么在Webpack中执行代码分割

这篇文章主要介绍“怎么在Webpack中执行代码分割”,在日常操作中,相信很多人在怎么在Webpack中执行代码分割问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么在Webpack中执行代码分割”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

代码分割

这一直都不错,直到有一天遇到不能以单文件形式下载整个应用的情况。有时候你必须在应用程序中使用多个打包的脚本。

这就是需要对代码进行分割的地方。通过将应用程序拆解成多个部分,你才可以按照用户当前操作提供应用程序中相关的部分。

提到最小的单包,Webpack 通常***来处理文件大小,但这往往不是恰当的时机。Rollup 在这方面就好得多,但它对代码分割的支持则较弱。

Webpack 各分块文件的大小总和会超出单个 Rollup 打包出来的文件的大小,但这在你的应用中很可能不是什么问题。

如果你根据需求来对 Webpack 产生和各个包进行懒加载,那么用户最终下载的内容可能只是完整 Rollup 生成的包文件的一部分。

最终,更小更有针对性的打包会比单包给用户带来更多好处。当然如果你的应用中没什么机会用以懒加载,这些好处就不存在。

允许代码分割

下面的章节中我会展示如何以最简单的方式配置代码分割。我会把代码分割为两个应用包以及一个包含公共代码的库包。

下面是源码:

car-service.js
import { LoggerService } from './logger-service';

export class CarService {

  constructor() {    this.logger = new LoggerService();
  }

  getCar() {    this.logger.logMessage('getting car');    return 'BMW';
  }
}
person-service.js
import { LoggerService } from './logger-service';

export class PersonService {

  constructor() {    this.logger = new LoggerService();
  }

  getPerson() {    this.logger.logMessage('getting person');    return 'Joe Smith';
  }
}
logger-service.js
export class LoggerService {
  logMessage(msg) {
    console.log(msg);
  }
}

CarService 和 PersonService 会被分割到两个不同的应用包中,公共的 LoggerService 会被提取到一个共享包中。

配置

我听某些开发者说,Webpack 配置起来很难。我认为这是很多人一般不选择用 Webpack 来打包的原因之一,这也确实是  Webpack 存在的问题。新术语和模块格式可能就是入门的难点所在,但我相信人们会很快克服它们。尤其是在人们认识到优化打包优点的时候。

实际上对 Webpack 进行基本的配置是很简单的。我这个例子就是很基础,你可以很容易对其进行扩展,进行更高级的设置。

webpack-config.js
var path = require('path');const webpack = require('webpack');

module.exports = {
  entry : {
    person: './class="lazy" data-src/code-splitting-webpack/person-service.js',
    car: './class="lazy" data-src/code-splitting-webpack/car-service.js'
  },
  output: {
      filename: '[name].bundle.js',
      path: path.resolve(__dirname, '../../dist')
  },
  plugins: [    new webpack.optimize.CommonsChunkPlugin({
        name: 'lib',
        minChunks: 2,
        filename: '[name].js',
    })
  ]
}

我的配置中首先定义了 entry.person 和  entry.car,它们是我那些包的分割点。有了这个配置,就可以生成两个不同的应用包了。包名由 [name].bundle.js  规则来生成,[name] 在这里是一个占位符,它会被替换为 “car” 和 “person”。

如果配置到这里就结束,最终会得到两个包含完整应用程序功能的包。这是因为两个包中会有一些重复的东西来自共用的 LoggerService。默认情况下 LoggerSerivce 会被添加到两个包中。

CommonsChunkPlugin 可以解决这个问题。它会让 Webpack 将所有包中共用的公共代码拆分出来形成第三个包。

这个例子中的共享包非常简单,不过你可能不想在共享包中包含所有重复的代码。注意到 minChunks 配置项,这个配置项允许你指定要加入共享包的代码需要被重复使用的最小次数。

我把代码发布在      Github 上,如果你有兴趣可以取下来看看。

可以通过下面的 Webpack 命令来执行示例:

webpack --config webpack.config.js --progress

到此,关于“怎么在Webpack中执行代码分割”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

怎么在Webpack中执行代码分割

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么在python中执行js代码

本篇文章为大家展示了怎么在python中执行js代码,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。什么是js代码混淆?我们现在看一段js代码,代码逻辑很简单,就是拼接时间返回。function fo
2023-06-15

在Chrome中怎么执行JavaScript代码

这篇“在Chrome中怎么执行JavaScript代码”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“在Chrome中怎么执行
2023-06-29

webpack中怎么实现代码分片

webpack中怎么实现代码分片,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。CommonsChunkPlugin虽然这个插件在webpack4当中已经不推荐使
2023-06-20

在 PHP 中执行静态代码分析

开发的重要部分是识别错误并从您的代码库中快速消除它们,我们可以在 PHP 中编写代码或执行静态代码分析来实现这一点。 本篇文章介绍了 lint 模式和一些其他方法如何在 PHP 中执行静态代码分析。静态代码分析是检测错误、提高一般开发人员生
在 PHP 中执行静态代码分析
2024-02-27

Python中怎么执行js代码

这篇文章将为大家详细讲解有关Python中怎么执行js代码,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。正常代码我们现在看一段js代码,代码逻辑很简单,就是拼接时间返回。function f
2023-06-16

怎么在Java中执行字节码

今天就跟大家聊聊有关怎么在Java中执行字节码,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、
2023-06-14

vue中怎么持续执行一段代码

本篇内容介绍了“vue中怎么持续执行一段代码”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、使用setInterval方法setInter
2023-07-06

Java项目中怎么在子线程结束后执行代码

Java项目中怎么在子线程结束后执行代码?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。主线程等待子线程,然后子线程执行结束后,主线程再继续执行。主线程等待子线程需要用到:C
2023-05-31

React中代码分割的方法是什么

这篇“React中代码分割的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“React中代码分割的方法是什么”文章吧
2023-06-29

如何在 Java 代码中实现异步执行?(java代码如何实现异步执行)

在Java编程中,异步执行是一种非常重要的技术,它可以提高程序的性能和响应性。本文将介绍如何在Java代码中实现异步执行,包括使用线程池、CompletableFuture和Future等方式。一、使用线程池实现异步执行
如何在 Java 代码中实现异步执行?(java代码如何实现异步执行)
Java2024-12-14

怎么在cs中分割图片

怎么在cs中分割图片?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。场景:如果一个页面有个img小图标,那么访问浏览器的时候会因为加载图片导致浏览速度放慢。这个时候将这么多的
2023-06-14

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录