webpack基础理解

news2024/9/20 8:06:14

webpack基础理解

webpack就是将不同格式的文件打包成浏览器能够执行识别的文件

首先创建一些文件
在这里插入图片描述

npm init -y 初始化文件 生成一个配置文件package.json

  • 这里如果直接打开静态文件引入main 他会提示你import引入这种模块化语法有问题浏览器并不能直接识别,这时就需要我们通过webpack打包成浏览器识别的js语法
    npm i webpack webpack-cli -D//安装webpack包
    npx webpack ./src/main.js --mode=development//开发环境
    npx webpack ./src/main.js --mode=production//生产环境
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

webpack配置

接下来就是对webpack文件的配置
入口entry
输出output
加载器loader
插件plugins
模式mode (开发development,生产production)

在webpack根目录加上webpack.config.js 写法固定不变

const path = require('path')//nodejs核心模块,专门用来处理路径问题
module.exports = {
    //入口
    entry: './src/main.js',//相对路径
    //出口
    output: {
        //__dirname nodejs变量,代表当前文件夹目录,当前文件侠士config.js 目录就是最外层的demo
        path: path.resolve(__dirname, 'dist'),//绝对路径
        //文件名
        filename: 'static/index.js',
        clean:true//每次打包清空之前
    },
    //加载器
    module: {
        //规则
        // loader的配置
        rules: [
            
        ]

    },
    //插件
    plugins: [],
    //模式
    mode: "development"
}

loader配置官方文档
这里文档有个通病就是
在这里插入图片描述
这里只让我们下载css-loader 而配置文件却是
{ test: /\.css$/i, use: ["style-loader", "css-loader"], },
这时候会报错在这里插入图片描述
说我们style-loader没有找到

正确的是同时也要下载style-loader 必坑,use可以使用多个loader数组形式,而loader只能写一个loader

下面主要讲解loader配置

 //加载器
    module: {
        //规则
        // loader的配置
        rules: [
            {
                test: /\.css$/i,
                use: ["style-loader", "css-loader"],
            },
            //图片性能优化小于10kb进行base64转换,优点减少请求数量,缺点体积变大
            {
                test: /\.(png|jpe?g|gif|webp|svg)$/,//图片配置 如果是视频或者字体资源直接在这里改就行了
                type: 'asset',//设置资源 type:‘asset/resource’原封不动输出
                generator: {
                      filename: "static/image/[hash:10][ext][query]",//打包文件名hash唯一值hash:10哈希值前10位,ext后缀 query其他参数
                },
                parser: {
                    dataUrlCondition: {
                        // 小于10kb会转换base64,
                        maxSize: 10 * 1024 
                    }
                }
            }
        ]

    },

深入配置文件ESLint

由于以上配置仅对模块化语法进行编译对于箭头函数等等一系列还没有自己解析的规则,因此我们需要进行配置来对jsx等等进行编译
配置文件写法有很多

  • .eslintrc.*
  • .eslintrc
  • .eslintrc.js
  • .eslintrc.json
  • 区别在于配置格式写法不一样,我们常用js来用

还有一种写法就是直接在package.json中的eslintConfig中写,这样就不需要创建文件,在原有文件基础上写ESLint会自动查找并读取他们,所以以上方式存在一个即可

//以.eslintrc.js配置文件为例
module.exports={
	//解析选项
	perserOptions:{
		ecmaVersion:6,//ES语法版本
		sourceType:"module",//ES模块化
		ecmaFeatures:{//Es其他特性
			jsx:true//如果是React项目,就需要开启jsx语法
		}
	},
	//具体检查规则
	rules:{},
	//继承其他规则
	extends:[]
}

eslint官方文档

rules具体规则

  • "off"或0 -关闭规则
  • "warn"或1 -开启规则,警告级别错误warn不会导致程序退出
  • "error"或2 -开启规则,错误级别错误error触发时程序会退出

demo

