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 检查。
好,这一招我们就讲到这里,大家加油!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Linux】gcc中__builtin_expect的作用

本文首发于 慕雪的寒舍 引入 代码学习的时候,遇到了__builtin_expect这个之前从来没有遇到过的东西,网上搜了一下,发现纯C语言实现的GCD(Grand Central Dispatch)中就有定义过这个宏 #define _safe_cast_to_long(x) …

2017. 圆周排列

一、题目 Problem #2017 - ECNU Online Judge 二、思路 一开始以为是全排列+验证的问题,后来超时,然后转向组合排列思考,结果AC了 首先要知道:n个不同元素的圆排列有(n-1)!个 证明:将个n 元素中的某个元素…

语图奇缘:林浩然与杨凌芸的哲学漫画大冒险

语图奇缘:林浩然与杨凌芸的哲学漫画大冒险 Language Odyssey: The Philosophical Comic Adventure of Lin Haoran and Yang Lingyun 在一个充满逻辑谜题和言语陷阱的城市——逻言市,住着两位热衷于探索语言奥秘的年轻人,林浩然和杨凌芸。林浩…

docker之部署青龙面板

青龙面板是一个用于管理和监控 Linux 服务器的工具,具有定时运行脚本任务的功能。在实际情况下也可以用于一些定期自动签到等任务脚本的运行。 本次记录下简单的安装与使用,请提前安装好docker,参考之前的文章。 一、安装部署 1、拉取镜像 # …

黑马点评Redis项目实战(1)基于Session实现短信登录

一、导入黑马点评项目 1.后端部署 下载好资料之后,先在数据库中制作所需的表,如下: 接着在工程中按照自己的数据库设置相应的username和root,如下: 启动项目之后,输入网站:localhost:8081/sho…

【原神游戏开发日志3】登录和注册有何区别?

版权声明: ● 本文为“优梦创客”原创文章,您可以自由转载,但必须加入完整的版权声明 ● 文章内容不得删减、修改、演绎 ● 本文视频版本:见文末 ● 相关学习资源:见文末 前言 ● 这是我们原神游戏开发日记的第三期 ●…

【Java面试】Mysql

目录 sql的执行顺序索引的优点和缺点怎么避免索引失效(也属于sql优化的一种)一条sql查询非常慢,我们怎么去排查和优化?存储引擎 MylSAM和InnoDB、Memory的区别事务的四大特性(ACID)脏读、不可重复读、幻读事务的隔离级别?怎么优化数据库SQL优…

fastapi学习

fastapi框架 fastapi,一个用于构建 API 的现代、快速(高性能)的web框架。 fastapi是建立在Starlette和Pydantic基础上的,Pydantic是一个基于Python类型提示来定义数据验证、序列化和文档的库。Starlette是一种轻量级的ASGI框架/工…

春运倒计时,AR 引领铁路运输安全新风向

根据中国交通新闻网发布最新消息,今年春运全国跨区域人员流动量预计达 90 亿人次。 随着春运期间旅客数量不断创下新高,铁路运输面临着空前的挑战与压力。 图源:pixabay 聚焦铁路运输效率与旅客安全保障问题,本期行业趋势将探讨 …

在 Vue 项目中,可以通过设置不同的环境变量来区分不同的环境,例如本地开发环境、测试环境和生产环境。以下是设置环境变量的步骤:

1、在src下新建三个文件夹 (.env.local、.env.test 和 .env.prod) 2、配置信息 .env.local VUE_APP_ENVlocal VUE_APP_API_URLhttp://localhost:8080.env.test VUE_APP_ENVtest VUE_APP_API_URLhttp://124.220.110.203:9090/ .env.prod VUE_APP_…

看门狗定时器

1. 看门狗 看门狗: 用于设备在 程序异常(死机) 时 可以自动重启设备 实现原理: 通过定时器 进行定时 , 在定时器时间结束前 进行 "喂狗" 重置定时器时间 若时间到,还没有"喂狗",系统重启 本质就是一个定时器, 如何定时? 定时器 本质是对 晶振时钟进行 计…

上位机图像处理和嵌入式模块部署(c/c++ opencv)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 opencv可以运行在多个平台上面,当然windows平台也不意外。目前来说,opencv使用已经非常方便了,如果不想自己编译…

前端工程化之上cdn

一、cdn介绍 cdn的使用还是和前端打包相关,我们都希望前端最后的打包页面越小越好。那么可不可以把一些包不pack进去,让用户的流浪器自行下载呢?答案是可以的,那这些包就会被托管到分发站点上,就是在全国都有服务器&a…

【C++】STL和vector容器

STL和vector容器 基本概念六大组件容器算法迭代器容器算法迭代器 vector容器基本概念vector构造函数赋值vector的容量和大小vector插入与删除vector存取数据函数原型 vector互换容器vector预留空间vector容器嵌套容器 基本概念 长久以来,软件届一直希望建立一种可重…

解决 github.com port 443: Timed out 的问题

国内访问github.com总是那么不竟如人意,时而无法加载网页,时而等我们抽完了一根烟后,它还处于转圈的状态。 虽然国内有gitee.com等诸多的代码托管平台,但却鲜有国人愿意去呢?其中的缘由,想必也不用我多说&a…

SkiaSharp:.NET强大而灵活的跨平台图形库

在.Net 6之前,我们一般是使用System.Drawing.Common来生成图像。 但在.Net 6平台需要配置,才能在非Windows平台使用System.Drawing.Common。而从.Net 7开始,非Windows不再允许使用,官方也给我们推荐了几个替代库。 今天我们一起来…

MySQL索引类型及数据结构【笔记】

1 索引类型 返回面试宝典 主键索引(PRIMARY):数据列不允许重复,不允许为NULL,一个表只能有一个主键。 唯一索引(UNIQUE):数据列不允许重复,允许为NULL,一个表允许多个列创建唯一索引…

软考之项目管理

一、考点分布 盈亏平衡分析(※)进度管理(※※※)软件质量管理(※※)软件配置管理(※※) 二、盈亏平衡分析 正常情况下,销售额固定成本可变成本税费利润 盈亏平衡下&#…

JDK8新特性:Stream

Stream 认识Stream 也叫Stream流,是jdk8开始新增的一套API(java.util.stream.*),可以用于操作集合或者数组的数据。优势:Stream流大量的结合了Lambda的语法风格来编程,提供了一种更强大,更加简…

SSH:加密安全访问网络的革命性协议

目录 博客前言 一.ssh介绍 1.为什么需要SSH? 2.SSH是如何工作的? 连接建立 版本协商 算法协商 密钥交换 用户认证 会话请求 会话交互 3.SSH和SSL的区别 二.实战(centos配置密钥) 2.1.ssh/里面的文件作用解释 2.1 配…