Ruby js 不用 build 和不用打包是一个意思吗?我理解的 build 就是把 js 压缩成乱码一般~

zzz6519003 · 2023年10月15日 · 最后由 RaySong 回复于 2023年10月17日 · 578 次阅读

~~~

一样的意思。一团乱码是 js 压缩后的。js 还有混淆处理

不止哦,JS 现在流行搞各种编译,拿到 AST 之后做骚操作。比如 React:

function App() {
  return <h1>Hello World</h1>;
}

编译之后会变成

function App() {
  return React.createElement('h1', null, 'Hello world');
}

然后还有一个 build 的重点就是 TreeShaking,这个操作会把一些不用的东西丢掉。比如一个库有两个函数,你只用了一个,他会在编译的时候把你不用的函数、常量全都丢掉,不会放到最终输出的 JS 文件中。

像 Vue、Solid、Svelte 这种编译更重的框架,做的事情就更多了,比如 Svelte:

<script>
    let count = 0;

    function handleClick() {
        count += 1;
    }
</script>

<button on:click={handleClick}>
    Clicked {count} {count === 1 ? 'time' : 'times'}
</button>

这么几行代码就实现了一个点击 +1 的按钮,他背后做的编译工作就很多,最后输出的 JS 有大几十行,感兴趣的话可以去官网上看,他有前后的输出代码对比,https://www.svelte.cn/

maomao 回复

混淆处理是故意迷惑人么 hhh

zzz6519003 回复

js 的混淆不止这样,反编译也不可能得到原始的代码,一定程度上可以防止反编译

maomao 回复

很不 hippa,很不 web

zzz6519003 回复

因为 web 不等于开源,开发者并没有开放源码的义务…. 而且混淆很重要的作用就是反爬反攻击。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号