rules:{
	semi:"error",//禁止使用分号
	'array-callbac-return':"warn",//强制数组方法的回调函数有return语句否则警告
	'default-case':[
		'warn',//要求swutch语句中有default分支否则警告
		{commentPattern:'^no default$'}//允许在最后注释 no default, 就不会有警告了
	],
	eqeqeq:[
		'warn',//强制使用=== 和!==否则警告
		'smart'//除了少数情况下不会警告
	]	
}

extends 继承

开发自己写rules规则太费经了,所以最好的方式就是继承现有的规则
常用的的规则

  • Eslint官方规则 eslint:recommended
  • vue Cli:plugin:vue/essential
  • react Cli:react-app
//demo
module.exports={
	//继承eslint规则
	extends:["eslint:recommended"],
	env:{
		node:true,//启用node中全局变量
		browser:true,//启用浏览器中全局变量
	},
	parserOptions:{
		ecmaVersion:6,//es6中语法
		sourceType:"module",
	}
	rules:{
		//在这里写的规则会自动覆盖继承的规则
		"no-var":2,//不能使用var定义变量
	}
}

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

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

相关文章

计算机组成原理 第四章笔记记录

为笔记记录,会有个人的理解在里面,若有错误请指出,看到了就改,视频链接 指令格式 指令和指令集的定义 指令:指示计算机执行某种操作的命令,是计算机运行的最小功能单位 指令集:一台计算机的所有指令的集合构成该计算机的指令系统…

微信小程序【获取用户昵称头像和昵称(附源码)】

获取用户昵称头像和昵称 wx.getUserProfile bindgetuserinfo 登录过程 前端源码:https://pan.baidu.com/s/1uz2Gm2FMB-8RFVkhlHY3kQ 提取码:zb4w 后端源码:https://pan.baidu.com/s/1iPpLrXzWnpAsk5UsfKesGw 提取码:8bwm 小程…

Java poi之word文本图片内容提取

目录结构前言文档准备引入Maven依赖代码块提取结果验证孤勇者提取结果青鸟提取结果对比前言 应公司需求,需实现以下功能 word文本内容的替换;word文本内容的提取;word文档中图片的提取存放 此文章将使用Apache POI实现Word文档中文本内容及…

2023-2-3 刷题情况

二叉树着色游戏 题目描述 有两位极客玩家参与了一场「二叉树着色」的游戏。游戏中,给出二叉树的根节点 root,树上总共有 n 个节点,且 n 为奇数,其中每个节点上的值从 1 到 n 各不相同。 最开始时: 「一号」玩家从 …

BIGEMAP GIS Office添加离线地图

BIGEMAP GIS Office添加离线地图发布时间:2019-01-04 版权:BIGEMAP添加离线地图相关应用:搭建 离线地图 二次开发目的:搭建内网地图服务器,内网中可多人访问的地图服务,无需上网工具下载:1、BIG…

2023年企业必不可少的私域运营系统

随着人口红利消失、流量越来越贵、公域转化越来越难,2023年,能够提升用户全生命周期的私域运营,已经成为企业不得不做的事。 面对这种情况,企业必须要引入一款专业且高效的私域运营利器,来实现高效率私域运营管理。快…

二叉树层次遍历的C语言实现

二叉树 树是n个节点的有限集 每个节点事多有两颗子树的树称为 二叉树 二叉树的层次遍历 使用队列的数据结构,从树的根结点开始,依次将其左孩子和右孩子入队。而后每次队列中一个结点出队,都将其左孩子和右孩子入队,直到树中所有结…

Linux——死锁概念介绍和解决方式

目录 一.死锁概念介绍 二.死锁的解决方式 (一).预防死锁 方式一:不请求 方式二:强制剥夺资源 方式三:线性分配资源 (二).避免死锁:银行家算法 总体流程 安全性检查&#xf…

C语言---冒泡排序和快速排序

