# SimulationJavaScript **Repository Path**: QQXQQ/SimulationJavaScript ## Basic Information - **Project Name**: SimulationJavaScript - **Description**: 模拟JavaScript - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-11-02 - **Last Updated**: 2026-02-27 ## Categories & Tags **Categories**: Uncategorized **Tags**: Go语言 ## README # SimulationJavaScript ## 介绍 SimulationJavaScript 是一个用 Go 语言实现的 JavaScript 引擎(基于 goja 项目),完全兼容 ECMAScript 规范。该项目实现了 JavaScript 的解析器、编译器、运行时和内置对象,可以直接在 Go 程序中执行 JavaScript 代码。 ## 功能特性 - **完整 JavaScript 运行时**:支持 ES6+ 全部特性 - **高性能**:针对 Go 语言优化,执行效率高 - **无缝 Go 集成**:支持 JavaScript 与 Go 代码互操作 - **内置对象完整实现**: - Array/Map/Set/WeakMap/WeakSet - String/Number/Boolean/Symbol - Date/RegExp/Promise - Proxy/Reflect - TypedArrays (Int8Array, Uint8Array, Float32Array 等) - Error 类型 - **Go 类型映射**:支持将 Go 结构体、切片、映射等导出到 JavaScript ## 软件架构 ``` SimulationJavaScript/ ├── ast/ # 抽象语法树定义 ├── parser/ # JavaScript 解析器 │ ├── lexer.go # 词法分析 │ ├── parser.go # 语法分析 │ ├── expression.go # 表达式解析 │ └── statement.go # 语句解析 ├── compiler.go # 编译器核心 ├── compiler_expr.go # 表达式编译 ├── compiler_stmt.go # 语句编译 ├── runtime.go # 运行时核心 ├── builtin_*.go # 内置对象实现 │ ├── builtin_array.go │ ├── builtin_object.go │ ├── builtin_function.go │ ├── builtin_string.go │ ├── builtin_promise.go │ └── ... ├── object_*.go # 对象实现 ├── string_*.go # 字符串实现 └── ftoa/ # 浮点数转字符串 ``` ## 安装教程 ```bash # 克隆仓库 git clone https://gitee.com/QQXQQ/SimulationJavaScript.git # 进入目录 cd SimulationJavaScript # 安装依赖 go mod download ``` ## 使用说明 ### 基本用法 ```go package main import ( "github.com/dop251/goja" ) func main() { vm := goja.New() // 执行 JavaScript 代码 result, err := vm.RunString(`console.log("Hello, World!")`) if err != nil { panic(err) } } ``` ### Go 与 JavaScript 互操作 ```go vm := goja.New() // 在 JavaScript 中调用 Go 函数 vm.Set("sayHello", func(call goja.FunctionCall) goja.Value { return goja.Undefined() }) // 将 Go 值传入 JavaScript vm.Set("data", map[string]interface{}{ "name": "test", "value": 123, }) // 导出 JavaScript 值到 Go result, _ := vm.RunString(`data.name`) ``` ### 编译与运行脚本 ```go // 编译 JavaScript program, err := goja.Compile("script.js", `var x = 1;`, false) // 运行已编译的程序 vm := goja.New() result, err := vm.RunProgram(program) ``` ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 性能基准 项目包含完整的性能测试,可以运行: ```bash go test -bench=. ``` ## 许可证 本项目基于 MIT 许可证开源。