webpack的使用(上)

news2024/9/22 22:31:39

前言:在项目中安装和配置webpack、配置打包的入口与出口、配置webpack的自动打包功能、配置 html-webpack-plugin 生成预览页面、配置自动打包相关的参数等相关内容

一、了解webpack

1、概念

webpack 是一个流行的前端项目构建工具(打包工具),可以解决当前web开发中所面临的困境。webpack 提供了友好的模块化支持,以及代码压缩混淆、处理、js兼容问题、性能优化等强大的功能。

2、创建列表隔行变色项目

(1)新建项目空白目录,并运行npm init -y命令,初始化包管理配置文件 package.json

npm init -y

(2)新建src 源代码目录
在这里插入图片描述
(3)新建src -> index.html首页
在这里插入图片描述
(4)初始化首页基本的结构
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="index.js"></script>
</head>
<body>
    <ul>
        <li>第1个li</li>
        <li>第2个li</li>
        <li>第3个li</li>
        <li>第4个li</li>
        <li>第5个li</li>
        <li>第6个li</li>
        <li>第7个li</li>
        <li>第8个li</li>
        <li>第9个li</li>
        <li>第10个li</li>
    </ul>
</body>
</html>

(5)运行npm install jquery -s命令,安装 jQuery

npm install jquery -s

(6)通过模块化的形式,实现列表隔行变色效果
index.js

import $ from "jquery"
$(function(){
    $('li:odd').css('backgroundColor',"pink")
    $('li:even').css('backgroundColor',"yellow")
})

会发现效果没有出现,控制台还报错在这里插入图片描述
在这里插入图片描述

报错原因:import $ from "jquery"这是ES6模块化语法,浏览器对这种语法支持的不是很好。解决方法是配置webpack

二、项目中安装和配置webpack

1、步骤

1)运行 npm install webpack webpack-cli -D 命令,安装 webpack 相关的包

npm install webpack webpack-cli -D 

2)在项目根目录中,创建名为 webpack.config.js 的 webpack 配置文件
在这里插入图片描述
3)在 webpack 的配置文件中,初始化如下基本配置:

const path=require('path')
module.exports={
    // 编译模式
    mode:'development',  //development production
}

注意:在开发阶段,使用的development
4)在 package.json 配置文件中的 scripts 节点下,新增 dev 脚本如下:

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "webpack"
  },

在这里插入图片描述
5)在终端中运行 npm run dev 命令,启动 webpack 进行项目打包
没有报错,有相关打包信息,并且运行index.html文件效果实现说明配置成功了。
在这里插入图片描述

三、配置打包的入口与出口

1、配置

webpack的4.x版本中默认约定:打包的入口文件为 src -> index.js;打包的输出文件为 dist ->main.js
要修改打包的入口与出口,可以在webpack.config.js 中新增如下配置信息:

const path=require('path')
module.exports={
    // 编译模式
    mode:'development',  //development production
    entry: path.join(__dirname,'./src/index.js'), //打包入口文件路径
    output:{
        path: path.join(__dirname,'./dist'), //输出文件的存放路径
        filename:'bundle.js' //输出文件的名称
    }
}

请添加图片描述
请添加图片描述

2、遇到问题

我遇到了两个报错:
GET http://127.0.0.1:5500/bundle.js net::ERR_ABORTED 404 (Not Found).
Refused to execute script from ‘http://127.0.0.1:5500/bundle.js’ because its MIME type (‘text/html’) is not executable, and strict MIME type checking is enabled.
解决方法:webpack.config.js 中代码修改如下

const path=require('path')
module.exports={
    // 编译模式
    mode:'development',  //development production
    entry: path.join(__dirname,'./src/index.js'), //打包入口文件路径
    output:{
        path: path.join(__dirname,'./dist'), //输出文件的存放路径
        filename:'bundle.js' //输出文件的名称
    },
    //增加该内容,报错消除
     devServer: {
        static:{
            directory:path.join(__dirname,"/")
        }
    },
}

将 src->index.html 中,script脚本的引用路径,修改为

<script src="../dist/main.js"></script>

在这里插入图片描述
最终实现了创建列表隔行变色项目
在这里插入图片描述

四、配置webpack的自动打包功能

因为每次修改了内容,都要执行一次npm run dev打包,才能看到效果,所以配置webpack的自动打包功能比较方便。

1、步骤

1)运行 npm install webpack-dev-server -D 命令,安装支持项目自动打包的工具

npm install webpack-dev-server -D

2)修改 package.json ->scripts 中的 dev 命令修改如下:

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "webpack-dev-server"
  },

在这里插入图片描述

3)将 src->index.html 中,script脚本的引用路径,修改为“/bundlejs”

    <script src="/bundle.js"></script>

在这里插入图片描述

4)运行 npm run dev命令,重新进行打包在浏览器中访问http://localhost:8080地址,查看自动打包效果,点击相应文件即可查看
在这里插入图片描述

