💻 客户端 JavaScript 库:EFW

所提供的源代码构成了名为 EFW 的框架的客户端 JavaScript 库efw.jsefw.client.js)。

该框架的主要目的是提供客户端(浏览器)与服务器之间的事件驱动通信以及随之而来的UI 操作自动化


🧪 主要结构和功能

1. Efw 构造函数(efw.js

2. 全局实例和属性(efw.js

3. 系统初始化(efw.js


📡 EfwClient 的通信流程(efw.client.js

EfwClient.prototype.fire 方法包含执行服务器事件的核心逻辑。

1. 事件执行流程

事件执行基本上由以下两个阶段的 Ajax 通信(或 WebSocket 通信)组成。

步骤 方法 目的
清除 N/A 清除错误显示 (.efw_input_error)。
URL 构建 N/A 构建 efwServletuploadServletdownloadServletpreviewServletefwWebSocket 的 URL。
阶段 1 _callFirstAjax 向服务器发送事件 ID,以获取客户端应收集的参数格式 (paramsFormat)。
参数收集 _pickupParams 根据从服务器获取的 paramsFormat,自动从 HTML 元素 ($(key)) 和 manualParams 中收集数据。
文件上传 _callUploadAjax 如果包含文件输入 (<input type="file">),则使用 FormData 上传文件
阶段 2 _callSecondAjax / _callSecondAjaxInWsMode 收集到的全部参数发送到服务器,以获取事件的执行结果 (values, actions)。
结果反映 _showValues 根据服务器返回的 values自动更新 HTML 元素的值
动作执行 _showActions 根据服务器返回的 actions,执行客户端操作(错误显示、元素的显示/隐藏、导航、下载等)。

2. 参数的收集 (_pickupParams)

3. 动作的处理 (_showActions)

服务器通过返回 actions 对象来指示客户端执行特定动作。

💡 总结

所提供的源代码被设计为一个健壮的客户端框架,用于抽象化和自动化“客户端-服务器之间的双向通信”和“UI 的数据绑定/操作”。开发人员无需编写冗余的 Ajax 回调处理或 DOM 操作代码,只需调用 Efw("eventId") 即可完成服务器事件的执行、参数的自动收集、结果的自动显示以及 UI 动作的执行。