前端构建工具(webpackvite)

news/2024/9/13 0:36:19/ 标签: 前端, webpack, node.js, vite

这里写目录标题

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

构建工具

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

webpack_4">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.配置插件
在这里插入图片描述

webpackdevserver_67">开发服务器(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_83">vite

概念
vite也是前端的构建工具
相较于webpack,vite采用了不同的运行方式:
开发时,不对代码打包,而是采用ESM(ES模块)的方式来运行项目
在项目部署时,再对项目进行打包
vite的速度比webpack要快很多,使用也很方便(都配置好了)
本质上vitewebpack是打包工具,只是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.ppmy.cn/news/1475348.html

相关文章

从数据仓库到数据湖(上):数据湖导论

文章目录 一、什么是数据湖?起源数据湖的特征 二、为什么要用数据湖?三、数据湖与数据仓库的区别数据仓库和数据湖的对比 四、数据湖本质数据存储架构数据处理工具:三类第一类工具第二类工具第三类工具 小结 五、总结六、参考资料 一、什么是…

第一章节:HTML 基础

参考:https://github.com/qianguyihao/Web/tree/master/01-HTML 1)HTML 基础介绍 1.1)Web 万维网 Web(World Wide Web)即全球广域网,也称为万维网。 我们常说的 Web端 就是网页端。 网页 是构成网站的基本元素。网页主要由文字、图像和超链接等元素构成。当然,除了这…

uniapp小程序连接蓝牙设备

uniapp小程序连接蓝牙设备 一、初始化蓝牙模块二、开始搜索三、连接蓝牙四、监听特征值变化五、调用示例utils.js文件 一、初始化蓝牙模块 这一步是必须的,在开发项目过程中,初始化蓝牙模块之后,紧接着就要开启一些监听的api,供后…

Python高级(四)_内存管理

Python高级-内存管理 第四章 内存管理 1、对象池 小整数池 系统默认创建好的,等着你使用 概述:整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间。Python 对小整数的定义是 [-5, 256] ,这些整数对象是提前建立好的…

AI推介-大语言模型LLMs论文速览(arXiv方向):2024.07.01-2024.07.05

文章目录~ 1.LLM Internal States Reveal Hallucination Risk Faced With a Query2.Fine-Tuning with Divergent Chains of Thought Boosts Reasoning Through Self-Correction in Language Models3.Investigating Decoder-only Large Language Models for Speech-t…

TCP网络传输控制协议

目录 什么是TCP TCP的特点 TCP通信步骤 三次握手(建立连接) 数据传输 四次挥手(连接释放) 为什么要进行三次握手?两次握手行不行?一次握手行不行? 为什么是四次挥手?三次、两…

小红书后端

牛客网 - 找工作神器|笔试题库|面试经验|实习招聘内推,求职就业一站解决_牛客网 (nowcoder.com) 小红书推荐系统 题目: 思路: 尝试(标题4) import java.util.*;// 注意类名必须为 Main, 不要有任何 package xxx 信息…

社交论坛圈子系统APP开发社交圈子小程序系统源码开源,带语音派对聊天室/圈子社交论坛及时聊天

功能// 首页左右滑动切换分类 使用资讯类app常见的滑动切换分类,让用户使用更方便。 2信息卡片流展示 每条信息都是一个卡片,头像展示会员标签,单图自动宽度,多图九宫格展示,底部展示信息发布地址,阅读量、…

react VS vue

什么是react 用于构建用户界面的js库 什么是vue 用于构建用户界面的渐进式js库 react是基于mvvm设计还是mvc设计 1、react是基于mvc设计的,但也不是完整的mvc模式 2、react把自己定义为view 3、组件逻辑定义为Controller层 4、虽然react不是完整的mvc模式&a…

iPhone删除所有照片的高效三部曲

苹果手机用久了,系统缓存包括自己使用手机留下的内存肯定会越来越多。其中,相册中的照片数量可能会急剧增加,占据大量的存储空间。当用户们想要对相册进行彻底清理,实现iPhone删除所有照片时,不妨跟随以下详细的三部曲…

音频合并最简单的方法。将音频合并成一个的几种简单方法

音频合并最简单的方法。音乐是一种无声的语言,能够诉说情感、唤起记忆,为我们的生活增添了丰富的色彩。有时候,我们渴望将几段动人的音乐融为一体,创造出一个更为宏大、更为连贯的作品,以满足独特的需求或展示我们的创…

代码覆盖率的守护者:Gradle中配置覆盖率工具全指南

代码覆盖率的守护者:Gradle中配置覆盖率工具全指南 在软件开发的精细打磨中,代码覆盖率工具是确保质量的得力助手。Gradle,作为一款强大的构建工具,提供了与多种代码覆盖率工具的集成能力。本文将详细指导如何在Gradle中配置代码…

Python学习2---装饰器

装饰器是Python中的一种高级功能,允许您修改或增强函数或类的行为,而无需直接修改其源代码。 基本概念: 装饰器本质上是一个函数,它接受一个函数作为参数,并返回一个新的函数。 基本语法: decorator_fun…

中介者模式(大话设计模式)C/C++版本

中介者模式 C // 中介者模式(Mediator),用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显示得相互引用&#xff0c;从而使得其耦合松散&#xff0c;而且可以独立地改变他们之间得交互#include <iostream> #include <string>using namespace std;#d…

需求实现:字数限制500字

摘要&#xff1a; 在浩瀚的技术实现海洋中&#xff0c;每一个需求都如同一块磁石&#xff0c;吸引着多样化的解决策略与技术手段的汇聚。然而&#xff0c;无论选择多么丰富&#xff0c;核心始终在于对业务逻辑的深刻理解&#xff0c;以及为当前特定场景量身定制的最佳实践。本…

使用YOLO5进行模型训练机器学习【教程篇】

准备工作 YOLOv5 是目前非常流行的目标检测模型,广泛应用于各种计算机视觉任务,可以检测到图片中的具体目标。 我们借助开源的模型训练框架,省去了自己写算法的步骤,有技术的伙伴可以深入了解并自己写算法训练。 电脑要求: GPU ,内存 >12G python > =3.8 windows o…

抗量子密码算法:保障未来信息安全的新盾牌

随着量子计算的迅猛发展&#xff0c;传统加密算法正面临着前所未有的挑战。量子计算机利用量子比特的特殊性质&#xff0c;能在极短时间内破解目前广泛使用的公钥加密体系&#xff0c;如RSA、ECC等。这使得我国及全球的信息安全体系遭受严重威胁。为了应对这一挑战&#xff0c;…

STM32智能门禁系统教程

目录 引言环境准备智能门禁系统基础代码实现&#xff1a;实现智能门禁系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景&#xff1a;门禁管理与优化问题解决方案与优化收尾与总结 1. 引言 智能门禁系统通过STM32嵌入…

5G与未来通信技术

随着科技的迅猛发展&#xff0c;通信技术也在不断演进。5G技术作为第五代移动通信技术&#xff0c;已成为现代通信技术的一个重要里程碑。本文将详细介绍5G及其对未来通信技术的影响&#xff0c;重点探讨超高速互联网和边缘网络的应用。 一、超高速互联网 1. 低延迟 5G技术最显…

富格林:正确击破暗箱稳健出金

富格林悉知&#xff0c;现在喜欢投资的人都在不断增加&#xff0c;在享受贵金属投资较高出金回报的同时&#xff0c;也该做好遭遇暗箱亏损情况的预防措施。对于新手投资者群体来说&#xff0c;如何客观地认识造成亏损的原因和暗箱&#xff0c;也是贵金属投资道路上必须克服的一…