【javascrpt】vue源码中的/*#__PURE__*/是什么意思

前言

  • 浏览的时候看见源码里居然手动写/*#__PURE__*/,一般这个是没人写,倒是经过polyfill转换之后,很多代码会自然带上这个标记。
  • 既然这玩意开始有点用处,就稍微总结一下。其实除了这个标记,还有inline ,noinline之类的注释,这个就是给terser使用的。

terser

  • 我们知道terser是个很强大的压缩工具,而为啥react没写pure呢,因为react使用的是googleclosure压缩工具,是个自己整的java压缩工具,跟一般的压缩方式并不相同,是一种破坏性压缩,在书写代码时需要注意某种规定,否则压缩出来的代码无法正常运行。但terser的压缩是非破坏性的,所以压缩效果上自然比google那个差点,但不容易出问题(反正vue代码比react代码少太多了)。
  • 其中terser认可的行内注释一般有3种:
/*@__INLINE__*/ - forces a function to be inlined somewhere.
/*@__NOINLINE__*/ - Makes sure the called function is not inlined into the call site.
/*@__PURE__*/ - Marks a function call as pure. That means, it can safely be dropped.
  • 可以把@换成#。
  • inline表示内联,会强制把标记的函数里依赖的函数内敛在里面。
  • 而noinline则相反,不会把函数拆成内容内联进函数体内。
  • 最后的pure则是用的最多的。会告诉编辑器,如果没用到这玩意,可以放心删了。

猜你喜欢

转载自blog.csdn.net/yehuozhili/article/details/118081252