【webpack】高级篇

news2025/4/21 18:52:30

webpack高级应用

      • 安装流程
      • 提高开发效率与完善团队开发规范
          • devtool属性
        • devServer属性下
          • compress属性
          • port属性
          • headers请求头
          • proxy开启代理
          • https配置
          • http2配置
          • historyApiFallback配置
          • 开发服务器主机 host
          • 模块热替换与热加载
      • eslint代码规范
          • 取消黑色背景弹窗提示
      • git-hooks与husky
      • 模块和依赖
        • 模块解析(resolve)下alias和extensions
        • 第三方包起别名externals
        • 依赖图(dependdency graph)
      • 扩展功能
        • PostCSS和CSS模块
          • Postcss模块
          • Css模块
      • web Works

安装流程

  • npm init -y,自动建立package.json
  • npm install webpack webpack-cli npm install webpack-dev-server html-webpack-plugin -D
  • npm install babel-loader @babel/core @babel/preset-env -D
  • 新建app.js和webpack.config.js
    在这里插入图片描述
    在这里插入图片描述
  • 运行npx webpack serve
  • 基本环境已搭建
    在这里插入图片描述

提高开发效率与完善团队开发规范

devtool属性
  • 内置属性,一般只要安装webpack-dev-server这个就行
  • 代码行数的锁定,第三个属性不能锁定
  • 开发环境下,推荐使用最后一个
  • 生产环境下,一般不配置
    在这里插入图片描述
devServer属性下
compress属性
  • 设置是不是在服务端进行代码压缩,使传输过程中减少传输大小
    在这里插入图片描述

在这里插入图片描述

port属性
  • 配置端口号 port: 9000
    在这里插入图片描述
headers请求头
  • 配置请求头效果图
headers: {
      'X-Access-Token': 'huasheng',
    },

在这里插入图片描述

proxy开启代理
  • 当你含有对一些特定接口的网络请求,比如客户端地址是在http://localhost:9000/下
  • 接口来自http://localhost:3000/
  • 控制台报错跨域
  • 使用devServer的proxy功能
  • 当页面中使用"/api/getname"获取接口内容时候,会将/api替换成后面来请求
 proxy: {
      '/api': 'http://localhost:3000',
    },
https配置
  • 如何在本地将http服务变为https服务
  • 此时本地将不能使用http访问,https才行
    在这里插入图片描述
    在这里插入图片描述
http2配置
  • http2默认自带https自签名证书
historyApiFallback配置
  • 不配置,访问会报404

  • 配置了以后:当访问的是404响应的时候,响应会被替代为index.html
    在这里插入图片描述在这里插入图片描述

  • 如果还报404,可能是资源是相当路径,采取下面方法变绝对路径

 output: {
    publicPath: '/',
  },

在这里插入图片描述

开发服务器主机 host
  • 当你在开发环境中起了devserve服务,并期望同事访问,只需要配置
  host: '0.0.0.0', //目的让同事也能访问你的页面
  • 这样同事就能通过这个访问了
    在这里插入图片描述
模块热替换与热加载
  • 模块热加载
  • 启用webpack 的热模块特性,需要配置devServe.hot参数
 devServer: {
    hot: true, //热替换
}
 devServer: {
    liveReload: true, //热加载,默认开启
}

eslint代码规范

  • 用来扫描我们所写的代码是否符合规范,用于多人协作开发
  • npm i eslint -D
  • npx eslint --init,创建文件
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  • 这样,就会生成一个.eslintrc.json配置文件
    在这里插入图片描述
  • 新建文件,写入代码,运行检查
  • npx eslint ./src,发现有错
  • 第一条,希望我们不要使用console
    在这里插入图片描述
  • 解决
    在这里插入图片描述
  • 如果想要具体看到哪行出现问题,安装插件
    在这里插入图片描述
  • 如果不想使用插件还想实时报错

在这里插入图片描述

取消黑色背景弹窗提示

在这里插入图片描述
在这里插入图片描述

git-hooks与husky

  • 开发者一般不想边写边校验,想在上传代码时进行校验
  • 采取husky来协助进行代码eslint检验

模块和依赖

在这里插入图片描述
在这里插入图片描述

模块解析(resolve)下alias和extensions
  • webpack通过resolve实现了模块之间的依赖和引用
    resolve: {
      //配置解析,为防止写过多的../../
      alias: {
        // '@': path.resolve(__dirname, './src'),
        '@': path.join(__dirname, './src'),
        '@assets': path.join(__dirname, './src/assets'),
      },
      extensions: ['.js', '.json', '.css', '.vue'],
      //模块别名定义,方便后续直接引用别名,当同时出现文件名相同,扩展名不同的时候,优先请求的文件顺序
    },
