前端构建工具(webpackvite)

news2024/9/30 23:30:51

这里写目录标题

  • 构建工具
    • webpack介绍
      • 配置文件简介
      • entry
      • output
      • loader
      • babel
      • 插件
      • 开发服务器(webpack-dev-server)
      • soureMap
  • vite

构建工具

当我们习惯了在node中编写代码的方式后,在回到前端编写html、css、js这些东西会感觉到各种的不便。比如:不能放心的使用模块化规范(浏览器兼容性问题)、即使可以使用模块化规范也会面临模块过多时的加载问题。我们就迫切的希望有一款工具可以对代码进行打包,将多个模块打包成一个文件。这样一来即解决了兼容性问题,又解决了模块过多的问题。构建工具就起到这样一个作用,通过构建工具可以将使用ESM规范编写的代码转换为旧的JS语法,这样可以使得所有的浏览器都可以支持代码。

webpack介绍

src 是把所有的源码放在了这个src 里面。
我们使用打包工具的前提是这个项目得是一个node项目,所以我们在使用webpack要先把项目初始一下 yarn init -y,会出现一个package.json,初始化就完事了。然后就安装依赖 yarn add -D webpack webpack-cli. -D表示的是开发依赖,区分一下是开发的时候要用的还是运行的时候要用的。然后再项目中创建src 目录,然后编写代码,index.js是默认主目录,是入口文件。然后执行‘’yarn webpack 来对代码进行打包,打包好观察dist目录。dist目录就是打包后的版本。dist目录里有个main.js,就是打包后的代码,index.js是源码。在这里插入图片描述webpack-cli 是命令行工具,没有安装不能用yarn webpack打包。

配置文件简介

webpack.config.js是给node.js看的,所以要遵循node的模块化规范。怎么区分,src 以内的遵循前端规则,src以外的遵循node的开发规范。在这里插入图片描述

entry

在这里插入图片描述
entry 是用来指定打包时的主文件(入口文件 ) 默认是 ./src/index.js。一般不改。在这里插入图片描述

output

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

loader

webpack默认情况下,只会处理js文件,如果我们希望它可以处理其他类型的文件,则要为期引入loader。loader 让 webpack 能够去处理其他类型的文件(默认只能处理js文件),并将它们转换为有效 模块,以供应用程序使用,以及被添加到依赖图中。
使用步骤:
1.安装对应的loader: yarn add css-loader style-loader -D.
2.配置方式:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
css-loader 只负责打包,style-loader 负责渲染生效【单一职责原则】
loader 执行顺序为从后向前执行,因此use的数组顺序不能调换

babel

在编写js代码时,经常需要使用一些js中的新特性,而新特性在旧的浏览器中兼容性并不好。此时就导致我们无法使用一些新的特性。babel就是这样一个工具,可以将新的js语法转换为旧的js,以提高代码的兼容性。

使用步骤
1.安装 npm install -D babel-loader @babel/core @babel/preset-env
在这里插入图片描述
2.配置

module: {
  rules: [
    {
      test: /\.m?js$/,
      exclude: /(node_modules|bower_components)/,
      use: {
        loader: 'babel-loader',
        options: {
          presets: ['@babel/preset-env']
        }
      }
    }
  ]
}

3.在package.json中设置兼容列表
在这里插入图片描述

插件

在这里插入图片描述
常用插件
html-webpack-plugin
这个插件可以在打包代码后,自动在打包目录生成html页面
使用步骤:
1.安装依赖 yarn add -D html-webpack-plugin
2.引入依赖 const HTMLPlugin = require(“html-webpack-plugin”)
3.配置插件
在这里插入图片描述

开发服务器(webpack-dev-server)

安装:yarn add -D webpack-dev-server
启动:yarn webpack server–open(–open 表示启动服务器后自动打开浏览器)
配置 webpack-watch 执行,(在本地文件夹中访问)代码发生变化时自动更新打包。在这里插入图片描述
可以在package.json中配置
1.先用yarn add-D webpack-dev-server 安装一下
2.就可以启动了,在命令行打yarn webpack server
3.就会把我们的代码布置在一个服务器中
4.直接访问这个地址就行了
在这里插入图片描述
注意:在执行开发服务器之后,一定要在手动的执行yarn webpack,然后才能把打包的东西放在服务器里,不然可能拿到的不是最新的

