EmulatorJS 网页模拟器前端
EmulatorJS 是基于 RetroArch 与 WASM 的浏览器端模拟器前端,用 JavaScript 把 NES、SNES、GBA、N64、PS1、街机等大量经典主机搬进网页,可自托管或走公共 CDN,几行代码即可嵌入自己的站点。
爱鲜报评分
0 人评分
4.2k
星数
否
中文
JavaScript
主语言
是
活跃
52
贡献者
人工分析
EDITORIAL推荐理由
它把 RetroArch 的 libretro 核心编译成 WebAssembly,让浏览器直接运行几十种老主机游戏,无需安装任何插件。项目以库/插件形式提供,可自托管也可用官方 CDN,接入成本极低,非常适合做怀旧游戏站、教学演示或产品内的彩蛋模块。GPL-3.0 协议与 4k+ Star 的活跃社区也保证了可持续性。
适用场景
- 自建怀旧游戏网站或游戏合集页
- 博客/文档中嵌入可玩的经典游戏 Demo
- 在线教育或前端教学中演示 WASM 与模拟器原理
- 企业内部活动页、彩蛋模块的轻量游戏入口
- 二次开发为游戏平台、ROM 管理系统的播放内核
优点
- 支持主机种类极多,覆盖任天堂、世嘉、索尼、雅达利等经典平台
- 纯前端 JavaScript + WASM,无需服务端安装模拟器,浏览器即开即玩
- 提供公共 CDN 与版本区分(stable/latest/nightly),接入只需几行配置
- 以库/插件形式设计,方便嵌入任意网页或与现有项目集成
- 开源免费、无广告,社区活跃,文档与配置器完善
缺点
- 本身不是独立网站,没有现成 Docker 一键部署方案,需要自行集成
- ROM 与 BIOS 文件需用户自备,涉及版权与合规风险
- 不同核心的兼容性与性能差异较大,移动端体验可能受限
- nightly 分支为开发主线,稳定性不足,生产环境应使用 stable
EmulatorJS 是什么
EmulatorJS 是一个基于 RetroArch / libretro 的浏览器端模拟器前端,使用 JavaScript + WebAssembly 实现。它把大量经典主机的模拟核心编译成 WASM,让用户无需安装任何插件,直接在网页里运行老游戏。
项目本身定位为库 / 插件,而不是一个独立网站,因此可以灵活嵌入到博客、游戏站、教学页面或任意 Web 应用中。
支持的平台
EmulatorJS 覆盖了非常广泛的复古平台,例如:
- 任天堂系:NES、SNES、N64、Game Boy / GBC / GBA、NDS、Virtual Boy
- 世嘉系:Mega Drive、Sega CD、Sega Saturn
- 索尼系:PlayStation
- 雅达利系:Atari 2600 / 7800、Atari Lynx
- 以及街机等更多核心
完整的核心列表可参考官方 Cores 文档。
版本与 CDN
项目提供三种版本,便于按需选择:
| 版本 | 说明 | 适用 |
|---|---|---|
| stable | 代码与核心均经过测试 | 生产环境(默认) |
| latest | 最新代码 + 稳定核心 | 尝鲜 |
| nightly | 最新代码 + 每日更新核心 | 开发调试,不建议生产 |
官方提供公共 CDN:https://cdn.emulatorjs.org/,只需指定数据路径与 loader.js 即可使用。
// 示例:指定数据目录
const EJS_pathToData = 'https://cdn.emulatorjs.org/stable/data/';
本地开发
在仓库根目录执行:
npm i
npm run start
随后访问 http://localhost:8080/ 查看演示页面。部署到生产环境前,建议先对脚本进行压缩以优化加载速度与带宽占用。
使用建议
- 生产环境优先选择 stable 版本,避免 nightly 带来的不稳定。
- ROM 与部分 BIOS 需自行准备,注意版权与合规问题。
- 项目以库形式集成,没有官方 Docker 镜像,需要自行嵌入到现有站点或框架中。
- 遇到问题时,提交 Issue 请注明所用版本(Stable / Latest / Nightly)并附上浏览器控制台日志。
适合谁用
如果你正在做怀旧游戏站、在线游戏合集、前端 WASM 教学演示,或想给产品加一个「能玩经典游戏」的彩蛋模块,EmulatorJS 是一个成熟且接入成本很低的选择。
评论
- 暂无评论,来写第一条吧。