第三方包起别名externals
  • 类似
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js">
 //为引用包起别名
    externals: {
      // 全局变量
      jquery: 'jQuery',//它本身还有个$别名
      vue: 'Vue',
      'vue-router': 'VueRouter',
    },
  • externalsType用于指定externals的类型
    在这里插入图片描述
依赖图(dependdency graph)
  • 如何查看项目的依赖关系
  • npm i webpack-bundle-analyzer
    在这里插入图片描述
  • npm webpack serve
    在这里插入图片描述

扩展功能

PostCSS和CSS模块
Postcss模块
  • Postcss模块是一个用JavaScript工具和插件转换css的工具,将最新的css语法转换成大多数游览器能够理解的语法
  • 安装相关插件:npm i autoprefixer -D
  • 新建postcss.config,用来专门配置css的插件
    在这里插入图片描述
  • 还得在这里指定一下游览器的版本
  • 在这里插入图片描述
Css模块
  • Css模块能让你永远不用担心命名太大众化而造成冲突,只要用最有意义的名字就行
  • 目的,就是当引用的css名相同的时候,他们不会冲突,原因是css名在渲染的时候编译为一串字符,
  • npm i postcss-nested -D

web Works

  • 当我们想在客户端进行大量的运算的时候,又不想阻塞js主线程的运算怎么办?
  • 方法一:异步,但运算量过大还是会造成假死状态
  • 方法二:web Works,html5的新特性,允许我们将复杂的运算放在后台,不会影响js的主线程
  • 如何定义works?在这里插入图片描述

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

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

相关文章

Vue中methods,watch与computed之间的差异

Methods methods 选项定义了组件中可以调用的方法。这些方法可以在模板中通过事件绑定或者在其他方法中调用。methods 中的函数可以接受参数&#xff0c;并且可以执行任意的 JavaScript 代码。因此&#xff0c;methods 主要用于处理组件中的用户交互、事件响应和自定义的操作。…

【FileZilla的安装与使用以及主动与被动模式详解

目录 一. FileZilla是什么&#xff1f; 二. FileZilla的安装与使用 2.1 FileZilla服务端安装与配置 2.1.2 新建组 2.1.3 新建用户 2.1.4 新建目录 2.1.5 权限分配 &#xff08;1&#xff09;用户fu权限分配 2.2 FileZilla客户端安装与使用 2.2.1 权限分配测试 权限演…

【ARMv8M Cortex-M33 系列 2.1 -- Cortex-M33 使用 .hex /.srec 文件介绍】

请阅读【嵌入式开发学习必备专栏 之Cortex-M33 专栏】 文章目录 HEX 文件介绍英特尔十六进制文件格式记录类型hex 示例Cortex-M 系列hex 文件的使用 hex 文件和srec 文件生成Motorola S-Record (srec) 格式 HEX 文件介绍 .hex 文件通常用于微控制器编程&#xff0c;包括 ARM C…

JUC Lock 锁入门

文章目录 死锁&#xff08;Deadlock&#xff09;通过 Visualvm 等工具排查死锁 活锁park & unpark与 wait & notify 的区别park & unpark 实现&#xff1a;点外卖 Lock 对象ReentrantLock 可重入锁可重入lockInterruptibly 方法上锁&#xff08;可打断&#xff09;…

C#,入门教程(04)——Visual Studio 2022 数据编程实例:随机数与组合

上一篇&#xff1a; C#&#xff0c;入门教程(03)——Visual Studio 2022编写彩色Hello World与动画效果https://blog.csdn.net/beijinghorn/article/details/123478581 C#&#xff0c;入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程https://blog.csdn.net…

Field II 仿真软件——安装

1. 去官网下载文件压缩包 Field II Ultrasound Simulation Program (field-ii.dk) 在Download页面下载符合自己系统的压缩包。 2. 解压压缩文件&#xff0c;然后将这个文件夹添加到matlab的路径中&#xff0c;如下图所示&#xff1a; 3. 在matlab命令行输入&#xff1a;field…

05 HAL库驱动蜂鸣器唱出一首小歌

目录 一、蜂鸣器的基本知识 1、有源蜂鸣器 2、无源蜂鸣器 二、PWM的相关知识 1. PWM概念 2. PWM常见参数 3.PWM基本结构 三、蜂鸣器发出音调的原理 四、频率计算 五、实验开始 一、蜂鸣器的基本知识 蜂鸣器是一种能够发出持续而连续的声音的电子设备&#xff0c;它被…

【十一】【C++\动态规划】1218. 最长定差子序列、873. 最长的斐波那契子序列的长度、1027. 最长等差数列,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…

.NET进阶篇06-async异步、thread多线程2

