title: OA/泛微 前端开发规范 created: 2026-04-18 updated: 2026-04-18 type: reference tags: [weaver]
OA/泛微 前端开发规范
适用于 E9 流程表单代码块、ecode 二次开发、前端脚本编写
1. 变量声明规范
严禁使用 var,优先使用 const,需重新赋值时使用 let
| 场景 | 推荐关键字 | 占比 | 说明 |
|---|---|---|---|
| 绝大多数情况 | const |
~90% | 声明后不可重新赋值,防止意外修改 |
| 需要重新赋值 | let |
~10% | 循环计数器、状态切换、累加器等 |
| 永远不用 | var |
0% | ES6 之后写新代码完全不需要它 |
为什么不用 var?
-
作用域泄露:
var没有块级作用域,会泄露到函数甚至全局作用域。 -
重复声明:
var允许在同一作用域重复声明,容易意外覆盖;let会报错。 -
变量提升与暂存死区:
var会初始化为undefined;let有暂时性死区,在声明前访问会直接抛错,更安全。 -
全局污染:
var声明的变量会挂载到window对象上。
为什么 Java 开发特别强调这个?
Java 一直是严格的块级作用域 + 强类型 + 编译期检查。var 的松散特性违背了 Java 的编程直觉,而 let/const 的设计理念和 Java 高度一致。
2. 字段操作规范
获取字段值
- 主表字段:
WfForm.getFieldValue("field12345") - 明细表字段:
WfForm.getFieldValue("field12345_0")(_0 代表第一行) - ❌ 不要使用
jQuery("#field12345").val()等原生 DOM 操作。 :WfForm.getFieldValue("field12345_0")(_0 代表第一行) - ❌ 不要使用
jQuery("#field12345").val()等原生 DOM 操作。### 修改字段值 - 通用修改:
WfForm.changeFieldValue("field12345", {value: "新值"}) - 修改显示属性:
WfForm.changeFieldAttr("field12345", 1)(1只读/2可编辑/3必填/4隐藏) - ❌ 不要使用
jQuery("#field12345").val("新值"),会导致联动失效。
3. 异步与联动
字段值变化监听
使用 WfForm.bindFieldChangeEvent,不要使用 jQuery 的 .change() 或 .on('input')。
// ✅ 正确做法
WfForm.bindFieldChangeEvent("field12345", function(obj, id, value){
console.log("字段值变更为:", value);
});
// ❌ 错误做法
jQuery("#field12345").change(function(){
// 在 E9 表单中可能不会触发或触发异常
});
联动修改自身字段
如果在事件监听中修改本字段的值,需要使用 setTimeout 延时,避免死循环或栈溢出。
WfForm.bindFieldChangeEvent("field12345", function(obj, id, value){
window.setTimeout(function(){
WfForm.changeFieldValue("field12345", {value: "处理后的值"});
}, 10);
});
4. ecode 模块规范
引入库
ecode 环境下,常用库已全局存在,不需要写 import:
// ❌ 不需要
import React from "react";
import { Button } from "antd";
// ✅ 直接解构
const { Button } = antd;
const { toJS } = mobx;
导出模块
使用 ecodeSDK 进行导出和导入: