1. 在低代码平台的实际落地过程中,我们发现标准化组件和可视化配置无法覆盖所有业务场景。不同行业、不同客户对同一功能模块(如审批流程、数据展示、表单校验)往往有差异化的业务逻辑要求。如果每次都由平台研发团队介入定制,会导致两个问题:一是研发资源被大量重复需求占用,无法聚焦平台核心能力建设;二是定制化需求的响应周期长(平均2周),无法满足业务方快速迭代的诉求。
此外,部分客户希望通过二开能力实现与内部系统的集成(如调用内部API、数据格式转换等),单纯靠可视化配置无法完成。因此,我们需要在平台与业务之间建立一个安全、高效的“桥梁”,让业务方能自主编写扩展逻辑,同时不影响平台本身的稳定性和安全性。
2. 本系统主要服务于企业级低代码平台,典型业务场景包括:企业内部管理系统的页面定制、数据展示逻辑差异化、表单提交流程扩展、第三方系统集成对接等。目标用户为具有一定JavaScript基础的业务开发人员或实施顾问,他们熟悉业务逻辑但不需要深入了解平台底层架构。
用户通过在线编辑器编写二开代码,使用onMount、onSubmit等钩子函数在平台的生命周期节点注入自定义逻辑。代码保存时,系统自动进行AST安全检查、语法转换、依赖分析,将用户友好的简写语法转换为标准SDK调用格式,并将原始代码与编译后代码分别存储。页面加载时,系统直接从数据库读取编译后代码,在安全沙箱中执行并注册钩子。当组件挂载或用户触发提交等操作时,系统按优先级顺序执行已注册的钩子函数,收集返回值并自动合并到组件实例中,实现无感知的二开能力注入。
我作为本项目的核心开发者,负责了以下工作:
系统架构设计:设计“编辑器→转换器→沙箱→存储”四层整体架构,明确各模块职责边界与数据流转路径
AST代码转换引擎开发:基于@babel/parser和babel-traverse实现用户代码的解析、依赖追踪和静默注入,完成onMount等钩子语法到$SDK.onMount标准调用的自动转换
安全沙箱建设:设计并实现“AST静态分析 → Proxy上下文隔离 → 资源监控”三层防御体系,编写eval检测、.constructor链检测、__proto__检测等10余条静态分析规则,实现Object.create(null) + Proxy的运行时隔离方案
钩子系统设计:设计钩子的注册、存储、优先级排序、触发执行和结果合并机制
版本管理与发布流程:设计双代码存储结构、语义化版本管理、草稿/发布状态流转、一键回滚能力
技术攻坚:解决原型链逃逸、with语句性能问题、AST误报用户自定义同名变量等关键技术难点
性能优化:优化沙箱执行速度,通过编译缓存、沙箱实例池复用等策略将代码加载时间控制在50ms以内
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!

下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态
评论