知识须要不断积累、总结和沉淀&#xff0c;思考和写做是成长的催化剂web 内容目录 1、线程Thread 一、生命周期 二、后台线程 三、静态方法 1.线程本地存储 2.内存栅栏 四、返回值 2、线程池ThreadPool 一、工做队列 二、工做线程和IO线程 三、和Thread区别 四、定时器 1、线…

3D视觉-激光三角测量法的分类

按照入射激光光束和被测物体表面法线的角度关系&#xff0c;一般分为直射式和斜射式两种方式。 1&#xff09;直射式测量 如图所示&#xff0c;激光器发出的光线&#xff0c;经会聚透镜聚焦后垂直入射到被测物体表面上&#xff0c;物体移动或者其表面变化&#xff0c;导致入射…

纯CSS的华为充电动画,它来了

&#x1f4e2; 鸿蒙专栏&#xff1a;想学鸿蒙的&#xff0c;冲 &#x1f4e2; C语言专栏&#xff1a;想学C语言的&#xff0c;冲 &#x1f4e2; VUE专栏&#xff1a;想学VUE的&#xff0c;冲这里 &#x1f4e2; Krpano专栏&#xff1a;想学Krpano的&#xff0c;冲 &#x1f514…

ubuntu磁盘管理常用命令

写的不全&#xff0c;后面随时修改。 Linux 磁盘管理常用三个命令为 df、du 和 fdisk。 df&#xff08;英文全称&#xff1a;disk free&#xff09;&#xff1a;列出文件系统的整体磁盘未使用量du&#xff08;英文全称&#xff1a;disk used&#xff09;&#xff1a;检查磁盘空…

GcExcel:DsExcel 7.0 for Java Crack

GcExcel:DsExcel 7.0-高速 Java Excel 电子表格 API 库 Document Solutions for Excel&#xff08;DsExcel&#xff0c;以前称为 GcExcel&#xff09;Java 版允许您在 Java 应用程序中以编程方式创建、编辑、导入和导出 Excel 电子表格。几乎可以部署在任何地方。 创建、加载、…

[python]python利用pyaudio录制系统声音没有立体声混音怎么录制系统音频

当电脑没有立体声混音导致Python写代码无法使用pyaudio进行录制系统声音怎么办&#xff1f;查阅资料和安装驱动等方法都不行&#xff0c;难道没办法了吗&#xff1f;那为什么电脑其他软件可以做到呢&#xff1f;因此研究了一下pyaudio在没有立体声混音情况下确实无法录制声音&a…

数据模型设计

数据模型设计&#xff0c;可以理解为数据库中的表结构设计。 我们在设计器中创建的数据模型&#xff0c;也称为实体。我们将前端页面中传过来的数据保存到对应的实体中&#xff0c;即为将前端数据保存到了数据库中。 1 、实体与枚举的创建 1 .1 创建供应商 supplier实体 在左…

MySQL基础学习: 由delete和insert操作导致的死锁问题

一、问题复现&#xff1a;表结构 CREATE TABLE user_props (user_id bigint NOT NULL ,prop_key varchar(100) NOT NULL ,prop_value varchar(100) NOT NULL,PRIMARY KEY (user_id,prop_key) )二、死锁测试 &#xff08;1&#xff09;开启两个事务 &#xff08;2&#xff09;…

基于微信小程序的停车预约系统设计与实现

基于微信小程序的停车预约系统设计与实现 项目概述 本项目旨在结合微信小程序、后台Spring Boot和MySQL数据库&#xff0c;打造一套高效便捷的停车预约系统。用户通过微信小程序进行注册、登录、预约停车位等操作&#xff0c;而管理员和超级管理员则可通过后台管理系统对停车…

【python】爬取百度热搜排行榜Top50+可视化【附源码】【送数据分析书籍】

一、导入必要的模块&#xff1a; 这篇博客将介绍如何使用Python编写一个爬虫程序&#xff0c;从斗鱼直播网站上获取图片信息并保存到本地。我们将使用requests模块发送HTTP请求和接收响应&#xff0c;以及os模块处理文件和目录操作。 如果出现模块报错 进入控制台输入&#xff…

【软件工程】走进敏捷开发:灵活、协作、迭代的软件工艺之旅

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a; 软件工程 ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 前言&#xff1a; 正文 敏捷开发&#xff08;Agile Development&#xff09; 详细介绍&#xff1a; 优缺点&#xff1a; 优点&#xf…

(2023)PanGu-Draw:通过时间解耦训练和可重用的 Coop-Diffusion 推进资源高效的文本到图像合成

PanGu-Draw: Advancing Resource-Efficient Text-to-Image Synthesis with Time-Decoupled Training and Reusable Coop-Diffusion 公众&#xff1a;EDPJ&#xff08;添加 VX&#xff1a;CV_EDPJ 或直接进 Q 交流群&#xff1a;922230617 获取资料&#xff09; 目录 0. 摘要…