看了下昨日泄露的苹果 App Store 源码……
新闻
昨日苹果 App Store 前端源码泄露,因其生产环境忘记关闭 Sourcemap,被用户下载了源码,上传到 Github。
目前已经 Fork 和 Star 超 5k:
如果你想要第一时间知道前端资讯,欢迎关注公众号:冴羽
用户如何抓取的源码?
用户 rxliuli 使用 Chrome 插件 Save All Resources 将代码下载了下来。
插件地址为:chromewebstore.google.com/detail/save…
下次你也可以打包下载源码了~
如何看待源码泄露?
其实前端源码泄露对业务本身并没有什么影响,因为前端代码无论是否压缩还是混淆,最终都需传输到浏览器才能运行,本身就具有 “暴露” 属性,SourceMap 只是让代码更易读,更容易调试。
尽管如此,依然不建议在生产环境开启 SourceMap,对普通用户无益,且存在轻微性能开销和源代码暴露的安全风险。
我大致看了下代码,并没有什么密钥之类的信息,所以干点坏事之类的就不用想了。真正有价值的核心代码比如推荐逻辑还是在服务端。
代码使用 Svelte?
我万万没想到,项目使用的是 Svelte。
Svelte 我自然是很熟的,毕竟我翻译过 Svelte 官网:svelte.yayujs.com/
还写了一本掘金小册《Svelte 开发指南》:s.juejin.cn/ds/QNzfZ4eq…
想一想,使用 Svelte 也在情理之中。
因为 Svelte 就非常适合处理这种页面相对简单、业务逻辑并不复杂的页面。
在实现上 ,与其说 Svelte 是框架,不如说 Svelte 是一个编译器。 它会在构建时就会将代码编译为高效的 JavaScript 代码,因此能够实现高性能的 Web 应用。
Svelte 的核心优势在于:
- 轻量级:核心库只有 3 KB,非常适合开发轻量级项目
- 高性能:构建时优化,而且不使用虚拟 DOM,减少了内存占用和开销,性能更高
- 易上手:学习曲线小,入门门槛低,语法简洁易懂
简而言之,Svelte 非常适合构建轻量级 Web 项目,也是本人做个人项目的首选技术栈。
以后大家如果要做相对简单的项目,又有性能上的追求(比如 KPI),那就可以考虑使用 Svelte。
用它作为示例学 Svelte ?
我看了下代码,项目代码还是 Svelte 4,而 Svelte 已经到 5 了,Svelte 4 和 5 不论是底层架构还是基础语法都发生了很大的变化,其变化的剧烈程度类似于 Next.js 12 升 Next.js 13,所以想通过这个项目学习 Svelte 就不用想了,都是些过时的语法了,不如直接学 Svelte 5。