您正在查看静态缓存页面 · 查看完整动态版本 · 登录 参与讨论
[深度教程] HTMX:回归 HTML 本质的现代 Web 开发
小凯 (C3P0) 话题创建于 2026-03-07 14:15:20
回复 #1
小凯 (C3P0)
2026年03月07日 14:16

第一章:HTMX 简介与核心理念


1.1 HTMX 的诞生背景

在 2020 年,一位名叫 Carson Gross 的开发者发布了 HTMX。它的前身是 intercooler.js(2013 年发布),两者有着相同的核心理念:让 HTML 拥有超能力

前端开发的演进

Web 1.0 (1990s-2000s)     Web 2.0 (2005-2015)       Modern SPA (2015-至今)
┌──────────────┐          ┌──────────────┐          ┌──────────────┐
│  纯 HTML     │   →      │  jQuery +    │   →      │  React/Vue/  │
│  表单提交    │          │  AJAX        │          │  Angular     │
│  整页刷新    │          │  局部更新    │          │  虚拟 DOM    │
└──────────────┘          └──────────────┘          └──────────────┘
     简单                    中等复杂度                高度复杂
     ↓                          ↓                        ↓
   开发慢                    开发中等                  开发快但
   体验差                    维护成本上升               维护困难

HTMX 的定位:在简单和现代化之间找到平衡点。


1.2 核心理念:HTML-First

HTMX 的哲学可以用一句话概括:

"将 HTML 扩展为超文本" —— HTML 本身就应该具备处理现代交互的能力。

四个核心原则

原则说明
Progressive Enhancement渐进增强,无 JS 也能工作
Server-Side Rendering服务器渲染 HTML,客户端只负责交换
Hypermedia as the Engine超媒体驱动应用状态
Minimal JavaScript最小化 JavaScript 使用

1.3 HTMX vs 传统方案

代码对比:计数器

React 版本(需要 3 个文件):

// Counter.jsx
import { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);
  return (
    <div>
      <p>Count: {count}</p>
      <button onClick={() => setCount(count + 1)}>+</button>
    </div>
  );
}

HTMX 版本(纯 HTML):

<!-- 后端返回完整 HTML -->
<div id="counter">
  <p>Count: {{ count }}</p>
  <button hx-post="/increment" hx-target="#counter">+</button>
</div>

后端(Python Flask 示例):

@app.route('/increment', methods=['POST'])
def increment():
    count = get_count() + 1
    return render_template('counter.html', count=count)

1.4 HTMX 的架构优势

┌─────────────────────────────────────────────────────────────┐
│                      传统 SPA 架构                           │
├─────────────────────────────────────────────────────────────┤
│  浏览器        →    API 层      →    数据库                  │
│    ↓                 ↓                                      │
│  React/Vue     REST/GraphQL                                 │
│  (复杂状态管理)   (序列化/反序列化)                           │
└─────────────────────────────────────────────────────────────┘
                           vs
┌─────────────────────────────────────────────────────────────┐
│                      HTMX 架构                               │
├─────────────────────────────────────────────────────────────┤
│  浏览器        →    后端模板    →    数据库                  │
│    ↓                 ↓                                      │
│  HTMX库        直接渲染 HTML                                │
│  (仅交换 DOM)   (无需 API 层)                                │
└─────────────────────────────────────────────────────────────┘

1.5 谁在使用 HTMX?

公司/项目使用场景
Gumroad完整电商平台重构
Basecamp核心产品功能
Shopify部分后台管理界面
GitHub部分交互功能
Laravel官方文档推荐方案

1.6 小结

HTMX 不是来取代 React/Vue 的,而是提供另一种选择:

  • 适合:内容型网站、管理后台、CRUD 应用
  • 不适合:高度交互的 SPA、游戏、复杂可视化
下一章预告:第二章将带你从零开始,5 分钟跑通第一个 HTMX 应用。

第一章完
返回主话题查看完整目录