news 2026/10/21 11:26:10

EmulatorJS 3 步跑通:浏览器模拟器前端,本地就能开玩

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
EmulatorJS 3 步跑通:浏览器模拟器前端,本地就能开玩

EmulatorJS 3 步跑通:浏览器模拟器前端,本地就能开玩

【免费下载链接】EmulatorJSA web-based frontend for RetroArch项目地址: https://gitcode.com/GitHub_Trending/em/EmulatorJS

想在网页里挂一个能跑老游戏的入口,又不想自己搭模拟器后端?EmulatorJS 是一个浏览器模拟器前端,把 RetroArch 的模拟核心搬进网页,打开就能拖 ROM 开玩,不用装任何客户端。

它怎么在浏览器里跑起 RetroArch

它本质是 RetroArch 的网页前端:页面先加载 data/ 下的核心文件(用 wasm 编译出来的模拟器内核),再把你给的 ROM 喂进去,画面和声音就在浏览器里渲染出来。核心逻辑在 data/src/emulator.js。跟装一套本地模拟器不同,它没有客户端要装,浏览器本身就是运行环境,这也是它最省事的地方。

本地跑通只需两步

最省事的一条路是先本地跑起来确认能玩,再谈怎么部署。仓库只读,先克隆到本地操作:

git clone https://gitcode.com/GitHub_Trending/em/EmulatorJS cd EmulatorJS npm i && npm run start

起好后在浏览器打开 http://localhost:8080/,页面中间有个拖拽区,把一个 ROM 文件拖进去就能开玩;跑通这一步,后面的路才顺。起的服务就是仓库自带的 http-server,跑在 8080 端口,停掉用 Ctrl+C 就行。没有 Node 环境的话,仓库里也放了 serve.py 可以临时起个服务顶一下。

按你的用法挑一条路

三条常见用法,各说两句,先对号入座。

塞进博客或网站里

把模拟器嵌进你自己的页面,只需设几个全局变量再加载 data/loader.js。

window.EJS_player = '#game'; window.EJS_gameUrl = 'roms/xxx.nes'; window.EJS_core = 'nes'; window.EJS_pathtodata = 'data/'; window.EJS_startOnLoaded = true;

容器就是页面里一个 id 为 game 的 div,脚本路径写成 data/loader.js。路径统一指向同一份 data/ 目录,核心和前端才不会找错地方。EJS_core 支持 nes、snes、segaMD 这类核心名,具体看核心包(data/cores/)。

给自己搭一台本地游戏库

自己玩就沿用上面本地那步,想多装点主机核心再补一条命令:

npm install @emulatorjs/cores

装完核心文件落到 data/cores/,拖 ROM 时页面会按扩展名自动认。界面默认英文的话,设一下 window.EJS_settingsLanguage 就能切语言。

给团队开一个共享入口

多人共用就把页面挂到一台常开的服务器上,浏览器直接访问。游戏文件(ROM)放在服务器某目录下,用 EJS_gameUrl 指向它即可。发布前压缩一下脚本能明显加快首屏,做法见 minify/README.md。这条多数小团队用不上,先别急着上服务器。

卡住时先看这几条

下面几条覆盖了最常见卡点,按症状对一步操作。

  • 页面空白、游戏不出来:多半是 EJS_pathtodata 没配对,确认它以斜杠结尾并指向真正的 data/ 目录。
  • 某个核心跑不了:该核心没下载,跑 npm install @emulatorjs/core-<核心名> 补上。
  • 报 threads 相关提示:部分核心要 EJS_threads,本地 demo 页已有开关,线上得配 SharedArrayBuffer 响应头。
  • 界面是英文:设 window.EJS_settingsLanguage,中文文件在 data/localization/zh.json。

先把本地那步跑起来,打开 8080 端口拖个 ROM 确认画面能动,再决定是塞进博客还是上服务器。

【免费下载链接】EmulatorJSA web-based frontend for RetroArch项目地址: https://gitcode.com/GitHub_Trending/em/EmulatorJS

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/21 11:24:41

转:文化变革

个人理解&#xff1a; 真正的文化转型从不先改思想&#xff0c;而是先改行为 只有当你的目标是完成任务的时候&#xff0c;文化变革才可能真正实现 思考并不能使我们养成一种新的实践方式&#xff0c;而具体的行动却可以帮助我们形成一种新的思维方式 不能把数据作为唯一的标准…

作者头像 李华
网站建设 2026/10/21 11:24:41

聊聊 Agent 工程化:Demo 很好写,生产却处处是坑

前言 很多同学初学 Spring AI Alibaba 智能体时&#xff0c;都会觉得 Agent 开发非常简单&#xff1a;定义工具、注入模型、写一段提示词、调用 agent.call() 即可运行。 但这种只能跑通的 Demo Agent&#xff0c;绝对无法上线生产。 日常开发中&#xff0c;90% 的 Agent 线上问…

作者头像 李华
网站建设 2026/10/21 11:21:34

agent-framework-azure-ai-py - SKILL

name: agent-framework-azure-ai-py description: “Build persistent agents on Azure AI Foundry using the Microsoft Agent Framework Python SDK.” risk: critical source: community date_added: “2026-02-27” Azure 托管代理的 Agent Framework 使用 Microsoft Agent…

作者头像 李华
网站建设 2026/10/21 11:10:22

2012-2024年 上市公司-企业业务招待费数据 (xlsx+文献)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华