核心能力
JavaScript 执行
ECMAScript 5 + 部分 ES6
支持 let/const、箭头函数、for...of 等语法,内置 Object/Array/Number/String/Date 及常用方法(parseInt、parseFloat、stringify、eval)。
模板引擎
标签驱动的文本生成
通过 <@if>、<@for>、<@switch> 等标签生成脚本并执行,支持组件、插槽、模板导入/导出。
.NET 互操作
类型/实例映射
使用 ObjectMemberAttribute、ScriptMappingAttribute 等,将 .NET 类型、实例、方法和属性暴露给脚本;支持 DataTable 代理与自定义代理。
可暂停执行
Pause / Continue
脚本运行中可调用 ScriptContext.Pause() 暂停,外部再通过 Continue() 恢复,方便与异步流程或批处理协作。
模块化
import/export 支持
脚本与模板均支持 ES 模块语法,可通过自定义 IImportSourceManager 控制引用来源,便于按需拆分脚本。
示例完善
Windows 窗体演示
示例项目 ScriptTest 演示类型映射、方法映射、代理、导入导出、模板组件等常见使用场景。
项目结构
核心库
位于 MorkJs/ShenGu.Script,目标框架 .NET Framework 4.0:
MorkJs.cs:JavaScript 解析与执行。ScriptContext.cs:执行上下文、值转换、注册映射。TemplateParser.cs:模板标签解析与组件系统。ScriptNativeObject.cs:类型映射、属性/方法暴露及代理。
演示与测试
位于 MorkJs/ScriptTest:
ScriptTestForm.cs:可视化运行脚本与模板的 WinForms。DefaultScripts.cs:类型映射、代理、导入导出示例。html/:脚本与模板示例(组件、插槽、导入导出)。
快速导航
MorkJs/ScriptTest/html/build 中的组件模板,以及 MorkJs/ScriptTest/html/test 的脚本用例。