当前位置:网站首页 > Vue.js开发 > 正文

vue编译后可以反编译(vuejs反编译)



Vue 的编译过程总共分为三个步骤:

  1. 根据 template 生成 AST(抽象语法树)
  2. 优化 AST
  3. 根据 AST 可执行的函数(render 函数之类的)

这三个步骤其实在源码中,也写的清清楚楚。

PS:其实在 optimize 之后 AST 上还会多出两个属性 static、staticRoot,这个在之后说到 optimize 的时候会提及这两个属性的由来。

而在 Vue 中将 template 生成 AST,则是通过 parse 这个方法。

在生成 template 对应的 AST 后,会对 AST 进行优化,即遍历 AST 树,对每个 AST 元素进行判断,是否为静态 AST 或 静态 AST Root,为之后的 patch 过程提供依据。

在 Vue 编译过程给 AST 添加 static 或 staitcRoot,则是通过 optimize 这个方法。

markStatic

其中 isStatic 会对节点进行一些基础的判断,返回 true or false。


markStaticRoot

在 makeStaticRoots 方法中,其实比较特殊的就是判断子节点只有一个的情况,这种情况下,它的子节点不能为纯文本节点(这一点可能是作者做过什么性能测试什么的,所以注释中也写了这样要求获得的会比消耗的性能多)

会 generate 成这样的可执行的函数:

到此这篇vue编译后可以反编译(vuejs反编译)的文章就介绍到这了,更多相关内容请继续浏览下面的相关 推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • map转json字符串 转义符(map转换成json字符串)2025-05-23 18:09:10
  • ubuntu20.04安装cmake(ubuntu20.04安装桌面)2025-05-23 18:09:10
  • cjson库内存泄露(jna 内存泄露)2025-05-23 18:09:10
  • ubuntu 18.04 换源(ubuntu18.04换源 两种方法)2025-05-23 18:09:10
  • pcie5.0什么时候出(pcie5.0 intel)2025-05-23 18:09:10
  • PCIe5.0显卡延长线(显卡延长线pcie3能插pcie4.0吗)2025-05-23 18:09:10
  • vue 插槽(vue 插槽 内存泄露)2025-05-23 18:09:10
  • mha-al00是华为手机的什么型号(jsnal00是华为什么型号手机)2025-05-23 18:09:10
  • ubuntu18.04安装cmake(Ubuntu18.04安装l226网卡驱动)2025-05-23 18:09:10
  • Vue插槽用法(vue2插槽)2025-05-23 18:09:10
  • 全屏图片