# BxScript **Repository Path**: javaup/BxScript ## Basic Information - **Project Name**: BxScript - **Description**: 本项目主要处于学习目的而开发,灵感来源主要是otto开源项目,语法主要是JavaScript语法,但是有部分特色(见下方), JavaScript的prototype等没有支持;未来支持桌面应用开发 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 5 - **Forks**: 0 - **Created**: 2023-09-13 - **Last Updated**: 2026-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: 桌面应用, 解释器, JavaScript ## README # BxScript 🚀 [](https://en.wikipedia.org/wiki/C%2B%2B17) [](https://www.microsoft.com/windows) []() [](LICENSE) > **BxScript** 是一个基于 C++17 开发的、轻量级、专注于 **桌面应用开发** 的嵌入式脚本语言解释器。 > MacOS与Linux部分暂未兼容 > 它的语法设计深受 JavaScript 启发,但在底层深度集成了 Windows 原生 API。通过 BxScript,你可以使用极简的脚本代码构建高性能的 Win32 GUI 应用程序,或是编写系统自动化脚本。它内置了事件循环机制,无需庞大的第三方运行时(如 Electron 或 V8),即可获得现代化的开发体验。 --- ## ⚠️ 免责声明与使用限制 (Disclaimer & Restrictions) **请在使用本项目前仔细阅读以下条款:** 1. **仅供技术研究**:本项目开源的初衷是用于编程语言原理的学习、技术交流以及合法的软件开发。 2. **严禁非法用途**:**严禁**将 BxScript 用于任何形式的**灰色产业(灰产)**、**黑客攻击**、**网络诈骗**、**恶意软件编写**或其他违反您所在地法律法规的行为。 3. **免责条款**:使用者基于本项目开发的任何衍生产品或应用,其产生的一切法律后果由使用者自行承担。开发者(BurNingLi)不对任何因非法使用本项目而导致的损失或法律责任负责。 **如果您无法遵守上述条款,请立即停止使用本项目。** --- ## ✨ 核心特性 (Features) * **声明式原生 GUI** 🖥️: * **原生性能**:内置轻量级 Win32 封装库,无需编写繁琐的 C++ 模板代码。 * **流式构建**:支持**声明式 UI 构建**,通过链式调用和对象嵌套快速搭建复杂界面。 * **现代化特性**:支持高分屏 (DPI Aware)、系统托盘、菜单栏、透明窗体等特性。 * **WebView2 深度集成** 🌐: * **混合开发**:基于 Edge (Chromium) 内核,支持构建现代化的 Hybrid 应用。 * **双向绑定**:实现脚本与网页的高效通信 (Binding),让 C++ 的系统能力赋能 Web 前端。 * **异步事件循环 (Event Loop)** ⚡: * **非阻塞设计**:内置微任务/宏任务调度系统,原生支持 `setTimeout`, `setInterval`。 * **流畅体验**:网络请求 (`Net`)、文件 IO 等耗时操作均在后台线程执行,回调在主线程触发,保证 UI 界面**永不卡顿**。 * **全功能标准库** 📦: * **Net**: 封装 WinINet,支持 HTTP/HTTPS 请求 (GET, POST, Multipart),无需额外依赖 curl。 * **Crypt**: 内置 MD5, SHA256, HMAC, Base64, CRC32 等常用加密算法。 * **System**: 提供鼠标/键盘模拟 (`Mouse`, `Keyboard` 模块)、屏幕信息获取、进程管理等自动化能力。 --- ## 🖥️ 声明式 GUI 构建 (Declarative GUI) BxScript 使得构建 Windows 桌面应用变得异常简单。你不再需要处理消息循环、句柄或回调函数指针,只需描述你的界面。 ### 示例代码 ```javascript // 1. 创建一个主窗口 let app = win.form("apps").size(800, 600) .center() // 屏幕居中 .icon("app.ico"); // 设置图标 // 2. 创建一个按钮,链式设置属性 let btn = win.button("btn1").text("Click Me") .pos(220, 150) .size(160, 40) .font({size: 14}); // 3. 绑定点击事件 (支持闭包) btn.on("click", function() { win.alert("你好,这是原生弹窗!"); // 动态修改控件属性 btn.text("已点击"); }); // 4. 将控件添加到窗口 app.add(btn); // 5. 入消息循环 win.loop(); ``` ### 运行效果预览  *(此处为占位图,实际运行将显示原生 Windows 窗口)* --- ## 🌐 WebView2 集成 (Hybrid App) BxScript 内置了对 WebView2 的支持,允许你使用 HTML/CSS/JS 编写界面,同时调用底层的系统能力。 ```javascript // 创建一个 WebView 窗口 let web = win.webview() .size(1024, 768) .title("WebView Bridge Demo") .html(`