互联网重构日记:1 - 开篇

源起

当今互联网的开发模式充斥着低效与重复,我对此深感厌倦,并决心以组件化的方式重构它。

市面上已有一些组件化产品,例如:

  • auth0:用户系统
  • stripe:在线支付
  • Disqus:网页评论
  • algolia:站内搜索

而且,作为一个完美主义者,以上产品无一能让我满意。

  • auth0 缺少类似谷歌的「多账户切换」功能,且价格高昂,每月一万用户竟需 7700 美元。
  • stripe 的微信、支付宝通道费率高达 2.2% + $0.35,而直连费率仅 0.6%,堪称暴利。
  • Disqus 无法针对特定语句评论,评论亦不能自动翻译成用户的浏览语言。
  • algolia 的搜索结果旁应提供正文预览,类似苹果 Finder 的「速览」功能。

并且,这些零散的组件各自为政,整合过程既繁琐又复杂。

个人开发者若想开发并销售一套类似的网页组件,就必须独立构建令牌、订阅、工单等一系列配套系统,研发成本极高。

因此,我希望能创建一个类似苹果应用商店的网页组件市场,基础设施开源,并提供免费的云服务。

将所有服务整合至统一的账户体系下,并赋能个人开发者研发、销售组件。

这是一个庞大的构想。

幸运的是,我并非那种「我有一个好想法,就差个程序员了」的空想家。

我,就是那个程序员。

技术

动工之前,必先确定底层技术架构。

勿在浮沙筑高台。

在技术层面,我亦有诸多想法。

前端

前端,我构思了一套基于 importmapsvelte 的方案,旨在实现无打包、零运行时依赖的组件化开发。

这让用户可以灵活替换、覆盖组件样式和内部逻辑,进行二次开发。

后端

后端,我设计了一套 rustprotobufgrpchttp 的自动化映射流程。

能自动生成相应的 js 代码,将 rust 函数无缝映射为前端函数。

目前,我正全力实现此后端方案,代码库: js0-grpc

我选择 protobuf 作为前后端通信的数据格式,并为此实现了一个压缩后仅 1KB 左右的编解码器。

file minify zstd gz br
demo/test/D.js 1896 1039 1031 949
demo/test/E.js 1596 869 865 789
demo/test/echoD.js 892 526 523 473
demo/test/echoE.js 700 429 426 405

这世上,屎山般的代码俯拾即是。难以想象,在我之前,主流 jsprotobuf 编解码器体积竟以 MB 计算。

如下图所示,Protobuf-ES 一文便展示了其项目中 protobuf 编解码器惊人的尺寸开销 ── 这正是前端鲜少采用 protobuf 的主因。

坦白说,json 格式相当冗余,反复传输的键名浪费了大量带宽。

虽然,我的 protobuf 编码器虽有 1KB 左右的额外开销,但这部分成本很快便能被节省下的数据传输带宽所抵消。

至于 httpgrpc 的交互,我计划用 rusttokio 实现一个全新的请求转换网关,它支持自动前端将的多个 grpc 并发请求合并为单一 http 请求。

例如,当网站首页几乎同时发起「请求用户名」和「请求用户消息流」这两个 RPC 调用时,前端会通过一个类似 setTimeout(()=>{mergePendingRpcCall()},10) 的节流函数,自动将它们合并为单次 http 请求,从而进一步减少传输开销、降低后端接口的耦合度。

结尾

每个人都期待能做一些改变世界而不是卖糖水的事情。

一个人写代码是孤单的,就像与风车作战的堂吉柯德。

欢迎感兴趣的朋友参与开发,一起来创造美丽新世界。

我们用 邮件列表 来讨论,欢迎加入。

想法很多,想法很廉价。

与其临渊羡鱼,不如退而结网。

暂述至此,我继续去写代码了。

Talk is cheap. Show me the code.

2025-10-16

相关推荐
To_OC7 小时前
别再串行写 await 了,Promise.all 才是并行请求的正确打开方式
前端·javascript·promise
vipbic7 小时前
中后台越做越乱后,我用插件化把它救回来了
前端·vue.js
Hyyy7 小时前
Computer Use 适合做什么,不适合做什么——一次真实使用后的思考
前端
小和尚同志8 小时前
前端 AI 单元测试思考与落地
前端·人工智能·aigc
invicinble9 小时前
c端系统,其实更像一个信息展示平台
前端
李姆斯10 小时前
管理是否可以被完全量化
前端·产品经理·团队管理
戮漠summer10 小时前
Missing Semester 计算机教育中缺失的一课 Lecture 01 Shell
开发语言·后端·scala
名字还没想好☜10 小时前
Next.js 中间件实战:鉴权、重定向与 A/B 分流
开发语言·前端·javascript·中间件·react·next.js
广州灵眸科技有限公司11 小时前
瑞芯微RV1126B开发板(EASY-EAI-PI2) INI文件操作
java·前端·javascript·网络·人工智能
江华森11 小时前
Web 开发基础:HTTP 与 REST
前端·网络协议·http