文章目录前言一、冒泡排序1.简介2.算法思路3.代码实现二、快速排序1.简介2.算法思路2.1左右指针法2.2挖坑法2.3前后指针法总结前言 交换排序有冒泡排序和快速排序这两种, 基本思想:所谓交换,就是根据序列中两个记录键值的比较结果来对换这两…

多目标跟踪:文献综述

文章目录摘要1、简介1.1、与其他相关综述的区别1.2、贡献1.3、综述的结构1.4. 外延2、 MOT问题2.1、问题公式化2.2、MOT的分类2.2.1、初始化方法2.2.2、处理方式2.2.3、输出类型2.2.4. 讨论3、MOT的组成3.1、外观模型3.1.1、视觉表征3.1.2. 统计测量3.2、运动模型3.2.1. 线性运…

安装httprunner manager遇到的坑

安装httprunner manager参考博客:https://www.cnblogs.com/MrqiuS/p/12944481.html安装mysqlclient报错Collecting mysqlclient1.3.12Downloading https://mirrors.aliyun.com/pypi/packages/6f/86/bad31f1c1bb0cc99e88ca2adb7cb5c71f7a6540c1bb001480513de76a931/m…

maven利用springboot的配置文件进行多个环境的打包

在Spring Boot中多环境配置文件名需要满足application-{profiles.active}.properties的格式,其中{profiles.active}对应你的环境标识,可以随意命名,但要与pom文件中环境标识一样。至于哪个具体的配置文件会被加载,需要在applicati…

Docker系列 01

前言 学完这篇文章,你会知道Docker是什么?解决了什么问题以及如何安装Docker。在后续的系列文章中,我们会陆续介绍Docker的常用命令、镜像原理、Dockerfile以及网络管理等,让你对Docker有较为系统的认知,持续关注吧。 …

多继承的运用

//在封装一个领导类(Leader):包括受保护成员:岗位、工资,完成其相关函数及show//由以上两个类共同把派生出学生干部类:引入私有成员:管辖人数,完成其相关函数以及show函数//在主程序中&#xff…

一刷代码随想录——动态规划

1.理论基础如果某一问题有很多重叠子问题,使用动态规划是最有效的。所以动态规划中每一个状态一定是由上一个状态推导出来的,这一点就区分于贪心,贪心没有状态推导,而是从局部直接选最优的。对于动态规划问题,我将拆解…

24考研——高等数学的基础概念定理(一)——第一章|函数、极限、连续

今天考试,考定理,我是真没想到这些定理,脑袋瓜子嗡嗡的,害,废话少说,直接开干 文章目录一、基础概念定理1.1 收敛数列的性质(唯一性、有界性、保号性、数列与子列关系)1.2 函数极限的…

一款语文老师写的word办公神级插件

没错,正如题所说,这是一款语文老师开发的word办公神级插件----不坑盒子,小编体验了一下还真是太强大了!双击exe文件,选择任意安装目录即可开始安装如果你的电脑缺少运行库,软件会自动帮你下载安装好安装完成…

QT模块化编程 pro pri 子工程 使用

如果工程过大时,就需要分子模块,Qt 也给我们提供了一种方式 Pri; 这里我们来看看Pri在项目中的使用,项目使用实际上也是很有主要可以模块清晰化,能提高程序的可扩展性。 网上这种写的很多,但少有写明白的&…

EGFR靶点药物研发进展-销售数据-上市药品前景分析

根据世界卫生组织的最新报告,与世界上其他癌症相比,肺癌导致的死亡率最高。非小细胞肺癌 (NSCLC) 约占肺癌病例总数的 85%。大量的风险因素归因于肺癌的发展,表皮生长因子受体 (EGFR) 是最常见的突变驱动基因之一,通过调节 PI3K/A…

Sentinel之授权规则与规则持久化

一、上集回顾上级文章地址:【SpringCloud】Sentinel 之隔离与降级_面向架构编程的博客-CSDN博客我们先来回顾一下Sentinel控制台上面的功能:所以,本章节就来研究 "授权规则"这一功能模块。二、授权规则授权规则可以对请求方来源做判…