Vite学习指南

那本课程都适合哪些人群呢?
想要学习前端工程化,在新项目中投入使用 Vite 构建工具的朋友
Webpack 转战到 Vite 的小伙伴
前端架构师们,可以充实自己的工具箱
当然如果你没有项目相关开发经验,也可以从本课程中受益,让你开阔眼界,将你学到的前端知识融会
贯通,应用到你的实战中。
2.1 什么是 Vite
Vite (法语意为 " 快速的 " ,发音 /vit/
,发音同 "veet" )是一种新型前端构建工具,能够显著提
升前端开发体验。它主要由两部分组成:
一个开发服务器,它基于 原生 ES 模块 提供了 丰富的内建功能 ,如速度快到惊人的 模块热更新
HMR
一套构建指令,它使用 Rollup 打包你的代码,并且它是预配置的,可输出用于生产环境的高度优
化过的静态资源。
Vite 意在提供开箱即用的配置,同时它的 插件 API JavaScript API 带来了高度的可扩展性,并有完整
的类型支持。
首先呢我们来看一下,在 Vite 中如何集成 eslint ,为了使我们的代码具备可预测性,易于浏览并易于理
解,在构建一个大型规模的应用的时候,我们需要在 Vtie 中集成 ESLint 改善咱们开发人员的体验,特别
是与一个团队的合作,我们更需要设置一些自动化的代码提示和格式化。
首先呢,我们来看一看在 Vite 中如何集成 eslint ,返回 vscode ,我们打算在 vite-basiscs-vanilla 这个
项目里边,去使用 eslint ,在没使用之前,我们先来看一下我们这些文件的表现,我们先看一下
main.js ,这个文件很显然好像没有什么问题,包括 main.json.js 也是没有问题的,但事实上呢,我们这
些代码如果在一个团队里边,按着统一的规范的话,可能不规范。
那么接下来呢,我们首先在 vscode 里边去安装一个扩展,点击这个按钮,我们输入一下 eslint ,这样的
话,我们就搜到了关于 eslint 这样的扩展,我们点击安装就好了,这里呢很显然我们已经安装好了,他
的版本是 2.2.2 ,安装好了以后呢,我们回到我们代码里边,很显然这一步还不够,我们得需要去安装
eslint 相关的一些插件。
首先我们在这个目录下面点击右键,在集成终端中打开我们这个目录,我们去安装 eslint 相关的一些插
件,我们执行 pnpm i eslint - config - standard eslint - plugin - import eslint - plugin - promise
eslint - plugin - node eslint - D 稍等就安装好了,这里头有一个 warning 就是他说我们这里边需要依赖
7.12.1 的版本 , 但是我们装的是 8.1.0 版本这个无大碍,所以我们暂时不用去关注他。
那安装完了以后呢,我们现在再看一下 main.json 还是没有任何的反馈。那么接下来我们在当前的目录下
面创建一个新的文件,取名为叫做 .eslintrc.js 我们来去通过 module exports 来做一个配置。在配置里边
儿呢,我们去定义一个 extends 这样的一个属性,它的值呢怎么可以定成 stamdard 的是刚才我们安装好
那个标准的的 eslint 配置好了,现在呢我们看到这个 eslintrc.js 已经有关于语法的问题了。
const modules = import.meta.globEager('./glob/*[1].*')
// console.log(modules)
Object.entries(modules).forEach(([key, value]) => {
console.log(key, value.default)
// value().then(module => {
// console.log(key, module.default)
// })
})// eslintrc.js
module.exports = {
extends: 'standard'
}
那我们看一下 problem ,他告诉我们 string 必须要用一个单引号。很显然我们这个字符串呢用的是双引
号,另外呢他告诉我们新行必须要求我们在这个末尾上添加一下,那很显然,我们需要手工的去做一些
调整。
我们可以把这个给改一下,改完了以后我们看到这个文件就没有任何的关于也是语法的问题了,那接下
来我们再来看一下 main-json.js ,我发现这个文件貌似没有什么问题。
再去打开一个文件,再去打开一个文件,再去打开一个文件,我们看到呢这里头貌似好像都满足了们所
谓的 eslint 的一些语法要求。
那如果我们的代码里面有一些不满足的要求会怎么样呢?
比方说我们再打开一个 glob 下面的 m1.js ,好,我们看到这个代码呢给我们的提示 , 新行要求我们在末尾
需要添加一下 , 很显然我没有添加,那大家想一想,如果我们每一个这样的 js 文件都属工的进行真的修改
一来费时间,二来呢可能我们也改不全,会漏改一些内容。
那怎么办呢?哎,我能不能有个工具来帮助我们来去自动的进行这样的问题的发现并且修改呢?我们可
以采用比方说保存文件以后格式化就帮助我们自动实现了呢。这是可以的,我们得需要借助于另外的一
个工具。这个工具呢就是我们介绍的 prettier ,它可以帮助我们实现这个功能。
这功能的添加我们首先得做几个工作,第一步我们先在 vscode 里面安装一个 prettier 的这样的一个所谓
的扩展。我们属于一个 prettier ,好,发现了,这里头就有一个这样的 prettier 的插件,我们的安装好就
可以了,这里我们已经安装好了,他的版本是 9.3.0
安装好这个插件以后还没有完成彻底的任务,我们得需要在我们项目的根目录下面去做一个 prettier 的一
个配置,我们这里面呢再去创建一个新的文件。这个配置文件我们可以取名为叫做 .prettierrc ,注意,
这是一个类似于 json 的一个文件,我们呢不要在这里面去编写 .js 的语法,我们先写个花括号,然后在里
头呢我们去写一个叫做 semi 也就是所谓的分号。我们要不要加分号呢?我们可以对应为 false ,不让我们
说的语句加分号,第二呢就是我们在后面要加一个所谓的 singleQuote ,也就是我们语法里面的字符串的
双引号要不要加呢?这头我们可以写个 true 。也就是说我们双引号要变成一个单引号
// .prettierrc
{
"semi": false,
"singleQuote": true
}
这就是定义了我们一个的规则。那以后呢我们在检查的时候,可以按照我们这个规则来继续的定义。关
prettier 的其他规则,大家可以参照官网网站去看一下。
配置完了以后呢,那我们来再去看一下 m1.js ,很显然这里头它并没有帮助我们做相关的修改。我们保存
一下文件也没有完成,那怎么办呢?我们还得需要借助于 vscode 的一些功能。
首先呢,我们打开一个配置。在配置里边呢,我们去搜索一下 (format on save) ,我们要把它勾掉,等于
我们在保存这个文件的时候呢去做一些格式化。另外呢,我们还得需要在这后边再去搜索一个叫做
(formatter) ,这里头有一个 default formatter 。我们选择哪一个格式化的工具呢?我们选择这个
prettier 就可以了。好,这个完成了以后,接下来我们打开这个文件按一下 Ctrl+s ,好,发现了它会自动
的帮助我们产生一个新行。以此类推, m2 Ctrl+s 一样的,那么所有的这些文件呢我们都可以看出会帮助
我们做符合 eslint 的这样来一些语法,那 prettier 他会帮助我们完成这个工作。 说到这儿感觉我们的工作呢貌似已经完成了,但事实上如果是我们手工的需要去把每一个文件都进行保
存也是一个问题,我们也会漏保存一些东西。那能不能让 eslint 帮助我们自动的进行检测,看看还有哪些
文件有问题呢?这个也是没有问题的,我们可以在 package.json 里面去配置一个 eslint 的脚本,我们可以
取名 lint 为或者是 eslint 都可以,后面的命令呢就是 eslint --ext 我们要去检查 js 文件,检查哪个目录呢?就
是当前目录下,如果将来我们可以把我们的 js 文件放在 src 这个目录下面,那你就可以写的当前目录下的
src 。目前呢我们没有 src 目录,所以呢我们就检查当前目录下面的 js 文件就好了。
// package.json
{
"name": "vite-basics-vanilla",
"private": true,
"version": "0.0.0",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview",
"lint": "eslint --ext js ./"
},
"devDependencies": {
"eslint": "^8.11.0",
"eslint-config-standard": "^16.0.3",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.0.0",
"husky": "^7.0.4",
"vite": "^2.8.0"
}
}
保存一下,然后在我们的终端上面我们清一下屏,执行一下 pnpm run lint ,大家看到还有一个漏改了
worker.js 就是的,这里边告诉我们的错误是,关于空格方面以及关于 postMessage 没有定义方面,那我
们来打开这个 worker 文件,它是在当前我们这个项目的根目录下面我们打开这个 worker.js 我发现了,你
果然有一些问题,我们先去保存一下。保存完了以后呢,我发现还是有很多问题的,希望我们要像 var
const, 第二呢,他希望我们在这个 function 的后面加一个空格儿,另外呢 postMessage 并不是我们当
前这个文件里头具有的一个方法。他应该是一个 window 对象,上面带着一个全局的函数。我们现在呢
可以执行一下保存,发现了这些问题并没有直接的解决。
很想来我们那些配置呢可能不全,现在我们先不着急解决这些问题。留着的这个问题以便于我们后边的
测试,我们先把相关的这些文件都关闭掉。
接下来呢我们来看一下另外一个需求,我们也希望在项目打包之前来发现一些 eslint 错误,如果我们这些
错误不解决,我们不希望我们的项目进行 build 首先呢我们来看一下 package.json ,在这里边儿有一个叫
pnpm run build 的命令,我们可以看行一下。发现呢,这个 build 的工作已经完成了,很显然在 build
之前没有进行 eslint 的检查。我们可以在这面命令的前面加一个 pnpm run lint && 表示的 build 这个命
令,
// package.json
{
"name": "vite-basics-vanilla",
"private": true,
"version": "0.0.0",
"scripts": {
"dev": "vite","build": "pnpm run lint && vite build",
"preview": "vite preview",
"lint": "eslint --ext js ./"
},
"devDependencies": {
"eslint": "^8.11.0",
"eslint-config-standard": "^16.0.3",
"eslint-plugin-import": "^2.25.4",
"eslint-plugin-node": "^11.1.0",
"eslint-plugin-promise": "^6.0.0",
"husky": "^7.0.4",
"vite": "^2.8.0"
}
首先先进行对他的检查,然后再进行 build ,保存一下,然后呢我们再去执行一下 pnpm run build
好,我们发现呢这里头有很多问题,这里头有一大堆问题是什么呢?
我们来看是这个编译以后的 js 文件,也就是我们 dist 目录下的文件。这个呢我们暂时不用管它,因为 dist
目录是我们编译后的文件,我们不用检查它的 es 问题。我们只关心我们这个 worker.js 的这个错误。
另外呢,我们也不希望我们的项目在进行代码提交的时候带着我们这些问题提交 , 也就说我们希望在 git
行提交的时候,能够检查出我们的一些 es 问题。当我们把这些问题都解决了以后,再进行代码提交,这
个工作我们该怎么实现呢?
我得需要一个 git husky 这样的一个所谓的 hook 。关于 git hook ,大家可以参照 git 相关的一些文档,或者
是参照一下我的 webpack 相关视频。在那个视频里边儿呢详细的介绍了一下 git hook 的一个使用,我们
就直接的去使用它就好了。
返回我们当前的这个目录,在这个下面呢我们来去执行一个关于 git 一些操作。首先在我们当前的目录下
面呢去初始化一个 git 环境,我们执行一下 git init
那好,这样的话呢,我们初始化的环境就搞定了,接下来我们再 git 上面去做一个远端的仓库。
好,登录我的 git 我们新建一个项目。我们创建一个新的项目,叫做 (felix-courses-vite-vanilla) 。好,接
下来我们其他的内容按照默认点击 (create response) 就可以了,这样话就创建了一个远端的仓库。
我们可以把这句话 copy 下来。好,回到我们的 vscode ,我们把那个代码粘贴过来,好,这样的话没有任
何反应,表示我们这个远端仓库已经创建好了。好了,接下来呢我们执行一下 git status 。看到我们有很
多的文件需要提交,我们执行一下 git add. ,提交完了以后呢我们执行一下 git commit - m 'vite
init' 。好,这样的话呢,我们就已经提交成功了,打开 .gitignore 。我们看到这里有定义了很多文
件不需要我们提到服务器上的,比方说这个 dist, 但这个文件呢并不能够帮助我们拦截代码里的问题。那
怎么办呢?
我们得需要去做一个所谓的 git husky ,我们需要去安装一下。执行一下 pnpm i husky husky 是一个非
常好用的一个好用的工具。好,安装完了以后呢,我们执行一下 npx husky install 。我们安装一下
husky ,安装完了以后呢,大家看到这里有提示说 git hooks installed
这是我们的这个钩子已经安装好了,那现在呢我们来看一下 .husky 下面呢就有一个所谓的叫做
husky.sh 。那接下来呢我们开始准备去编写一个 hook ,也就是在 git 提交之前去执行的一个命令。 那这里呢?我们执行一下 pnpm husky add. husky /pre - commit pre-commit 就是我们在提交之前的
一个 hook ,后边我们去输入一个命令叫什么 pnpm run lint 回车。大家看到现在呢在我们的目录下面会
产生一个新的目录叫做 pre-commit, 这里呢就有一个 pnpm run lint ,也就是在 git 提交之前执行一下我们
lint 的检查。
好,那接下来呢我们执行一个 git commit - m 'add husky' 。好,回车。好,大家看到他先去执行了
一下 lint 发现很多问题,那我们可以把这个问题解决了以后再进行所谓 git 的提交。
这里呢为了不让他检查我们 dist 目录里面的问题,我们暂时把 dist 目录给删除掉。其实上呢大家也可以把
我们这些 js 文件放到 src 的目录下面,我们只需要去检查当前目录下 src 的就可以了。暂时呢我们就临时的
dist 目录给删除掉。保存一下,那接下来我们来去看一下重新的检查,我们再去进行一次这个提交。
大家看一下,只剩下这三个问题了。那我们就去改这个问题,我们把这个关闭掉打开 worker.js 。第一个
呢是个 warning ,他希望我们不要 var 使用来用 let const 来代替。那很显然,我们得需要去改成 let ,因为
下面我们对 i 还做了一个操作。 let 以后第一个问题就没有了,接着我们看第二个问题说我们丢了一个空格
在我们的 function 这个名字在后面,那我们可以在在后面加个空格,如果说我们就希望他不需要这个空
格的话,那我们也可以做个配置,后边这个配置的语法呢我们可以把它 copy 一下。到我们 eslintrc 这个目
录下面我们去定义一个叫做 rules 的规则。在这里边儿呢,我们可以我们刚才那个过来,后面我们可以定
义成字符串 off 。表示我们要关闭掉它。那很显然下面呢这里头还有其他的问题,一会儿我们再来看这个
问题,
// .eslintrc.js
module.exports = {
extends: 'standard',
rules: {
'space-before-function-paren': 'off'
},
}
那接下来呢我们到 worker.js 的里头看到这个问题果然不存在了。
接着还有一个问题就是 postMessage 没有发现,因为它是挂载到这个对象上面的。所以呢我们还得需要
去做深度的配置, postMessage 这个呢是一个未定义的问题。我们可以来看一下这个 not-undef 我们可
copy 一下到我们的 eslint 里头再去加一个规则叫 no-undef 变为 off
// .eslintrc.js
module.exports = {
extends: 'standard',
rules: {
'space-before-function-paren': 'off',
'no-undef': 'off'
},
}
保存一下,好,我发现了这回这个问题就不存在了,我们再次编译一下。好,我们看到这里还有两个新
的问题,是 eslintrc 的问题我们打开 eslintrc ,我们看到我们保存一下。发现了 prettier 已经不能够帮助我
们解决这个问题了,我们再来看一下他的问题是什么?就是这个所谓的 comma-dargle 我们可以放在我
们这里头进行一个配置,我们可以在这后边呢去写一个 comma-dargle 那它的规则我们可以去配一下,
或者直接写个 off 保存一下,好,我们看到了这里头这个提示就不存在了,我们再次执行一下。好,大家看到现在呢我们
这个提交就已经可以了,但是呢他告诉我们有几个内容还没有加进来,那我们可以执行一下 git add. ,
git commit - m 'test husky'
我发现在我们就成功的提交到我们远端的仓库里了。
好,至此呢我们就学会了如何在 Vite 中使用 eslint 以及如何使用 prettier 这个工具,在我们代码保存的时
候呢能够帮助我们自动的修正问题,并且呢我们还可以通过 git husky 这个 hook 工具来进行代码提交之
前的一个 eslint 检查。
好,这一招我们就讲到这里,大家加油!

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

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

相关文章

支付宝开通GPT4.0,最新经验分享

ChatGPT是由OpenAI开发的一种生成式对话模型,具有生成对话响应的能力。它是以GPT(Generative Pre-trained Transformer)为基础进行训练的,GPT是一种基于Transformer架构的预训练语言模型,被广泛用于各种自然语言处理任…

vue 样式隔离原理

日常写单文件组件时&#xff0c;会在style添加scoped属性&#xff0c;如<style scoped>&#xff0c;目的是为了隔离组件与组件之间的样式&#xff0c;如下面的例子&#xff1a; <template><p class"foo">这是foo</p><p class"bar&q…

C#从网址上读取json数据

需求&#xff1a;从客户给的网址中读取json格式的数据。 找了好多资料&#xff0c;都不太好使&#xff0c;看到了一篇很有帮助的文章。以下大部分内容和这篇找到的文章近似。太不容易了&#xff0c;同时也感谢这篇文章的作者心所欲。 https://www.cnblogs.com/zoujinhua/p/10…

数字图像处理(实践篇)三十四 OpenCV-Python绘制椭圆

目录 一 涉及的函数 二 实践 一 涉及的函数 cv2.ellipse(img,center,axes,angle,start_angle,end_angle,color,thickness) 参数: ①<

Future模式先给您提货单

Future模式是一种设计模式&#xff0c;用于在处理耗时操作时提高程序的响应性。 角色介绍: Main类: 负责向Host发出请求并获取数据的类。 Host类: 负责向请求返回FutureData的实例的类&#xff0c;起到调度的作用。 Data接口: 表示访问数据的方法的接口&#xff0c;由FutureD…

openGauss学习笔记-209 openGauss 数据库运维-常见故障定位案例-共享内存泄露问题

文章目录 openGauss学习笔记-209 openGauss 数据库运维-常见故障定位案例-共享内存泄露问题209.1 共享内存泄露问题209.1.1 问题现象209.1.2 原因分析209.1.3 处理方法 openGauss学习笔记-209 openGauss 数据库运维-常见故障定位案例-共享内存泄露问题 209.1 共享内存泄露问题…

算法沉淀——滑动窗口(leetcode真题剖析)

算法沉淀——滑动窗口 01.长度最小的子数组02.无重复字符的最长子串03.最大连续1的个数 III04.将 x 减到 0 的最小操作数05.水果成篮06.找到字符串中所有字母异位词07.串联所有单词的子串08.最小覆盖子串 滑动窗口算法是一种用于解决数组或列表中子数组或子序列问题的有效技巧。…

重装Windows系统出现Windows无法安装到这个磁盘,选中的磁盘采用GPT分区

文章目录 1.问题描述2.问题解决 1.问题描述 重装Windows系统时&#xff0c;出现Windows无法安装到这个磁盘&#xff0c;选中的磁盘采用GPT分区这个提示 2.问题解决 1.shiftF10&#xff0c;打开命令行 2.输入&#xff1a;diskpart (打开分区工具) 3.输入&#xff1a;list di…

elementplus Dialog 对话框设置距离页面顶部的距离

默认为 15vh&#xff0c;当弹窗过于高的时候&#xff0c;这个距离其实是不合适的 <el-dialogv-model"dialogVisible"title"Tips"width"30%":before-close"handleClose"top"6vh"><span>This is a message</s…

IDEA搭建JDK源码学习环境(可添加注释、修改、debug)

工程详见&#xff1a;https://github.com/wenpanwenpan/study-source-jdk1.8.0_281 1、找到src.zip和javafx-src.zip 找到你想要调试的JDK&#xff0c;笔者本地电脑上装了两个版本的JDK&#xff0c;这里以jdk1.8.0_281为例将JDK目录下的javafx-src.zip和src.zip两个压缩包进行…

详解SpringCloud微服务技术栈:ElasticSearch实践2——RestClient查询并处理文档

&#x1f468;‍&#x1f393;作者简介&#xff1a;一位大四、研0学生&#xff0c;正在努力准备大四暑假的实习 &#x1f30c;上期文章&#xff1a;详解SpringCloud微服务技术栈&#xff1a;ElasticSearch搜索结果处理&#xff08;排序、分页、高亮&#xff09; &#x1f4da;订…

VMware 虚拟机环境下的ubuntu 上安装mysql,并能远程访问数据库

需求&#xff1a;为了实现在linux上模拟服务器跑代码&#xff0c;并存储在mysql上&#xff0c;通过远程可视化mysql数据库软件查看linux上mysql数据库数据的实时动态。 1. 虚拟机和ubuntu的安装 这里我选择的是VMware workstation-v14, ubuntu-18.04.1。至于体流程网上很多&a…

vite项目配置本地开发使用https访问,3分钟搞定

在开发过程中&#xff0c;有时候需要用到一些音视频接口等需要https才能拿到权限&#xff0c;为方便开发过程中调试&#xff0c;这里就介绍几种vite项目快速开启https访问的方式。vite配置项说明文档&#xff1a;开发服务器选项 | Vite 官方中文文档 第一种&#xff1a;使用插件…

SpringBoot引入 liteflow 规则引擎,yyds!

1前言 在日常的开发过程中&#xff0c;经常会遇到一些串行或者并行的业务流程问题&#xff0c;而业务之间不必存在相关性。 在这样的场景下&#xff0c;使用策略和模板模式的结合可以很好的解决这个问题&#xff0c;但是使用编码的方式会使得文件太多,在业务的部分环节可以这…

python基础3

7.5 range range 可以生成数字供 for 循环遍历 , 它可以传递三个参数&#xff0c;分别表示 起始、结束和步长。 8. 数据类型高级 8.1 字符串高级 字符串的常见操作包括&#xff1a; 获取长度 :len len 函数可以获取字符串的长度。 查找内容 :find 查找指定内容在字符…

java—AWT

AWT 课程&#xff1a;1、GUI编程简介_哔哩哔哩_bilibili 一.介绍 包含了很多类和接口&#xff01;GUI&#xff01;元素&#xff1a;窗口、按钮、文本框java.awt 二.窗口 1.构造 2.方法 // 实例化frame类Frame frame new Frame("这个一个框");// 设置可见性frame.…

Metaphor(EXA) 基于大语言模型的搜索引擎

文章目录 关于 Metaphor使用示例 关于 Metaphor Metaphor是基于大语言模型的搜索引擎&#xff0c;允许用户使用完整的句子和自然语言搜索&#xff0c;还可以模拟人们在互联网上分享和谈论链接的方式进行查询内容。 Metaphor同时还能与LLMs结合使用&#xff0c;允许LLMs连接互联…

编曲学习:和声音程 调式体系 唱名法 调式调性

34届和声音程 调式体系 唱名法 调式调性https://app8epdhy0u9502.pc.xiaoe-tech.com/live_pc/l_65af994be4b064a8cb1c3a5f?course_idcourse_2XLKtQnQx9GrQHac7OPmHD9tqbv 34届独立音乐人编曲训练营https://app8epdhy0u9502.pc.xiaoe-tech.com/p/t_pc/course_pc_detail/camp_p…

鸿蒙开发-UI-组件

鸿蒙开发-UI-布局 鸿蒙开发-UI-布局-线性布局 鸿蒙开发-UI-布局-层叠布局 鸿蒙开发-UI-布局-弹性布局 鸿蒙开发-UI-布局-相对布局 鸿蒙开发-UI-布局-格栅布局 鸿蒙开发-UI-布局-列表 ​​​​​​鸿蒙开发-UI-布局-网格 鸿蒙开发-UI-布局-轮播 文章目录 前言 一、按钮 1.创建…

深度强化学习(王树森)笔记04

深度强化学习&#xff08;DRL&#xff09; 本文是学习笔记&#xff0c;如有侵权&#xff0c;请联系删除。本文在ChatGPT辅助下完成。 参考链接 Deep Reinforcement Learning官方链接&#xff1a;https://github.com/wangshusen/DRL 源代码链接&#xff1a;https://github.c…