详解面试题之你知道如何做无感刷新文件吗?

56 阅读1分钟

这道题其实就是在问你热更新的原理。

要了解热更新,我们要大概理出一个思路。就是在编辑器里面更新文件后,通知前端浏览器更新,然后前端通过一定手段更新代码。

前面这个过程,编辑文件,监听文件,通知更新,这些都有现成的api和方案可以做,我就谈谈前端是如何更新代码的。

要知道前端是如何更新代码的,是不是要在浏览器代码中找。按道理讲,浏览器里面应该只有跟我们工程相关的文件,哪里会有热更新相关的文件。那么去哪找,当然是去index.html文件里面去找。

image.png

可以看到,最上面有个/@vite/client这个文件,这个client.js文件里面内容比较多,有八百多行。我就不贴了,但是这个文件就是建立了一个websocket的连接,然后暴露了几个函数出去。我把暴露的函数贴出来,后面要讲。

image.png

我这里根据调试发现,vite会精确控制更新,比如,你改了样式,他就会在你改动的.vue文件里面引入updateStyle,然后去更新样式。

总之,前端更新是通过更新特定组件,或者更新样式文件去实现更新的。