推出全新 Front-End Framework

发布: (2025年12月27日 GMT+8 03:19)
8 min read
原文: Dev.to

Source: Dev.to

请提供您希望翻译的具体文本内容,我将为您翻译成简体中文。

介绍

WebForms Core — 将 Server‑Command/Client‑Execution 引入前端

前端生态长期被状态驱动和组件化框架所主导。虽然这些方法功能强大,但在以表单为中心、企业级和指令驱动的应用中,它们常常会引入不必要的复杂性。

WebForms Core 的创建正是为了挑战这一假设。

最初作为 Server‑Command/Client‑Execution 技术推出,WebForms Core 侧重于统一不同后端语言的 UI 逻辑,同时保持前端轻量。随着 版本 2 的发布,这一愿景迈出了重要一步。

在此次更新中,WebForms Core 引入了两项突破性功能 — WasmBackFrontBack — 使得 WebForms 类不仅可以在服务器上运行,还可以在 WebAssembly直接在客户端 上运行。于是,WebForms Core 发展为真正的分布式 UI 执行模型,并通过全新的 Commander/Executor 架构形式化。

Commander/Executor 架构将前端从状态和组件依赖中解放出来,转变为指令驱动模型。

在前端使用 WebForms Core 技术

本文将探讨 WebForms Core 如今在前端的工作方式,新 FrontBack 机制如何实现客户端执行,以及为何这种方法代表了一种构建基于 JavaScript 的网页界面的根本性新方式。

Source:

如何在前端使用 WebForms Core

此 WebForms 类使用 JavaScript 编写,运行在前端,与在服务器或 WebAssembly 中运行的其他 WebForms 类不同。

注意 – WebForms Core 包含两部分:
Commander – 面向所有编程语言的 WebForms 类。
Executor – 一个前端库,称为 WebFormsJS(实际文件名 web-forms.js)。
WebFormsJS 只需放在 HTML 页面 <head> 中;完成初始配置后,你只需调用 WebForms 类的函数即可。
不要 将其与在 Node.js(服务器端)中使用的 WebForms.js 类混淆。

1. 添加 WebForms 类文件

从下面的仓库复制 WebForms 类文件到你的项目中:

  • (链接到仓库)

2. 创建视图(HTML)文件

下面是一个最小的 HTML 页面示例,加载 WebFormsJS 并在页面加载时调用 FrontBackFrontBack 调用指向包含 UI 逻辑的模块。

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Using WebForms Core</title>
  <script src="/path/to/web-forms.js"></script>
</head>
<body>
  <button id="Button1">Click me!</button>

  <script>
    // FrontBack receives the load event and the path to the main module.
    window.addEventListener("load", (event) => {
      FrontBack(event, "/script/module/main.js");
    });
  </script>
</body>
</html>

为什么采用这种方式?
在典型的服务器端场景中,你会使用 exportToHtmlComment 的输出渲染页面,WebFormsJS 会自动提取并执行 Action Controls。由于本例使用的是静态页面,我们在 load 事件中手动触发 FrontBack

3. 编写主模块(/script/module/main.js

通过 FrontBack 执行的模块必须导出一个 PageLoad 函数,该函数接收事件参数。若需要,还可以在事件参数后传入其他参数。

// /script/module/main.js
import { WebForms, HtmlEvent } from "./WebForms.js";

export function PageLoad(evt) {
  const form = new WebForms();

  // 为按钮注册前端点击处理器。
  form.setFrontEvent("Button1", HtmlEvent.OnClick, "/script/module/change-color.js");

  // 返回 WebFormsJS 将要处理的响应。
  return form.response();
}

4. 编写点击处理器模块(/script/module/change-color.js

当用户点击按钮时,会执行此模块。它演示了多个 WebFormsJS 功能:

  • <body> 添加一个新的 <h2> 标签。
  • 设置其内部文本。
  • 更改文本颜色。
  • 延迟后更改背景颜色。
// /script/module/change-color.js
import { WebForms, InputPlace } from "./WebForms.js";

export function PageLoad(evt) {
  const form = new WebForms();

  // 向 body 添加 <h2> 并设置内容。
  form.addTag("", "h2");
  form.setText("", "New H2 Tag");
  form.setTextColor("", "orange");

  // 2 秒后更改 body 背景颜色。
  form.setBackgroundColor(InputPlace.tag("body"), "lightgreen");
  form.assignDelay(2000);

  return form.response();
}

运行示例后,点击 Click me! 将会:

  1. 插入一个文本为 New H2 Tag<h2> 元素。
  2. 将该文本颜色设为橙色。
  3. 两秒后,将页面背景颜色改为浅绿色。

获取最新的 WebFormsJS 脚本

可以从官方仓库下载最新版本的 web-forms.js

  • (下载链接)

结论

WebForms Core 的 FrontBack 机制展示了如何通过命令驱动的架构取代传统的以状态为中心、组件繁重的前端模型。将 UI 逻辑迁移到可在客户端(或 WebAssembly)执行的可复用 WebForms 类后,开发者可以获得:

  • 统一代码 跨服务器、WebAssembly 和客户端。
  • 减小捆绑体积 – 浏览器中仅需轻量级的 WebFormsJS 执行器。
  • 清晰的分离应该发生什么(Commander)与 如何执行(Executor)。

在下一个企业或表单密集型应用中尝试一下,体验更精简、更易维护的前端工作流。

FrontBack 和 WasmBack:分布式 UI 执行框架

随着 FrontBackWasmBack 的引入,WebForms Core 超越了最初的服务器中心模型,成为一个完整的分布式 UI 执行框架。通过采用 Commander/Executor 模式,它提供了一种统一的方式来一次性定义 UI 行为,并在服务器、WebAssembly 和浏览器之间执行。

不同于依赖虚拟 DOM、组件树或响应式状态管理的传统前端框架,WebForms Core 采用 命令导向的方法。UI 变化被表达为显式的、可序列化的命令,并由轻量级的前端执行器执行,使客户端保持简洁且可预测。

该模型在表单驱动的应用、企业系统以及后端与前端逻辑一致性至关重要的项目中尤为强大。同时,新的 FrontBack 能力为现代客户端交互打开了大门,而不牺牲架构的清晰性。

WebForms Core 旨在彻底取代任何前端框架。这项技术引入了一种强大的替代范式——一种优先考虑控制、可移植性和实现透明度的范式。

Back to Blog

相关文章

阅读更多 »

用纯HTML取代JavaScript

文章 URL: https://www.htmhell.dev/adventcalendar/2025/27/ 评论 URL: https://news.ycombinator.com/item?id=46407337 积分: 16 评论数: 1