大前端备战2021年,使用vite构建React !
source link: https://blog.csdn.net/petertanjinjie/article/details/111878446
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
大前端备战2021年,使用vite构建React !
由于
vite
这个构建工具被用在了vue3上门,而且它的构建思路我觉得优于webpack
,底层也是使用了esbuild
,性能上更优那么为了照顾一些小伙伴之前没有学习过
vite
的,我们先来看看什么是vite
什么是vite
Vite,一个基于浏览器原生 ES imports 的开发服务器。利用浏览器去解析 imports,在服务器端按需编译返回,完全跳过了打包这个概念,服务器随起随用,支持热更新,而且热更新的速度不会随着模块增多而变慢。针对生产环境则可以把同一份代码用 rollup 打包
vite
的天然优势:快速冷启动服务器
即时热模块更换(HMR)
真正的按需编译
vite工作原理
当声明一个 script 标签类型为 module 时
如: <script type="module" src="/src/main.js"></script>
浏览器就会像服务器发起一个GET
http://localhost:3000/src/main.js请求main.js文件:
浏览器请求到了main.js文件,检测到内部含有import引入的包,又会对其内部的 import 引用发起 HTTP 请求获取模块的内容文件
如:
GET http://localhost:3000/@modules/vue.js
如:
GET http://localhost:3000/src/App.vue
其Vite 的主要功能就是通过劫持浏览器的这些请求,并在后端进行相应的处理将项目中使用的文件通过简单的分解与整合,然后再返回给浏览器渲染页面,vite整个过程中没有对文件进行打包编译,所以其运行速度比原始的webpack开发编译速度快出许多
简单实现vite
由于代码量有一些大,我就不自己去写了,直接拿了别人的代码过来,原文地址是:
https://juejin.cn/post/6898116372887240712
首先是koa启动监听端口,用于访问热更新服务
编写对应插件处理
首先处理模块的引用,因为浏览器只有相对路径和绝对路径
这里
readBody
其实就是一个读取文件流的方法,封装过而已,看成普通的读取流方法即可
koa中间件处理
首先处理重写路径,因为浏览器只有绝对路径和相对路径
重写完了路径后,需要拦截
.vue
文件和带@module
(重写路径之前就是node_modules
里面的文件)
当解析处理完路径后,我们需要解析vue的模板文件,(如果是react的jsx代码,同理)
下面是两个工具函数:一个是流的读取,一个是重写路径的函数
重写路径中间件
这样一个简单的vite就完成了
开始在react中使用
vite算是一个新的技术,而且在国内目前不够流行,为了避免踩坑,我们直接采用官方推荐的模板生成
npm init vite-app --template react
生成模板完成后,执行命令启动项目
这样一个
react
的项目就搭建好了,默认使用的是17.0.0
版本的react
,这样createElement
方法再也不用从react里面导出了,我想这样jsx
风格代码也会更容易被迁移到其他框架项目中
这个模板生成的是自带热更新的,相对比较简单,如果是有特殊需求,可以使用更多的plugin,在vite.config.js中设置
默认的配置
本文更多是在讲
vite
的实现原理,目前我还没有把它使用在生产环境中在我看来,
vite
如果生态能发展起来,可能我们就用不到wepback6
这个版本了(当然未来不可猜测)通过阅读本文,你肯定能清楚了解vite的原理和react构建使用了,感觉不错的话,帮我点个
赞/在看
,关注一下【前端巅峰
】公众号吧
参考资料:
https://juejin.cn/post/6898116372887240712
https://juejin.cn/post/6844904146915573773
https://github.com/vitejs/vite
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK