[前端笔记029]webpack和vite
创始人
2024-05-30 16:50:37
0

前言

  • 本笔记参考视频,李立超:BV1Kd4y147gg p1 -p

webpack

  • 前端的模块化,使用type=module会有兼容性问题,而且模块过多时影响加载速度
  • 解决方法,使用打包工具将模块打包成一个文件,将模块化的代码转化为旧的JS代码,既解决了兼容性问题,又解决了模块过多的问题
  • 使用webpack/vite,前者老且复杂,后者新简单
  • 要用webpack,需要使用node,使用步骤
    1. 初始化项目 yarn init -y
    2. 安装依赖webpack、webpack-cli,后者为命令行工具
    3. 在项目中创建src目录,然后编写代码,index为入口文件,编写时使用前端的模块化编写规范,使用export default{},暴露模块;index中使用import 模块名 form “path”,引入模块。
    4. 打包,yarn/npx webpack,生成dist文件夹,为打包后的文件
  • 需要使用jquery时,就可以使用npm下载后再引入了
  • src中按前端规范写,其他按后端规范写
  • 打包配置文件,webpack.config.js,
module.exports ={mode:"", //设置打包模式,production/development 生产模式/开发模式entry:""/[多入口数组]/{打包成多文件}, //指定打包时的主文件 默认 ./src/index.jsoutput:{path: path.resolve(),//指定打包目录,必须要绝对路径filename:"",//打包后的文件命,可以使用变量clean:true//自动清理打包目录}, //配置打包后的输出// 默认只能处理js文件,需要处理其他文件时,需要引入其他loader,然后使用module进行配置module:{rules:[{test:/\.css$/i,type:["style-loader","css-loader"] //从后往前加载,第一个负责引入样式,第二个负责转换css},{test:/\.jpg$/i,type:"asset/resource" //图片等数据可以通过指定type来处理}]} ,//扩展功能的插件,常用的html-webpack-plugin,自动生成html,并引入打包生成的jsplugins: [new HtmlWebpackPlugin({title: "Output Management" })],devtool:"inline-source-map" //将打包后代码与源码形成映射,方便调试
}
  • 引入css时,使用import “path”
  • 引入图片时,使用import xxx from “path”
  • 当有浏览器兼容性问题时,可以使用babel,将新语法转换为旧语法,引入babel的loader,具体配置看babel官网。
  • 插件,用来扩展webpack的功能
  • 命令行打包时加上--watch监视代码变化,并自动构建
  • 为了更接近服务器环境,可以安装webpack-dev-server,并使用 yarn webpack serve,来完成服务器的创建,代码有变动时,自动刷新显示

vite

  • webpack,开发和部署都需要打包,而且打包时间长;
  • vite在开发时不对代码打包,采取ESM的方式来运行项目;部署时,再对项目打包;而且下载即可使用,无需配置。
  • 默认源码目录为根目录,index.html引入js时,注意type=“module”,不需要写在src目录下,写哪都行,引入时路径没问题就行
  • 打包后想看效果,需要服务器环境,或者使用yarn vite preview查看
  • 可以使用 yarn creat vite,一键构建vite项目
  • vite插件配置,在vite.config.js中编写,文件自己创建,使用浏览器的模块化而不是node的,因为vite做了配置。解决兼容性问题使用,plugin-legacy和terser

相关内容

热门资讯

122.(leaflet篇)l... 听老人家说:多看美女会长寿 地图之家总目录(订阅之前建议先查看该博客) 文章末尾处提供保证可运行...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
育碧GDC2018程序化大世界... 1.传统手动绘制森林的问题 采用手动绘制的方法的话,每次迭代地形都要手动再绘制森林。这...
Vue使用pdf-lib为文件... 之前也写过两篇预览pdf的,但是没有加水印,这是链接:Vu...
PyQt5数据库开发1 4.1... 文章目录 前言 步骤/方法 1 使用windows身份登录 2 启用混合登录模式 3 允许远程连接服...
Android studio ... 解决 Android studio 出现“The emulator process for AVD ...
Linux基础命令大全(上) ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维...
再谈解决“因为文件包含病毒或潜... 前面出了一篇博文专门来解决“因为文件包含病毒或潜在的垃圾软件”的问题,其中第二种方法有...
南京邮电大学通达学院2023c... 题目展示 一.问题描述 实验题目1 定义一个学生类,其中包括如下内容: (1)私有数据成员 ①年龄 ...
PageObject 六大原则 PageObject六大原则: 1.封装服务的方法 2.不要暴露页面的细节 3.通过r...
【Linux网络编程】01:S... Socket多进程 OVERVIEWSocket多进程1.Server2.Client3.bug&...
数据结构刷题(二十五):122... 1.122. 买卖股票的最佳时机 II思路:贪心。把利润分解为每天为单位的维度,然后收...
浏览器事件循环 事件循环 浏览器的进程模型 何为进程? 程序运行需要有它自己专属的内存空间࿰...
8个免费图片/照片压缩工具帮您... 继续查看一些最好的图像压缩工具,以提升用户体验和存储空间以及网站使用支持。 无数图像压...
计算机二级Python备考(2... 目录  一、选择题 1.在Python语言中: 2.知识点 二、基本操作题 1. j...
端电压 相电压 线电压 记得刚接触矢量控制的时候,拿到板子,就赶紧去测各种波形,结...
如何使用Python检测和识别... 车牌检测与识别技术用途广泛,可以用于道路系统、无票停车场、车辆门禁等。这项技术结合了计...
带环链表详解 目录 一、什么是环形链表 二、判断是否为环形链表 2.1 具体题目 2.2 具体思路 2.3 思路的...
【C语言进阶:刨根究底字符串函... 本节重点内容: 深入理解strcpy函数的使用学会strcpy函数的模拟实现⚡strc...
Django web开发(一)... 文章目录前端开发1.快速开发网站2.标签2.1 编码2.2 title2.3 标题2.4 div和s...