RawJS 是调用 `document.createElement()` 的更好方式

一个名为 RawJS 的新前端库,声称是一种更轻量、更符合直觉的方式来调用 `document.createElement()` 并构建 UI,而不需要 React 或虚拟 DOM。评论者大多批评其重营销的首页、缺乏清晰代码示例、笨拙的易用性,以及对 TypeScript 和非传统项目结构的依赖,认为它在复杂应用或团队场景下难以扩展,无法与成熟框架相比。也有人认可其减少依赖、尽量贴近 DOM 的目标,但大多数人认为 RawJS 更像是一个小众或实验性工具,而不是现代框架如 React、Vue 或 Svelte 的实用替代品。

落地页、演示和文档

  • 许多评论者觉得营销页面含糊不清:主要是一些宣称,代码示例很少,而且定位也不明确。
  • 在线演示因 UX 问题受到批评:返回按钮历史记录被刷屏、模态框别扭(没有明显的关闭按钮、遮罩层有问题)、字号巨大,以及整体上显得“未打磨”。
  • 拼写错误,以及从“Check out Squares”跳到示例仓库(而不是主站)的令人困惑链接,降低了可信度。
  • 一些人要求提供一个简单、标准的示例(例如 TODO 应用),并与 React/jQuery/vanilla 做并排对比,类似 “youmightnotneedjquery”。

API 设计与易用性

  • 大家普遍认为分享的代码片段过于冗长、偏命令式,而且比 jQuery 和框架模板都更难读。
  • 参数重载风格(混用字符串、函数、事件辅助器、属性、数组)被视为“魔法”,而且容易出错,与“no magic”的营销说法相矛盾。
  • 通过 JS 函数调用来写 HTML 和 CSS,让很多偏好模板或纯 HTML+CSS 再由 JS 增强的人失去了兴趣。

与框架和原生 JS 的定位比较

  • 支持者认可其意图:依赖极少、直接使用 DOM、没有虚拟 DOM,以及“DOM 就是状态”。
  • 批评者认为,构建 DOM 并不是难点;状态管理和可扩展更新才是,而这正是 React/Vue/Svelte/Solid 擅长的地方。
  • 一些人觉得 RawJS 像“组件化的 jQuery”,并不适合大型应用或团队规模化使用。
  • 也有人指出,JSX + React 已经事实上成为标准,而 htmx、Hotwire、ArrowJS,或更简单的 Vue 可能更合适。

构建、依赖和模块

  • 示例仓库里“没有 bundler/build”与“TypeScript 构建你的应用”的表述让一些人感到困惑;后来澄清为“没有 webpack/rollup,只是 tsc”。
  • 只建议使用 jsdelivr 托管依赖,以及关于“npm install 程序员”的调侃,引发了反对,尤其考虑到项目本身也有类似 npm 的依赖。
  • 该库对 ES modules 和 import 列表的不喜引发了争论;也有人为 ESM 和显式导入辩护,认为这是标准做法。

宣称、性能与规模

  • 像“没有学习曲线”“没有奇怪的魔法”“没有性能开销”“没有已知 bug”,以及一边使用 TypeScript 一边把它叫作“RawJS”之类的说法,被认为过于自信或具有误导性。
  • 整体情绪偏怀疑:目标有趣,但示例薄弱、UX 粗糙、相较现有库缺乏清晰优势,而且人们也怀疑它是否适用于大型、真实世界的前端项目。