vite实战

Posted coderlin_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vite实战相关的知识,希望对你有一定的参考价值。

Pnpm

很好的文章
pnpm相对比npm和yarn有很大速度的提升。因为:

  • 对于每个项目的依赖,yanr和npm会根据package.json每次都去下载依赖,导致项目越多,依赖就代码就越多。
  • 而对于pnpm,他会通过hard link的模式,在计算机的虚拟硬盘目录下创建一个store目录,将依赖存放到里面去,下次另一个项目需要某些依赖的时候,pnpm会直接来这store目录获取到代码,就不用重复下载。
  • 对于版本不同的依赖,版本之间不同的文件会被存储起来。

例子:在项目中安装express依赖。
在项目的node_modules目录中就会出现

node_modules/express/...
node_modules/.pnpm/express@4.17.1/node_modules/xxx
  • 第一个目里面啥也没有,就是一个软连接(类似于快捷方式)定位到第二个目录下的文件,它是用来给node.js使用找寻依赖的。
  • 而第二个目录下的.pnpm 是个虚拟磁盘目录(也就是store),express 这个依赖的一些依赖会被平铺到 .pnpm/express@4.17.1/node_modules/ 这个目录下面,这样保证了依赖能够 require 到,同时也不会形成很深的依赖层级。
  • 其他项目需要express也会来这个.pnpm目录下获取依赖。

Vite

使用

yarn add @vitejs/plugin-vue @vue/compiler-sfc vite -D



在根目录下准备一个html文件,即可开始。

vite本地server为什么这么快?

官网解释

  • 类似于webpack的本地服务,他需要将所有的代码都构建完成之后,才能启动服务,可以比较为是通过webpack build之后,再通过http-server启动。
  • 而对于vite的本地服务,它会将模块代码分为两部分,依赖+源码。
  • 对于依赖,比如一些第三方模块,Vite 将会使用 esbuild 预构建依赖。Esbuild 使用 Go 编写,比以 javascript 编写的打包器预构建依赖快 10-100 倍。
  • 对于源码,比如vue,jsx等需要转化的,Vite 以 原生 ESM 方式提供源码,也就是一部分工作交给浏览器进行,vite只负责当浏览器请求源码的时候(如异步加载的代码)才会进行转换并且按需提供,其他的不会提前加载。
  • 而这两个原因也是vite为啥快的原因。

全部构建玩再启动服务的图

vite的方式:

esbuild介绍

vite实战

Vite天然支持typescript, css, less ,scss, css module,支持postcss。
ts只需要有tsconfig.json文件,并且配置.babelerc


    "presets": [
        "@babel/preset-env",
        "@babel/preset-typescript"
    ]

然后
配置.d.ts,就可以使用
ts写法。

postcss只需要配置postcss.config.js

module.exports = 
    plugins: [
        require('autoprefixer')
    ]

支持mock数据


接着在根目录创建mock文件即可。


非常方便。

单元测试

pnpm i jest@next babel-jest@next @types/jest vue-jest@next ts-jest@next @vue/test-utils@next -D

配置jest.config.js文件




这样就可以测试vue了。

以上是关于vite实战的主要内容,如果未能解决你的问题,请参考以下文章

vite2.0搭建vue3移动端项目实战

vite2.0+vue3移动端项目实战

实战 | Vite2.0搭建Vue3移动端项目

vite实战

网站性能优化实战之—— gzip (webpack, vite 开启gzip 部署)

网站性能优化实战之—— gzip (webpack, vite 开启gzip 部署)