webpack 3.X学习之多页面打包的方法

yizhihongxing

webpack 3.X学习之多页面打包的方法

前言

在实际我们的开发中可能需要构建多个页面,对于我们的前端项目而言,在每个页面之间进行切换和操作,需要单独的代码对其进行处理。webpack 提供了一种分离应用程序的方法,将公共的部分提取出来成为一个单独的块,用以支持多页面的单独加载,减小了每个页面所需的代码量,提高代码加载速度。

创建一个项目

我们先创建一个包含两个页面的项目:

├─dist
├─src
│  ├─assets
│  │   └─css
│  ├─app.js
│  ├─home.js
│  ├─about.js
│  └─index.html
├─webpack.config.js    
├─package.json
└─README.md

其中,home.js 和 about.js 是两个页面独有的 JS 代码,在这里模拟页面个性化代码,将它们分别引入到对应的 HTML 中,如下:

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Home Page</title>
</head>
<body>
  <div id="app"></div>
  <script src="assets/js/vendors~app.js"></script>
  <script src="assets/js/app.js"></script>
  <script src="assets/js/home.js"></script>
</body>
</html>

about.html:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>About Page</title>
</head>
<body>
  <div id="app"></div>
  <script src="assets/js/vendors~app.js"></script>
  <script src="assets/js/app.js"></script>
  <script src="assets/js/about.js"></script>
</body>
</html>

配置webpack

我们先需要安装一些必要的依赖包:

npm install webpack webpack-cli html-webpack-plugin clean-webpack-plugin --save-dev

webpack.config.js 配置如下:

const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const CleanWebpackPlugin = require('clean-webpack-plugin');


module.exports = {
  mode: 'development',

  entry: {
    app: path.resolve(__dirname, 'src/app.js'),
    home: path.resolve(__dirname, 'src/home.js'),
    about: path.resolve(__dirname, 'src/about.js')
  },

  output: {
    filename: 'assets/js/[name].[chunkhash:8].js',
    path: path.resolve(__dirname, 'dist')
  },

  plugins: [
    new CleanWebpackPlugin(['dist']),
    new HtmlWebpackPlugin({
      title: 'Home Page',
      filename: 'index.html',
      chunks: ['app', 'home']
    }),
    new HtmlWebpackPlugin({
      title: 'About Page',
      filename: 'about.html',
      chunks: ['app', 'about']
    })
  ]
};

在这里,我们使用了 html-webpack-plugin 来实现自动生成 HTML 文件,其中它具备的一些配置项解析如下:

  • filename:生成后的文件名,可以带有相对路径;
  • chunks:需要引入的代码块,这里我们引入了两个 JS 文件,分别是 app 和 home,并指定了它们所对应的 HTML 文件;

测试

在配置文件中完成了这些之后,我们可以执行 npm run build 命令进行测试,分别生成对应的首页和关于页面,文件目录如下:

├─dist
│  ├─assets
│  │  ├─js
│  │  │ ├─about.c399af4f.js
│  │  │ ├─app.f9f6a0f9.js
│  │  │ └─home.c399af4f.js
│  │  └─css
│  │      └─[name].[hash:8].css
│  ├─about.html
│  └─index.html   
├─src
│  ├─assets
│  │  └─css
│  │     └─app.bb390ce8.css
│  ├─app.js
│  ├─home.js
│  ├─about.js
│  └─index.html
├─webpack.config.js    
├─package.json
└─README.md

教程结论

在这条攻略中,我们实现了 Webpack 多页面打包的方法。大家可以根据自己的需求,将其应用到自己的项目中,从而提高代码加载速度。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:webpack 3.X学习之多页面打包的方法 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • 教你如何突破IE安全限制获取iframe子框架内的本地cookie(图)

    这里我会详细讲解如何突破IE安全限制获取iframe子框架内的本地cookie。 1. 背景 在WEB开发过程中,我们经常会使用iframe来引用其他页面。然而,由于浏览器安全策略的限制,不同域名下的iframe无法通过JS访问彼此的内容。本文就是围绕此问题展开,让大家掌握如何通过突破IE安全限制获取iframe子框架内的本地cookie。 2. IE安全限…

    JavaScript 2023年6月11日
    00
  • 详解js中的原型,原型对象,原型链

    我来为你详细讲解“详解js中的原型,原型对象,原型链”的完整攻略。 1. 原型 在 Javascript 中,每个对象都有一个原型对象(prototype)。原型是一个简单的对象,它是由对象创建函数(Object、Array、Function 等)创建的。 我们来看一个简单的示例: function Person(name, age) { this.name…

    JavaScript 2023年5月27日
    00
  • 关于js typeof 与 instanceof 判断数据类型区别及开发使用

    关于 JS typeof 与 instanceof 判断数据类型的区别及使用攻略 在 JavaScript 开发中,判断数据类型是一项非常重要的操作,正因为这个原因,我们需要了解如何使用 typeof 和 instanceof 来判断不同类型的数据。 typeof 操作符 typeof 操作符是 JavaScript 中最常用的类型判断工具之一,它可以返回一…

    JavaScript 2023年6月10日
    00
  • JS把字符串格式的时间转换成几秒前、几分钟前、几小时前、几天前等格式

    转换字符串格式的时间为类似“几秒前”、“几分钟前”、“几小时前”、“几天前”等格式,通常需要先将字符串格式的时间转换成时间戳,然后获取当前时间戳与字符串格式时间戳之间的差值,最后根据差值计算出对应的时间差,即可得到所需的格式化时间。 以下是完整的攻略: 步骤一:将字符串时间转换成时间戳 在JS中可以使用Date对象将字符串格式的时间转换成时间戳,具体代码如下…

    JavaScript 2023年5月27日
    00
  • js实现div拖动动画运行轨迹效果代码分享

    关于“js实现div拖动动画运行轨迹效果代码分享”的完整攻略,主要包含以下几个部分: 基本思路 实现步骤 示例说明 基本思路 实现div拖动动画运行轨迹效果,一般可以采用JS和CSS配合的方式。具体来说,主要实现以下几个步骤: 给div绑定mousedown事件,当鼠标按下时触发。 给document绑定mousemove事件,当鼠标移动时触发。 给docu…

    JavaScript 2023年6月10日
    00
  • DOM3中的js textInput文本事件

    DOM3中的textInput事件详解 textInput事件是DOM3规范中新加入的文本输入事件,用于处理在元素中输入文本的情况。在此之前,开发人员通常使用keyup、keydown等事件来处理文本输入的情况,但这些事件存在一些问题,比如无法处理复制、粘贴等操作。 textInput事件的优势在于可以精确地跟踪用户的输入,并且可以在用户输入结束后触发,不需…

    JavaScript 2023年6月10日
    00
  • js实现在字符串中提取数字

    实现在字符串中提取数字这个需求,可以用正则表达式来完成。下面是实现这个需求的攻略: 正则表达式 正则表达式是一种用于字符串匹配的表达式,用来描述一类符合某个语法规则的字符串。在这个需求中,我们需要提取字符串中的数字,可以使用正则表达式匹配数字来完成。 下面是匹配数字的正则表达式,可以用来匹配整数或小数: /([-+]?[0-9]+\.?[0-9]*)|([-…

    JavaScript 2023年5月28日
    00
  • Javascript之String对象详解

    Javascript之String对象详解 String对象简介 String对象是Javascript中的基本对象之一,用来表示字符串类型。在Javascript程序中,经常需要对字符串进行各种处理,使用String对象提供的方法便可轻松实现。 String对象的创建 可以使用字面量、字符串构造函数或toString()函数来创建String对象。 var…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部