SCSAI 原生 JS 文件分析
核心结论
30+ 个 SCSAI 原生 JS 文件(~2MB)已从 index.html 移除,由 src/SCSAI-shim.js(~5KB)替代。
原因:Vue 前端和 SCSAIBomService(index.js)通过 fetch() + AuthHeaders 直连 Node.js 代理,完全不依赖这些浏览器端 SCSAI JS 库。
加载与初始化流程(原始)
index.html 加载顺序(40 个 <script>):
──── SCSAI 基础设施 ────
XmlHttpRequestManagerCommon.js → XMLHttpRequest 管理(未使用)
XmlDocument.js / XmlDocumentCommon.js → DOM 操作(未使用)
mscorlib.js → Script# 运行时(IOM 基础,未使用)
IOM.ScriptSharp.debug.js → SCSAI IOM 类库 4334 行(未使用)
enumerations.js → 枚举常量(未使用)
client_cache.js → XML 缓存(未使用)
ModalDialogHelper.js / Utils.js → 弹窗/工具函数(未使用)
XmlUtils.js / Xml.js → XML 工具(未使用)
core/Soap.js / soap_object.js → SOAP 通信引擎(未使用)
WebFile.js / BrowserInfo.js → 文件/浏览器检测(未使用)
BrowserUtils.js / GUIDManager.js → GUID 生成(未使用)
TopWindowHelper.js → 窗口管理(未使用)
ClientControlsFactoryHelper.js → UI 控件工厂(未使用)
ShortcutsHelperFactory.js → 快捷键(未使用)
CriteriaConverter.js → 条件转换(未使用)
vars_storage.js → 变量储存(未使用)
core/sciot_object.js → ★ Sciot 核心 218KB(已替换)
sciot_methods.js / sciot_ui_methods.js → 方法执行/UI(已替换)
cryptoJS.js / md5.js / cryptohash.js → 加密(已替换)
sciot_user.js / sciot_modules.js → 用户/模块(已替换)
sciot_export.js → 导出功能(未使用)
core/GlobalObjectsPatch.js → ★ 全局补丁层 879 行(已替换)
SCSAIFileLoader.js → 动态加载器(未使用)
──── Utils ────
utils/md5.js / cache.js / api-request.js → 工具函数(已替换/未使用)
utils/error-handler.js / xml-parser.js / bom-exporter.js → (未使用)
──── 应用入口 ────
index.js → ★ SCSAIBomService 4005 行(保留)
──── Vue ────
/src/main.js → Vue 3 应用(保留)
文件分类
✅ 必须保留(已集成到 shim 或保留原加载)
| 文件 | 原因 | 处理方式 |
|------|------|----------|
| index.js | 定义 SCSAIBomService + window._bomService | 保留 script 标签 |
| src/SCSAI-shim.js | 替代所有 SCSAI 原生 JS 的轻量存根 | 新增,main.js import |
🔄 已替换为存根(文件保留在磁盘,从 HTML 移除)
| 原文件 | 存根内容 |
|---|---|
| mscorlib.js | 无 — 无用 |
| IOM.ScriptSharp.debug.js (4334行) | window.IomFactory / window.IomAgent 空对象 |
| core/sciot_object.js (218KB) | window.Sciot 最小构造器 + commonProperties |
| sciot_methods.js | Sciot.prototype 上的方法由 index.js._ensureSciotMethods() 补丁 |
| sciot_modules.js | window.SciotModules 空对象 |
| sciot_user.js | window.sciot 实例 + commonProperties |
| core/GlobalObjectsPatch.js | 所有补丁已内联进 shim |
| cryptoJS.js + md5.js + cryptohash.js | window.MD5Util 纯 JS 实现 |
| utils/md5.js | window.MD5Util 已包含 MD5 |
❌ 完全未使用(可删除)
| 文件 | 说明 |
|---|---|
| common/javascript/XmlHttpRequestManagerCommon.js | XMLHttpRequest 管理,未引用 |
| common/javascript/XmlDocument.js | XML DOM 操作,未引用 |
| common/javascript/XmlDocumentCommon.js | XML 辅助,未引用 |
| enumerations.js | 枚举常量,未引用 |
| client_cache.js | XML 缓存,未引用 |
| ModalDialogHelper.js | SCSAI 弹窗,未引用 |
| Utils.js | SCSAI 工具函数,未引用 |
| XmlUtils.js | XML 工具,未引用 |
| Xml.js | XML 处理,未引用 |
| core/Soap.js | SOAP 引擎,未引用 |
| soap_object.js | SOAP 对象,未引用 |
| WebFile.js | 文件处理,未引用 |
| BrowserInfo.js | 浏览器检测,未引用 |
| BrowserUtils.js | 浏览器工具,未引用 |
| GUIDManager.js | GUID 生成,未引用 |
| TopWindowHelper.js | TOP 窗口管理,未引用 |
| ClientControlsFactoryHelper.js | 控件工厂,未引用 |
| ShortcutsHelperFactory.js | 快捷键,未引用 |
| CriteriaConverter.js | 条件转换,未引用 |
| vars_storage.js | 变量存储,未引用 |
| sciot_ui_methods.js | UI 方法,未引用 |
| sciot_export.js | 导出功能,未引用 |
| SCSAIFileLoader.js | 动态加载器,未引用 |
| utils/api-request.js | API 请求工具,未引用 |
| utils/error-handler.js | 错误处理,未引用 |
| utils/xml-parser.js | XML 解析,未引用 |
| utils/bom-exporter.js | BOM 导出,未引用 |
| utils/cache.js | 缓存工具,未引用 |
| 全部 SCSAI/ai/ 目录 | DeepSeek/LLM 集成,未引用 |
| 全部 SCSAI/Classes/ 目录 | SCSAI 类视图,未引用 |
| 全部 SCSAI/CultureInfo/ 目录 | 国际化资源,未引用 |
⚠️ 可保留但建议移除(从 HTML 删除,留磁盘备份)
| 文件 | 说明 |
|---|---|
| utils/md5.js | MD5 已内联进 shim |
| utils/cache.js | 缓存逻辑已由 index.js 内置实现 |
| utils/bom-exporter.js | BOM 导出功能未在前端使用(服务端有实现) |
优化效果
| 指标 | 优化前 | 优化后 |
|---|---|---|
| index.html 标签数 | 40 个 | 2 个(index.js + main.js) |
| Vite 构建警告 | 40 条 | 1 条(仅 index.js) |
| 浏览器加载 SCSAI JS | ~2MB | ~5KB(存根) |
| 首屏加载时间 | 估计增加 500-1500ms | 消除 SCSAI 脚本加载阻塞 |
| 可维护性 | 依赖 30+ 散落文件 | 统一在 src/SCSAI-shim.js |
实际数据流(验证)
Vue 管理视图 (CustomerManagement.vue 等)
→ window._bomService._SCSAIApiRequest('ApplyItem', aml)
→ fetch('/SCSAI-api/', { headers: { AUTHUSER, AUTHPASSWORD, DATABASE } })
→ Node.js 服务端代理 (server.js /api/SCSAI-proxy 路由)
→ http.request → SCSAI InnovatorServer.aspx
→ XML 响应
→ _parseAMLResponse() → 返回 JSON
此路径完全不经过任何 SCSAI 浏览器端 JS 文件。
BossAgents