开篇: 为什么要做这个项目?

2024-09-08 05:44
文章标签 项目 开篇

本文主要是介绍开篇: 为什么要做这个项目?,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

背景

最近工作中遇到一个需求需要实现一版在线的Web编辑器,类似 Vue Playground 的效果,但是Vue playground 整体体验下来不是很好,和本地 VSCode 编辑器开发体验差距较大(虽然理解在线编辑器没必要完全照着本地开发体验来)。
经过多方体验调研,发现目前的业界方案主要两种:

  1. 基于Monaco / Codemirror 实现,也是大多数场景使用的方案,但是效果却是参差不齐,很多的能力也有缺失,很难找到一个满足需求并且开放扩展性较好的方案;
  2. 基于VSCode编辑器,或者CodeSandbox 的方案,但是初步开发入手成本较高,编辑器本身内容很丰富,开发体验也最接近本地编辑器(但是大部分在Web端用不上)。扩展能力通过VS Code 插件进行处理也不是很方便开发,定制扩展性不够。

在调研过程中,也发现了一个用于对VSCode 编辑器进行 overlay 的包,能够比较方便在运行起VSCode项目,同时对一些能力进行删减,定制等,但是整体体验下来还是有些问题,一些私有化场景的定制难以实现。这里附上其github链接,有兴趣的可以参考尝试 monaco-vscode-api

预期的效果

这里说一下我希望的一个编辑器效果是什么样的:

  1. 开发体验尽可能的贴近本地VS Code开发,功能上只需要包括核心的部分能力
  2. 能够是一个组件形式的,现在前端开发大部分都是 Vue/React 框架基础上进行的,面向组件的使用方式是最容易上手接入的;
  3. 使用足够简单,能够按需使用,比如只需要编辑器部分,文件系统部分等。
  4. 扩展性足够,能够基于组件进行扩展,提供自定义的能力
  5. 简化配置,Monaco编辑器要使用还是需要有一些配置的,能够尽可能的简化掉

最后

经过调研和体验下来,并没有能够找到一款完全符合我预期的编辑器产品,最终决定下来自己来做这么一个编辑器,一方面解决当前的工作问题,也将这个项目的流程和开发实现中遇到的问题提取出来,帮助有需要的人。

这里也简单介绍写这个项目实现的功能部分:

  • 基于Monaco实现的前端代码编辑器(包括Vue语言的支持)
  • 内存文件系统管理,包括文件创建,目录创建,重命名,文件移动等等
  • 在线依赖安装,并且能够对编辑器提供包类型提示支持
  • 代码搜索,类似VSCode编辑器的文件搜索,内容替换等能力
  • 多编辑器代码分栏编辑
  • Prettier 代码自动格式化

项目采用的技术方案:

  • Monaco-Editor
  • Vue3 + Vite5
  • ant-design-vue4

项目最终会封装成一个Vue3组件包的形式,支持按需使用和扩展,最后附上一张最后的效果图:

在这里插入图片描述

这篇关于开篇: 为什么要做这个项目?的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1147280

相关文章

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

Spring Boot项目如何使用外部application.yml配置文件启动JAR包

《SpringBoot项目如何使用外部application.yml配置文件启动JAR包》文章介绍了SpringBoot项目通过指定外部application.yml配置文件启动JAR包的方法,包括... 目录Spring Boot项目中使用外部application.yml配置文件启动JAR包一、基本原理

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook

springboot项目中集成shiro+jwt完整实例代码

《springboot项目中集成shiro+jwt完整实例代码》本文详细介绍如何在项目中集成Shiro和JWT,实现用户登录校验、token携带及接口权限管理,涉及自定义Realm、ModularRe... 目录简介目的需要的jar集成过程1.配置shiro2.创建自定义Realm2.1 LoginReal

idea Maven Springboot多模块项目打包时90%的问题及解决方案

《ideaMavenSpringboot多模块项目打包时90%的问题及解决方案》:本文主要介绍ideaMavenSpringboot多模块项目打包时90%的问题及解决方案,具有很好的参考价值,... 目录1. 前言2. 问题3. 解决办法4. jar 包冲突总结1. 前言之所以写这篇文章是因为在使用Mav

精选20个好玩又实用的的Python实战项目(有图文代码)

《精选20个好玩又实用的的Python实战项目(有图文代码)》文章介绍了20个实用Python项目,涵盖游戏开发、工具应用、图像处理、机器学习等,使用Tkinter、PIL、OpenCV、Kivy等库... 目录① 猜字游戏② 闹钟③ 骰子模拟器④ 二维码⑤ 语言检测⑥ 加密和解密⑦ URL缩短⑧ 音乐播放