注意:http://localhost:8080/bundle.js,可查看打包文件内容,但是在编辑器中看不见该文件,webpack-dev-server生成的bundle.js并没有放在物理磁盘上,而是默认放到了项目根目录中、放在了内存中,是一个虚拟的、看不见的。会启动一个实时打包的 http 服务器webpack-dev-server。

五、配置 html-webpack-plugin 生成预览页面

因为复制http://localhost:8080/到浏览器展示项目内容,再点击内容查看界面是比较麻烦的,所以我们配置 html-webpack-plugin 到要预览页面。
1)运行 npm install html-webpack-plugin -D 命令,安装生成预览页面的插件

 npm install html-webpack-plugin -D 

2)修改 webpack.config.js 文件头部区域,添加如下配置信息:

//导入生成预览页面的插件,得到一个构造函数
const HtmlWebpackPlugin=require("html-webpack-plugin")
const htmlePlguin=new HtmlWebpackPlugin({// 创建插件的实例对象
    template:'./src/index.html', // 指定要用到的模板文件
    filename: 'index.html' // 指定生成的文件的名称,该文件存在于内存中,在目录中不显示
})

3)修改 webpack.config.js 文件中向外暴露的配置对象,新增如下配置节点:

const path=require('path')
const HtmlWebpackPlugin=require("html-webpack-plugin")
const htmlePlguin=new HtmlWebpackPlugin({
    template:'./src/index.html',
    filename: 'index.html'
})
module.exports={
    // 编译模式
    mode:'development', //development production
    entry: path.join(__dirname,'./src/index.js'), //打包入口文件路径
    output:{
        path: path.join(__dirname,'./dist'), //输出文件的存放路径
        filename:'bundle.js' //输出文件的名称
    },
    devServer: {
        static:{
            directory:path.join(__dirname,"/")
        }
    },
    plugins:[htmlePlguin]
}

这样http://localhost:8080/直接可以查看界面内容
在这里插入图片描述

六、配置自动打包相关的参数(自动打开浏览器,不需要手动粘贴复制)

webpack-dev-server --open 时,它会启动一个本地的开发服务器,并且自动在默认的浏览器中打开该服务器。 --host 配置 IP 地址, --port 配置端口
package.json

  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "webpack-dev-server --open --host 127.0.0.1 --port 8888"
  },

在这里插入图片描述
以上内容为webpack基本配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1463978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringCloud(15)之SpringCloud Gateway

一、Spring Cloud Gateway介绍 Spring Cloud Gateway 是Spring Cloud团队的一个全新项目&#xff0c;基于Spring 5.0、SpringBoot2.0、 Project Reactor 等技术开发的网关。旨在为微服务架构提供一种简单有效统一的API路由管理方式。 Spring Cloud Gateway 作为SpringCloud生态…

运维SRE-18 自动化批量管理-ansible4

12.2handles handles触发器(条件)&#xff0c;满足条件后再做什么事情应用场景&#xff1a;想表示&#xff1a;配置文件变化&#xff0c;再重启服务 配置handlers之前&#xff0c;每次运行剧本都会重启nfs&#xff0c;无论配置文件是否变化。 [rootm01 /server/ans/playbook]…

前端项目如何准确预估个人工时

补充 看来很多小伙伴对这个问题感兴趣&#xff0c;大家不要忽视了压工时这个事。 领导为什么会压工时&#xff1f; 使他的KPI更好看不清楚做这个东西实际要多长时间因为第2点的原因&#xff0c;他也无法去争取合理时间部分人看着下属加班&#xff0c;有种大权在握&#xff0…

题目 1226: 方砖问题

题目描述: 用边长小于N的正方形方砖&#xff08;注意&#xff0c;不要求所有的方砖大小相同&#xff0c;请看样例说明&#xff09;不重叠地铺满N*N的正方形房间&#xff0c;最少要几块方砖。 解题思路: 1.n是偶数时&#xff0c;都可以用4块边长为n/2的方砖填满&#xff1b;例…

2024/2/22

P8680 [蓝桥杯 2019 省 B] 特别数的和 题目描述 小明对数位中含有 2、0、1、9 的数字很感兴趣&#xff08;不包括前导 00&#xff09;&#xff0c;在 1 到 40 中这样的数包括 1、2、9、10 至 32、39 和 40&#xff0c;共28 个&#xff0c;他们的和是574。 请问&#xff0c;在…

SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测

SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测 目录 SCI一区 | Matlab实现GAF-PCNN-MSA格拉姆角场和双通道PCNN融合注意力机制的多特征分类预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 1.【SCI一区级】Matlab实…

以 All-in-One 模式安装 KubeSphere时避坑

环境 ubuntu 18.04 准备 安装服务插件 socat 必须 可选但建议 conntrack 必须 可选但建议 ebtables 可选但建议 可选但建议 ipset 可选但建议 可选但建议 命令 sudo apt-get install socat安装docker 建议自行安装&#xff0c;不用KubeSphere 自带的 处理服务器配置 1…

RISC-V架构——CLINT中断控制器初始化(直接模式、向量模式)

