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

zzz6519003 · October 15, 2023 · Last by RaySong replied at October 17, 2023 · 587 hits

~~~

一样的意思。一团乱码是 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/

Reply to maomao #0

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

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

Reply to maomao #4

很不 hippa,很不 web

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

You need to Sign in before reply, if you don't have an account, please Sign up first.