soureMap

devtool:“inline-source-map” 把我们的源码和编译后的这种代码给我们做成了一个映射
在这里插入图片描述

vite

概念
vite也是前端的构建工具
相较于webpack,vite采用了不同的运行方式:
开发时,不对代码打包,而是采用ESM(ES模块)的方式来运行项目
在项目部署时,再对项目进行打包
vite的速度比webpack要快很多,使用也很方便(都配置好了)
本质上vite和webpack是打包工具,只是webpack比较底层,需要自己手动去配置。
ESM必须通过url加载页面(也就是通过服务器运行,不是本身文件)
基本使用
1.安装开发依赖 yarn add -D vite
2.vite的源码目录默认就是项目的根目录
再页面中引入js文件的时候要指定 type = ‘module’
修改路径直接在script 标签中修改src属性正确即可(webpack需要配置)
3.开发命令:
vite 启动开发服务器
vite bulid 打包代码
vite preview 预览打包后代码
4.使用命令构建项目
在这里插入图片描述
5.使用插件
在这里插入图片描述
需要使用ES6的模块化(export default)去暴露文件(区别webpack使用require)

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

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

相关文章

【PB案例学习笔记】-30动态打开窗口

写在前面 这是PB案例学习笔记系列文章的第30篇,该系列文章适合具有一定PB基础的读者。 通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。 文章中设计到的源码,小凡都上传到了gite…

【C++报错已解决】Multiple Definition of Symbol

🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 文章目录 引言一、问题描述1.1 报错示例1.2 报错分析1.3 解决思路 二、解决方法:方法一:使用extern关键…

Linux驱动开发-03字符设备驱动框架搭建

