2016 - 2024

感恩一路有你

vue打包后的代码可以反编译吗 vue面试必背知识点?

浏览量:4883 时间:2023-07-06 15:46:06 作者:采采

vue面试必背知识点?

1.理解Vu

前端编译器babel的缓存机制是怎么做的?

babel介绍babel是一个js编译器。我们通常使用react、vue等框架编译成浏览器可以执行的代码。个人感觉巴别塔是前端建筑中最低最核心的部分。没有它,前端肯定会回到刀耕火种的时代。

既然是编译器,当然会操作很多文件。在babel/core中,它读取包括babelrc、pkgjson、插件、预置等在内的大部分文件。,所以缓存操作文件的结果是必不可少的!

巴别塔 的缓存机制假设我们正在处理一个文件。对象和数组通常被用作js中的缓存容器。babel使用了es6提供的map,但它实际上是一个对象,只是它的键是任意的(不限于字符串)。

好了,现在我们有了一个缓存容器(map),那么关键是什么呢?用来标记一个文件,一般可以选择使用文件的路径和文件名的md5值,babel使用的是前者。

处理文件的过程可以定义一个handle方法,文件路径是handle的一个参数。有时候只有一个文件路径不能满足业务逻辑,还需要传入其他参数,所以handle还有第二个参数。

这里babel封装了第二个参数,使之成为具有状态管理能力的对象,所以handle的第二个参数就是这个对象。

句柄处理后,你会得到这次一个文件的处理结果值。是否要现在保存地图中的值?对不起,它 不是的!

CacheConfigurator是一个具有状态管理能力的对象,可以用在句柄处理的过程中。来修改状态。得到value的值后,需要识别CacheConfigurator的状态。

CacheConfigurator有三种状态:

红色字体的有效项是check函数never,不需要缓存。

永远,你需要缓存,但是下次处理这个文件的时候,跳过验证部分,直接返回值。

有效,下次处理这个文件时,需要通过验证逻辑有效。

那么这个检查逻辑是怎么来的呢?

那个 没错,它是在处理CacheConfigurator时由handle传入的。

下次处理这个文件的时候,优先考虑缓存的逻辑,只有通过验证后,才直接返回值!

整体思路是这样的,蒙大拿的思路还是很微妙的。这个思路在其他业务中也可以参考!

喜欢我的回答就关注我。有问题可以评论。让 让我们一起学习,一起成长!

文件 babel 编译器 对象 handle

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。