Hyvä的原理是什么? 重写了哪些内容? 为什么会让前台性能起飞?
这是个很专业、问到本质的问题。我不讲营销话术,直接从 Magento 底层机制 + 前端执行模型 给你拆清楚:
一句话先给“底层结论”
Hyvä 并不是“魔法加速器”,而是:
把 Magento 前台里「最拖慢性能的那一整套东西」彻底拿掉,只保留真正必要的渲染与交互。
性能起飞不是“优化”,而是 架构级减负。
一、Magento 原生前台(Luma)的性能瓶颈在哪里?
先理解 Hyvä 为什么快,必须先知道 Luma 为什么慢。
1️⃣ Luma 的真实技术栈(问题根源)
Magento 2 默认前台(Luma)依赖:
- RequireJS(模块加载器)
- Knockout.js(MVVM)
- jQuery
- UI Components(JS 驱动)
- 巨量
x-magento-init - 多层 mixins
- 动态 JS 渲染 DOM
👉 这套东西在 2016 年是先进的,但现在是:
JS-heavy + Client-side render + 强依赖执行顺序
2️⃣ Luma 的“慢”不是单点,而是叠加效应
页面加载时真实发生的事:
- 浏览器下载 HTML(不完整)
- 加载 require.js
- require.js 解析几十上百个 JS 依赖
- Knockout 初始化 bindings
- JS 再生成 DOM / 更新 DOM
- CSS 阻塞渲染
- JS 执行时间很长(TTI 高)
👉 Lighthouse 里你看到的:
- JS execution time 高
- Main thread blocked
- TTI 很晚
不是“某个 JS 慢”,而是整套模型慢。
二、Hyvä 的原理是什么?(核心)
核心原则一句话:
“能用 HTML + CSS 解决的,绝不用 JS;
能在服务端渲染的,绝不放到浏览器。”
三、Hyvä 重写了什么?(重点)
1️⃣ 前端框架:彻底移除 RequireJS / Knockout
Hyvä 做的第一件事就是:
❌ 不用 RequireJS
❌ 不用 Knockout
❌ 不用 jQuery
改用:
✅ 原生 Magento PHP 模板渲染(.phtml)
✅ Alpine.js(极轻量)做交互
✅ 原生浏览器能力(事件 / CSS / HTML)
👉 Alpine.js 本质是:
- “HTML 增强器”
- 几 KB
- 不做复杂状态管理
2️⃣ UI Component → HTML + PHP
在 Luma 里,很多东西是 JS UI Component:
- minicart
- messages
- toggles
- tabs
- dropdown
- validation
Hyvä 的做法是:
- 90% 直接用 PHP 输出完整 HTML
- JS 只做:
- show / hide
- toggle
- fetch(必要时)
👉 DOM 一次生成完成,不等 JS。
3️⃣ CSS:Tailwind,解决“CSS 体积 & 阻塞”
Luma 的 CSS 问题:
- 巨大的 LESS
- 很多无用样式
- 阻塞渲染
Hyvä:
- 用 Tailwind
- 按需生成 CSS
- 几乎没有“没用的 CSS”
👉 CSS 文件体积骤减,首屏渲染更早开始。
4️⃣ JS 执行模型完全不同(关键)
Luma:
- JS = 页面结构的一部分
- 页面“靠 JS 活着”
Hyvä:
- JS = 装饰层(enhancement)
- 页面“没有 JS 也能用”
这就是性能差距的本质。
四、为什么 Hyvä 会让前台性能“起飞”?
不是一个原因,是 5 个效应叠加。
🚀 原因 1:JS 体积直接砍掉 70%–90%
- 不加载 require.js
- 不加载 Knockout
- 不加载大量 UI JS
👉 JS 下载 + 解析 + 执行 全部下降。
🚀 原因 2:首屏 HTML 是“完整的”
- Luma:HTML 是骨架
- Hyvä:HTML 是最终形态
👉 浏览器一拿到 HTML 就能画页面
👉 TTFB → FCP → LCP 连续完成
🚀 原因 3:主线程几乎不被 JS 阻塞
- Alpine.js 的 JS 执行时间极短
- 不存在复杂依赖树
👉 Lighthouse 的 “Main thread work” 会明显下降。
🚀 原因 4:CSS 更轻、更快生效
- 少量、精准 CSS
- 不等 JS 初始化
👉 FCP/LCP 明显提前。
🚀 原因 5:浏览器原生能力被充分利用
Hyvä 倾向用:
- CSS hover / focus
<details>/<summary>- 原生表单校验
- IntersectionObserver(少量)
👉 减少 JS = 减少性能风险。
五、Hyvä 到底“重写了哪些东西”?(实话)
Hyvä 重写的是:
- 前台主题(templates / layout / CSS / JS)
- 前台交互模式
- 前台 JS 架构
Hyvä 没有重写的是:
- Magento 后端
- Catalog / Price / Promotion 逻辑
- Checkout(核心流程)
- API / GraphQL
- Admin
👉 所以:
- 后端稳定
- 迁移成本可控
- 不是推倒重来
六、为什么 Hyvä 不会“慢慢变回 Luma 那样”?
因为它结构性避免了 JS 膨胀:
- 没有 UI Component 机制
- 没有 requirejs 依赖地狱
- 不鼓励 JS 驱动 DOM
👉 除非你自己硬往里塞重 JS,否则不会退化。
七、现实项目里的性能差距(常见)
在真实 Magento 项目中常见结果是:
| 指标 | Luma | Hyvä |
|---|---|---|
| JS 体积 | 600KB–1MB+ | 50–150KB |
| FCP | 2.5–4s | <1.5s |
| LCP | 3–6s | <2s |
| TTI | 5–10s | <3s |
| Lighthouse Performance | 30–60 | 80–95 |
八、给你一句“架构级总结”
Hyvä 快,不是因为“优化得好”,
而是因为它把 Magento 前台最慢的那一整套架构换掉了。
如果你愿意,下一步我可以:
- 🧩 对比 你当前前台 vs Hyvä 的“真实改动成本”
- 🧩 告诉你 哪些第三方模块在 Hyvä 下最容易/最难适配
- 🧩 给你一个 Hyvä 是否适合你这个项目的判断清单
你只要说一句:
👉「帮我评估是否适合 Hyvä」。
