online-editor/README.md
2025-05-12 20:49:02 +08:00

5.9 KiB
Raw Blame History

鹅鹅协作编辑器 (Online Editor)

一个基于网页的高效代码编辑器,专为远程协作开发设计,支持多种编程语言,并提供实时编译和部署功能。

编辑器界面

📚 项目概述

鹅鹅协作编辑器是一个轻量级在线代码编辑工具,它允许开发者通过浏览器远程编辑服务器或协作环境中的代码文件,并提供实时编译反馈。该工具特别适合在以下场景使用:

  • 远程团队协作开发
  • 教学环境中的代码演示
  • 无法直接访问文件系统的环境中进行代码编辑
  • 需要快速编辑和部署的场景

项目由前端编辑器界面Vue 3 + Monaco Editor和后端文件服务Fastify两部分组成通过安全的文件访问机制确保代码安全。

核心功能

  • 代码编辑:基于 Monaco EditorVS Code 的编辑引擎)
  • 多语言支持:自动识别并支持多种编程语言的语法高亮和智能提示
  • 安全机制:使用 HMAC 加密验证确保文件访问安全
  • 编译集成:一键编译并查看实时日志输出
  • 文件备份:自动创建文件修改备份,防止意外覆盖
  • 深色/浅色主题:支持不同使用环境和个人偏好
  • 自适应界面:适配桌面和移动设备的界面布局

🔧 技术栈

  • 前端Vue 3 + TypeScript + Vite
  • 编辑器引擎Monaco Editor
  • 后端Node.js + Fastify
  • 运行时Bun (高性能 JavaScript 运行时)
  • 样式SCSS

📦 安装与部署

环境要求

  • Node.js 16+ 或 Bun 1.0+
  • 支持现代浏览器

安装步骤

  1. 克隆仓库
git clone https://github.com/yourusername/online-editor.git
cd online-editor
  1. 安装依赖

使用 npm:

npm install

或使用 Bun:

bun install
  1. 设置环境变量

创建 .env 文件或设置以下环境变量:

SECRET_KEY=your_secret_key  # 用于文件访问加密
ROOT_PATH=/path/to/your/files  # 文件系统根路径
  1. 构建和启动服务
bun start  # 构建前端并启动服务

或开发模式:

bun serve  # 使用监听模式启动服务
  1. 访问编辑器

浏览器访问:http://localhost:3000

🚀 使用方法

基本界面

编辑器界面分为三个主要部分:

  • 顶部工具栏:包含设置、主题切换、格式化、上传和编译按钮
  • 中部编辑区Monaco Editor 代码编辑区
  • 底部信息区:显示编译错误、日志等信息

URL 参数

编辑器支持通过 URL 参数配置:

  • server: 服务器路径,默认为当前域名
  • path: 要编辑的文件路径
  • key: 访问密钥(可通过加密密钥自动生成)

例如:

http://localhost:3000/?path=myproject/src/index.js&key=generated_secret_key

安全访问

为确保文件安全,系统使用基于 HMAC 的验证机制:

  1. 在设置中输入加密密钥
  2. 系统自动为当前文件路径生成 Secret Key
  3. 服务器端验证 Secret Key 是否匹配

也可以使用内置的 Secret Key 高级计算器手动生成密钥。

编辑与保存

  1. 在编辑器中修改代码
  2. 点击"上传"按钮将代码保存到服务器
  3. 系统会自动备份原文件,格式为 文件名.时间戳.bak

编译与部署

点击"编译"按钮触发服务器端编译流程,编译日志会实时显示在底部日志区域。

📝 实际应用案例

本地化文件协作管理

这是一个真实应用场景,利用鹅鹅协作编辑器来简化多语言本地化文本的管理:

背景

  • 项目中包含 lang.ts 文件,存储各种语言的翻译文本
  • 客户/翻译人员需要频繁更新翻译内容,但不需要接触其他代码
  • 希望客户能快速编辑并验证翻译效果,而无需搭建完整开发环境

实施方案

  1. 服务器配置

    # 在产品服务器上启动编辑器服务
    export SECRET_KEY="translation_secret_2025"
    export ROOT_PATH="/var/www/my-project"
    bun start
    
  2. 为客户提供专用链接

    https://editor.example.com/?path=src/locales/lang.ts&key=c7a8b9d0e1f2...
    
  3. 客户操作流程

    a. 客户通过链接访问编辑器

    b. 修改翻译文本,例如:

    // 修改前
    export const translations = {
      zh: {
        welcome: "欢迎使用我们的服务",
      }
    };
    
    // 修改后
    export const translations = {
      zh: {
        welcome: "欢迎使用我们全新升级的服务",
      }
    };
    

    c. 点击"上传"按钮保存修改(系统会自动备份原文件)

    d. 点击"编译"按钮触发项目重新构建

    e. 几分钟后,访问生产网站即可看到更新后的翻译文本

优势

  • 安全性:客户仅能访问特定文件,无需完整代码库访问权限
  • 效率:无需复杂的提交-审核-部署流程,直接修改和验证
  • 便捷性:客户无需安装开发工具,仅需浏览器即可完成工作
  • 可控性:所有更改有备份,且可通过日志监控修改内容
  • 实时反馈:客户可快速验证翻译在实际环境中的效果

这种协作模式特别适合非开发人员参与的工作流程,极大简化了多方协作的沟通成本。

⚙️ 配置选项

通过设置面板可配置以下选项:

  • 语言服务:自动检测或手动指定编程语言
  • 字体大小:调整编辑器字体大小
  • 自动换行:启用/禁用代码自动换行
  • 服务器路径API 服务器地址
  • 文件路径:要编辑的文件路径
  • 加密密钥:用于生成安全访问令牌
  • 深色/浅色主题:切换编辑器视觉主题

🔐 安全考虑

  • 文件操作需要有效的 HMAC 验证
  • 加密密钥应妥善保管,不应在不安全环境中共享
  • 默认不暴露完整文件系统,只能访问配置的根路径下的文件