fastTinker:支持多语言的桌面级快速原型开发工具

fastTinker是一款基于Electron的多语言桌面编程环境,支持JavaScript/TypeScript和PHP无缝切换,集成Monaco编辑器、包管理功能和魔法注释调试,专为快速原型开发和代码测试设计。

fastTinker:支持多语言的桌面级快速原型开发工具

你是否曾因需要测试JavaScript片段、PHP脚本和TypeScript代码而在不同工具间频繁切换?我深有同感,正是这种挫败感促使我构建了fastTinker——一个统一的桌面编程环境,让你可以在一个优雅的Electron应用中无缝切换多种编程语言。

问题背景

作为开发者,我们经常需要:

  • 无需搭建完整项目即可快速测试代码片段
  • 在同一工作流中试验不同语言
  • 快速原型设计而无需项目脚手架的开销
  • 通过即时反馈学习新语言

大多数现有工具要么是语言特定的,要么需要浏览器,这对于测试后端代码或使用语言特定的包管理器并不理想。我想要一个结合桌面应用程序功能和在线编程环境灵活性的工具。

fastTinker介绍

fastTinker是一个基于Electron的桌面应用程序,为多种编程语言提供统一的编码环境。目前支持JavaScript/TypeScript和PHP,其架构设计便于未来轻松添加更多语言。

核心功能

🚀 多语言支持

通过简单的下拉选择器在JavaScript/TypeScript和PHP之间切换。每种语言都有:

  • 语法高亮
  • 包管理器(JS/TS使用NPM,PHP使用Composer)
  • 运行时环境
  • 默认代码片段

📦 语言特定包管理

无需在终端或工具间切换。直接从应用安装包:

JavaScript/TypeScript:

1
2
3
4
// 通过设置 > NPM包安装
const axios = require('axios');
const data = await axios.get('https://api.example.com/data');
console.log(data);

PHP:

1
2
3
4
<?php
// 通过设置 > Composer包安装
require_once 'vendor/autoload.php';
// 使用你安装的包

🎨 Monaco编辑器集成

由运行VS Code的相同编辑器提供支持,你获得:

  • 完整的IntelliSense和自动补全
  • 语法高亮
  • 错误检测
  • 代码格式化
  • 多标签页支持

✨ 魔法注释

在编码时内联检查变量值:

1
2
const data = { name: "fastTinker", version: "1.0.0" };
const count = 42; // $data, $count

当你运行代码时,值会内联显示在输出中,使调试和探索更加容易。

⚡ 自动运行模式

启用自动运行可在输入时执行代码(带防抖)。非常适合:

  • 学习和实验
  • 实时反馈
  • 原型设计

💾 代码片段管理

按语言保存和组织代码片段。每个片段自动标记正确的文件扩展名并按语言组织。

架构与技术实现

fastTinker使用Electron构建,采用模块化架构,使添加新语言变得简单直接。

项目结构

1
2
3
4
5
6
7
8
9
fastTinker/
├── src/
   ├── main.js          # Electron主进程,支持多语言执行
   └── preload.js       # 安全IPC的预加载脚本
├── scripts/
   └── renderer.js      # 渲染器进程(带语言切换的UI逻辑)
├── styles/
   └── main.css         # 应用程序样式
└── index.html           # 带语言选择器的主HTML文件

语言路由

fastTinker的核心是其语言感知执行系统。IPC处理程序根据所选语言路由执行:

1
2
3
4
5
6
7
ipcMain.handle('execute-code', async (event, code, userDataPath, magicComments = [], language) => {
  if (language === 'php') {
    return executePHPCode(code, userDataPath, magicComments);
  } else { // 默认为javascript/typescript
    return executeJSCode(code, userDataPath, magicComments);
  }
});

添加新语言

该架构设计为可扩展。要添加新语言,你需要:

  1. 在src/main.js中更新LANGUAGES配置:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
const LANGUAGES = {
  javascript: {
    id: 'javascript',
    name: 'JavaScript/TypeScript',
    defaultExtension: '.js',
    monacoLanguage: 'javascript',
    packageManager: 'npm',
    extensions: ['.js', '.ts']
  },
  php: {
    id: 'php',
    name: 'PHP',
    defaultExtension: '.php',
    monacoLanguage: 'php',
    packageManager: 'composer',
    extensions: ['.php']
  },
  // 在此添加你的语言
  python: {
    id: 'python',
    name: 'Python',
    defaultExtension: '.py',
    monacoLanguage: 'python',
    packageManager: 'pip',
    extensions: ['.py']
  }
};
  1. 在src/main.js中实现执行处理程序
  2. 在index.html中添加语言选择器
  3. 在scripts/renderer.js中更新默认内容

快速开始

安装

1
2
3
4
5
6
7
8
9
# 克隆仓库
git clone https://github.com/boadusamuel/fastTinker.git
cd fastTinker

# 安装依赖
npm install

# 开发模式运行
npm start

构建分发版本

1
2
3
4
5
6
7
# 为你的平台构建
npm run build

# 输出将在dist/目录中
# - Linux: .AppImage和.deb
# - Windows: .exe和便携版
# - macOS: .dmg和.zip

使用示例

JavaScript/TypeScript示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// 欢迎使用fastTinker!
// 这是一个JavaScript/TypeScript编程环境

console.log('Hello, World!');

// 尝试使用魔法注释内联查看值:
const x = 42; // $x
const y = [1, 2, 3]; // $y

// 你可以访问Node.js和浏览器API
console.log('Node.js版本:', process.version);

// 从终端安装NPM包或使用require()尝试加载它们

PHP示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
<?php
// 欢迎使用fastTinker!
// 这是一个PHP编程环境

echo "Hello, World!\n";

// 尝试使用魔法注释内联查看值:
$x = 42; // $x
$y = [1, 2, 3]; // $y

// PHP版本信息
echo "PHP version: " . PHP_VERSION . "\n";

为什么构建这个工具

我从两个独立项目开始:

  • jsTinker - 用于JavaScript/TypeScript
  • phpTinker - 用于PHP

两者各自都很出色,但我发现自己经常在它们之间切换。我没有维护两个独立的代码库,而是决定将它们合并成一个统一的工具,该工具可以通过清晰、可扩展的架构处理多种语言。

路线图

  • 支持Python、Ruby和Go
  • 增强魔法注释功能
  • 代码共享和导出功能
  • 社区扩展的插件系统
  • 主题定制
  • 协作编辑功能

贡献

欢迎贡献!无论你想要:

  • 🐛 报告错误
  • 💡 建议功能
  • 🔧 添加对新语言的支持
  • 📝 改进文档

欢迎在GitHub上提出问题或提交拉取请求。

技术栈

  • Electron - 桌面应用程序框架
  • Monaco Editor - VS Code的编辑器组件
  • Node.js - JavaScript/TypeScript执行的运行时
  • PHP CLI - PHP执行的运行时
  • NPM & Composer - 包管理

结论

fastTinker填补了语言特定编程环境和完整IDE之间的空白。它非常适合快速原型设计、学习新语言以及实验代码,而无需项目设置的开销。

如果你是一个使用多种语言的开发者,或者只是想要一种更好的方式来测试代码片段,请尝试fastTinker。我很乐意听取你的反馈,并看到你用它所构建的内容。

GitHub仓库:boadusamuel/fastTinker

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计