Skip to content

参考

基于三家官方 Playground 2025–2026 现状编写

三者横向对比

维度TypeScript PlaygroundVue SFC PlaygroundSvelte Playground(原 REPL)
地址typescriptlang.org/playplay.vuejs.orgsvelte.dev/playground(旧 /repl/ 重定向)
编译什么TS/JS(tsc 浏览器内).vue SFC(@vue/compiler-sfc.svelte(Svelte 编译器)
编辑器MonacoCodeMirror 或 Monaco(带 Volar)CodeMirror 6
看编译产物.JS / .D.TSrender 函数 / JS、SSR、CSSJS output / CSS output
错误 / 日志Errors / Logs 标签 + Run预览即报错Result 预览
多文件// @filename:(twoslash,虚拟文件)文件标签(App.vue + import-map.json…)多文件 / 多组件标签
版本切换?ts=5.x / next / dev顶栏切 Vue 版本?version=5.x
分享机制hash(#code/ lz-string)+ query 配置URL hash(状态序列化)/playground/{id} 短链(gist)
插件✅ Plugins sidebar(npm 发布)❌(但可换 CDN、:showCompileOutput 等 props)
特色compiler flags 可视化 + Examples + AST / Bug Workbench + 导出到 CodeSandbox / StackBlitzImport Map 可编辑 + SSR 产物 + CDN 可切 npmmirrorREPL→Playground 改名 + 合并 Examples

分享 URL 机制对照

工具代码放哪配置 / 版本放哪短链 / 持久化
TypeScripthash#code/...(lz-string compressToEncodedURIComponent 压缩);旧格式 #src=...#example/xxx 加载示例query?ts=(版本)、?flag=value(编译 flag)、`?filetype=jsts
Vue SFChash:整个 REPL 状态序列化进 hash版本通常在顶栏 UI 切;Import Map 在文件里复制地址即分享完整可复现示例
Svelte保存后由短链承载query?version=保存生成 /playground/{id} 短链(关联 GitHub gist),登录可存

关键差异:TS 把「代码(hash)」和「配置 / 版本(query)」明确分两套放——别笼统说成「都在 hash 里」。Vue 主要靠 hash 序列化整份状态。Svelte 靠保存后的 /playground/{id} 短链。

「看编译产物」能力对照

工具看什么产物教学价值
TypeScript.JS(降级后的 JS)、.D.TS(生成的声明)看语法降级(downleveling)、看类型如何对外暴露
Vue SFCrender 函数 / JSSSR 输出CSS<template> / <script setup> 编译成什么、SSR 产物
SvelteJS outputCSS output看编译型框架的「编译时魔法」落成怎样的 JS

多文件机制对照(易混点)

工具多文件怎么做是不是真文件标签
TypeScript单编辑器内用 // @filename: foo.ts twoslash 注释切分虚拟文件❌ 虚拟文件,非标签
Vue SFC顶部真实文件标签(App.vueimport-map.jsontsconfig.json…)✅ 真·多文件标签
Svelte顶部真实文件标签,可建多个文件 / 组件✅ 真·多文件标签

共性 / 差异速记

共性(五条主线)

  1. 官方出品——各自语言 / 框架核心团队维护,跟随官方版本,是官方真理来源。
  2. 纯客户端编译、无后端——编译器在浏览器里跑(TS 用 tsc、Vue 用 @vue/compiler-sfc、Svelte 用 Svelte 编译器),打开即编译。
  3. 强绑单一框架 / 语言——不是通用编辑器。
  4. 看编译产物是核心价值——实时看「你写的 → 编译成什么」。
  5. URL / hash 分享、最小可复现——一条链接复现完整环境,是 issue repro 的标准工具。

主要差异

  • 多文件:TS 是 // @filename: 虚拟文件;Vue / Svelte 是真文件标签。
  • 分享:TS 分 hash(代码)+ query(配置)两套;Vue 靠 hash 序列化整份状态;Svelte 靠保存后的 /playground/{id} 短链。
  • 插件:只有 TS 有 Plugins sidebar(npm 发布);Vue / Svelte 没有插件体系。
  • 依赖:TS 自动拉 .d.ts;Vue 靠可编辑 Import Map(CDN 可切 npmmirror);Svelte 内置 npm 包解析。

两个不相关的「REPL」(务必分清)

  • Svelte 的 Playground 旧名 REPL(2023 改版后改名,/repl/ 重定向到 /playground/)。
  • Vue 的 SFC Playground 引擎仓库叫 vuejs/replplay.vuejs.org 是其官方部署)。
  • 两者毫无关系——一个是历史名字,一个是引擎仓库名。

何时从 Playground 转向通用编辑器

你的需求该用
演示语言 / 框架特性、看编译产物官方 Playground
做 issue 最小可复现、分享代码片段官方 Playground(一条 URL 即复现)
完整项目、真实构建工具链、完整 npm installStackBlitz / CodeSandbox
跑 Node 后端 / 连数据库 / 部署StackBlitz(WebContainers)/ CodeSandbox

TS Playground 的 Export 菜单直接提供 Open in CodeSandbox / StackBlitz,是「学习 / repro → 完整开发」最顺滑的过渡出口。

官方文档 / 仓库链接

工具资源URL
TS Playground入口https://www.typescriptlang.org/play
TS PlaygroundPlayground Handbook(URL 结构)https://www.typescriptlang.org/_playground-handbook/url-structure.html
TS PlaygroundJS + .D.TS Sidebarshttps://www.typescriptlang.org/_playground-handbook/js---dts-sidebars.html
TS PlaygroundTwoslash 注释(多文件 / flag)https://www.typescriptlang.org/_playground-handbook/twoslash-annotations.html
TS PlaygroundPlugins 开发https://www.typescriptlang.org/dev/playground-plugins/
TS Playground源码仓库https://github.com/microsoft/TypeScript-Websitepackages/playground
Vue SFC Playground入口https://play.vuejs.org/
Vue SFC Playground官方说明(SFC 指南)https://vuejs.org/guide/scaling-up/sfc.html
Vue SFC Playground引擎仓库https://github.com/vuejs/repl
Svelte Playground入口(新)https://svelte.dev/playground
Svelte Playground改版 / 改名博客https://svelte.dev/blog/svelte-dev-overhaul
Svelte Playground文档https://svelte.dev/docs
Svelte Playground站点 + REPL 仓库https://github.com/sveltejs/svelte.dev