一、字符设备驱动开发步骤 驱动模块的加载和卸载(将驱动编译模块,insmod加载驱动运行)字符设备注册与注销(我们的驱动实际上是去操作底层的硬件,所以需要向系统注册一个设备,告诉Linux系统,我有…

最新知识付费系统3.0整站+自动采集同步插件

支持分类替换 将主站同步过来的文章分类进行替换 支持自定义文章作者(选择多个作者则同步到的文章作者将会随机分配) 支持添加黑名单分类 添加后 如果同步过来的文章包含黑名单分类将不会发布文章 自动检测同步,无需人工值守以及挂采集软件…

ProFuzzBench入门教学——使用(Ubuntu22.04)

ProFuzzBench是网络协议状态模糊测试的基准测试。它包括一套用于流行协议(例如 TLS、SSH、SMTP、FTP、SIP)的代表性开源网络服务器,以及用于自动执行实验的工具。详细参考:阅读笔记——《ProFuzzBench: A Benchmark for Stateful …

研华运动控制卡在LabVIEW中的应用

在现代工业和科研领域中,精密运动控制系统的需求日益增加。这些系统广泛应用于自动化生产线、精密机械加工、机器人控制、光学仪器调试和实验室自动化设备等诸多领域。本文以研华公司的运动控制卡为例,详细介绍其在LabVIEW中的应用,展示如何通…

习题练习以

题意:求i&M的popcount的和,i属于0……N 主要思路还是变加为乘。 举个例子N22,即10110 假设M的第3位是1,分析N中: 00110 00111 00100 00101 发现其实等价于 0010 0011 0000 0001 也就是左边第4位和第5…

数据库基础练习4

准备 create table dept (dept1 int ,dept_name varchar(11)) charsetutf8; create table emp (sid int ,name varchar(11),age int,worktime_start date,incoming int,dept2 int) charsetutf8;insert into dept values(101,财务),(102,销售),(103,IT技术),(104,行政);INSERT …

诸葛亮的连环计 责任链模式

“万事谋定而后动,一环扣一环,方能成大事。” 在三国时期,诸葛亮以其超凡的智慧闻名天下。在他众多的计策中,有一个鲜为人知却极具智慧的连环计,完美诠释了现代软件设计中的责任链模式。让我们一同探索这个巧妙的计策…

【安全设备】堡垒机

一、什么是堡垒机 安全运维审计与风险控制系统即堡垒机,前身为跳板机,跳板机是一个简单的管理设备,但缺乏对运维操作的控制和审计能力。堡垒机是一种特定的网络安全设备,用于在一个网络环境中保护数据和网络不受外部和内部用户的…

Python酷库之旅-第三方库Pandas(013)

目录 一、用法精讲 31、pandas.read_feather函数 31-1、语法 31-2、参数 31-3、功能 31-4、返回值 31-5、说明 31-6、用法 31-6-1、数据准备 31-6-2、代码示例 31-6-3、结果输出 32、pandas.DataFrame.to_feather函数 32-1、语法 32-2、参数 32-3、功能 32-4、…

Go语言入门之基础语法

Go语言入门之基础语法 1.简单语法概述 行分隔符: 一行代表一个语句结束,无需写分号。将多个语句写在一行可以用分号分隔,但是不推荐 注释: // 或者/* */ 标识符: 用来命名变量、类型等程序实体。 支持大小写字母、数字…

Golang | Leetcode Golang题解之第226题翻转二叉树

题目: 题解: func invertTree(root *TreeNode) *TreeNode {if root nil {return nil}left : invertTree(root.Left)right : invertTree(root.Right)root.Left rightroot.Right leftreturn root }

Python函数 之 模块和包

1.模块 1, 在Python 中, 每个以 .py 结尾的 Python 代码⽂件 都可以称为是⼀个模块。 2, 在模块中 别⼈书写好的功能(变量, 函数, 类),我们可以拿来直接使⽤。 3, 我们自己写的代码文件, 想要作为模块让别⼈使⽤, 你的代码⽂件名(模块名) 满足标识符的规…

大话光学原理:4.散射:瑞利、拉曼、米氏和布里渊

这是一缕柔和的光,在空气的舞台上轻盈地跳跃。它悠然自得,在宁静的空间中缓缓前行。然而,一片细薄透明的介质挡住了它的脚步,它毫无预兆地撞上了这片障碍。在这短暂的接触中,它被分解成无数微小的粒子,被迫…

LabVIEW电滞回线测试系统

铁电材料的性能评估依赖于电滞回线的测量,这直接关系到材料的应用效果和寿命。传统的电滞回线测量方法操作复杂且设备成本高。开发了一种基于LabVIEW的电滞回线测试系统,解决传统方法的不足,降低成本,提高操作便捷性和数据分析的自…

前端面试题38(js原型与对象)

在JavaScript中,原型(prototype)是核心特性之一,它用于实现对象之间的继承和属性方法的共享。理解原型和对象的关系对于深入学习JavaScript至关重要。下面我会详细解释这两个概念以及它们是如何工作的,并给出一些示例代…

关于Python的类的一些理解

才发现python的类对象只能调用类方法 我想使用对类对象a使用系统调用的len方法就会报错 2.类对象a是什么? 答:是所有的带有self的成员变量 举例说明:红色的就是a里面的东西 class A:def __init__(self,data):self.datadataself.b1self.d{a…

详细分析@FunctionalInterface的基本知识(附Demo)

目录 前言1. 基本知识2. Demo 前言 Java的基本知识推荐阅读: java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全)Spring框架从入门到学精(全) 1. 基本知识 FunctionalInterface 是 Java 8 引入的一个注…

理解负载组电路-EAK负载电路解释

负载组具有安全、可靠、操作方便、使用寿命长等特点。了解控制、冷却和负载元件电路的布局和功能对于理解负载组的运行、为应用选择负载组和维护负载组非常重要。以下各节将描述这些电路。 EAK负荷组运行概述 负载组接收来自电源的电力,将其转换为热量,…