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

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日

相关文章

  • 使用JavaScript在html文档内添加新的元素节点

    使用JavaScript可以在html文档内添加新的元素节点,具体的步骤如下: 选中你想要添加元素的父节点 const parent = document.querySelector(‘#parent-id’); 这里假设你已经通过HTML的id属性找到了父节点,如果你不清楚可以查看querySelector的文档。 创建新节点 const newNode …

    JavaScript 2023年6月10日
    00
  • JavaScript动态数量的文件上传控件

    下面我将详细讲解JavaScript动态数量的文件上传控件的完整攻略。 什么是JavaScript动态数量的文件上传控件? JavaScript动态数量的文件上传控件是一个可以动态添加多个文件上传组件的控件。与传统的文件上传控件不同之处在于它支持增加上传文件的数量,而且使用JavaScript实现,不需要在服务器端进行特别的配置和编写。 如何实现JavaSc…

    JavaScript 2023年5月27日
    00
  • javascript 文字上下间隔滚动的代码 符合WEB标准 脚本之家修正版

    下面就来详细讲解“JavaScript文字上下间隔滚动的代码符合WEB标准脚本之家修正版”的完整攻略: 一、问题描述 有时候我们需要在网页中展示一些文字,但是为了让网页不显得太过单调,我们希望这些文字能够以一种滚动的形式进行展示,类似于一些新闻和通知栏目的效果。那么如何实现这样的滚动效果呢?下面就来介绍一种符合WEB标准的JavaScript文字上下间隔滚动…

    JavaScript 2023年6月11日
    00
  • js 数组 fill() 填充方法

    JS 数组 fill() 填充方法 简介 在 JS 中,fill() 方法可以用来填充数组的某一段区间,即将数组中的所有元素都替换为指定的值。fill() 方法接收三个参数:要填充的值、起始位置和终止位置(不包括终止位置本身)。这个方法具有可变性,即不会创建新的数组,而是直接修改原数组。 语法 arr.fill(value, start, end) valu…

    JavaScript 2023年5月27日
    00
  • 浅谈Javascript嵌套函数及闭包

    浅谈Javascript嵌套函数及闭包 Javascript中的嵌套函数和闭包是一些高级概念,但对于深入理解Javascript这门语言来说是必不可少的。在这篇文章中,我们将探讨Javascript中嵌套函数和闭包的概念、特点以及如何使用它们。 嵌套函数 嵌套函数,就是在一个函数体中定义另一个函数。在Javascript中,函数是一等公民,也就是说函数可以作…

    JavaScript 2023年6月10日
    00
  • 无感知刷新Token示例简析

    针对“无感知刷新Token示例简析”,我将提供完整的攻略,分为以下几个部分:背景介绍、方案设计、示例说明及参考文献。 背景介绍 随着Web应用不断扩大的规模和复杂度,用户态Token的安全性逐渐成为了不容忽视的问题,攻击者可以通过钓鱼、中间人等手段,窃取用户的Token,进而对用户的数据造成损失。为了解决这个问题,开发者可以通过刷新Token的方式,定期更换…

    JavaScript 2023年6月11日
    00
  • T-SQL篇如何防止SQL注入的解决方法

    下面是T-SQL篇如何防止SQL注入的解决方法的完整攻略。详细说明了什么是SQL注入、其危害性和如何避免SQL注入攻击。 什么是SQL注入? SQL注入是一种利用SQL查询语句中存在漏洞的攻击方式,攻击者通过输入恶意的SQL代码,使数据库执行非预期的操作。攻击者可以通过注入恶意代码来窃取、篡改、删除或者更改数据库中的数据。 SQL注入的危害性 SQL注入攻击…

    JavaScript 2023年6月11日
    00
  • JavaScript中property和attribute的区别详细介绍

    JavaScript中property和attribute的区别详细介绍 在JavaScript中,property和attribute指的都是HTML元素的属性,但它们的含义和使用方式有所不同。 property property是HTML元素的属性,是对象的一部分,可以通过JavaScript来操作。在JavaScript中,我们可以使用element.…

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