1、前言 CLINT(Core-Local Interruptor)翻译过来是核本地中断控制器&#xff0c;是比较简单的中断控制器&#xff0c;通常和PLIC&#xff08;Platform-Level Interrupt COntroller&#xff09;搭配使用使用CLINT涉及的MTVEC、MCAUSE寄存器&#xff0c;CLIC控制器也同样会使用&…

python(23)——while循环

前言 在Python中&#xff0c;while 循环用于重复执行一段代码块&#xff0c;只要指定的条件保持为真&#xff08;True&#xff09;。一旦条件变为假&#xff08;False&#xff09;&#xff0c;循环就会终止。while 循环通常用于在不知道循环将执行多少次的情况下进行迭代。 w…

【快速搞定Webpack5】修改输出文件目录及自动清理上次打包文件(五)

介绍 默认情况下webpack打包后&#xff0c;我们的图片和js等文件都会被打包到dist目录下&#xff0c;文件多了混淆在一起一方面不利于文件的查找和管理&#xff0c;另外一方面看上去也不美观。 所以今天我们学习的内容就是控制输出后的文件进入不同的目录。 一、配置 新增4…

对象池模式-Object Pool Pattern

原文地址:https://jaune162.blog/design-pattern/object-pool-pattern/ 原文中可下载高清SVG矢量类图 引言 对象池模式(Object Pool Pattern)是一种创建一组可重用对象的设计模式。它通过维护一个预分配的对象集合,避免了频繁地创建和销毁对象所带来的性能开销。在需要使用…

力扣145 二叉树的后序遍历 Java版本

文章目录 题目描述递归解法代码 非递归解法思路代码 题目描述 给你一棵二叉树的根节点 root &#xff0c;返回其节点值的 后序遍历 。 示例 1&#xff1a; 输入&#xff1a;root [1,null,2,3] 输出&#xff1a;[3,2,1] 示例 2&#xff1a; 输入&#xff1a;root [] 输出…

指针笔试题(C语言进阶)

目录 前言 1、案例一 1.1 答案 1.2 解析 2、案例二 2.1 答案 2.2 解析 3、案例三 3.1 答案 3.2 解析 4、案例四 4.1 答案 4.2 解析 5、案例五 5.1 答案 5.2 解析 总结 前言 “纸上得来终觉浅&#xff0c;绝知此事要躬行”。本篇通过对指针实际案例的分析&…

【Spring】SpringBoot 创建和使用

目 录 一.什么是Spring Boot&#xff1f;为什么要学Spring Boot&#xff1f;二.Spring Boot 优点三.Spring Boot 项目创建3.1 使用 Idea 创建3.2 网页版创建注意事项&#xff1a;包路径错误小结&#xff1a;约定大于配置 一.什么是Spring Boot&#xff1f;为什么要学Spring Boo…

算法沉淀——穷举、暴搜、深搜、回溯、剪枝综合练习二(leetcode真题剖析)

算法沉淀——穷举、暴搜、深搜、回溯、剪枝综合练习二 01.括号生成02.组合03.目标和04.组合总和 01.括号生成 题目链接&#xff1a;https://leetcode.cn/problems/generate-parentheses/ 数字 n 代表生成括号的对数&#xff0c;请你设计一个函数&#xff0c;用于能够生成所有…

【JS逆向学习】同花顺(q.10jqka)补环境

逆向目标 目标网址&#xff1a;https://q.10jqka.com.cn/ 目标接口&#xff1a; https://q.10jqka.com.cn/index/index/board/all/field/zdf/order/desc/page/3/ajax/1/ 目标参数&#xff1a;cookie 逆向过程 老规矩&#xff0c;先分析网络请求&#xff0c;发现是 cookie 加…

MySQL 8.0.36 WorkBench安装

一、下载安装包 百度网盘链接&#xff1a;点击此处下载安装文件 提取码&#xff1a;hhwz 二、安装&#xff0c;跟着图片来 选择Custom,然后点Next 顺着左边框每一项的加号打开到每一个项的最底层&#xff0c;点击选中最底层的项目&#xff0c;再点击传过去右边的绿色箭头&a…

光伏智慧化运维系统:实现一站式光伏服务前沿探索

随着全球能源结构的转型&#xff0c;光伏发电已成为绿色能源的重要组成部分。然而&#xff0c;光伏企业的运营和管理却面临着诸多挑战&#xff0c;如方案设计慢、运行状况难以实时掌握、收资效率低等。为解决这些问题&#xff0c;光伏智慧化运维系统应运而生&#xff0c;以其一…

2024牛客(4)K题

登录—专业IT笔试面试备考平台_牛客网 using i64 long long; using ll long long; constexpr ll M 1e9 7; template<class Info> struct SegmentTree {int n;std::vector<Info> info;SegmentTree() : n(0) {}SegmentTree(int n_, Info v_ Info()) {init(n_, …

学习笔记-Git

Git 问题一描述解决方法注意事项 问题一 描述 在commit和push的时候因为网络太慢了中途强行关闭了进程&#xff0c;而push的内容因为文件过大导致无法正常push 按照原本的流程在push的时候会提示失败&#xff0c;并且需要在解决了大文件之后重新push 而因为中途中断了&#x…