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

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

相关文章

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼

手把手教你idea中创建一个javaweb(webapp)项目详细图文教程

《手把手教你idea中创建一个javaweb(webapp)项目详细图文教程》:本文主要介绍如何使用IntelliJIDEA创建一个Maven项目,并配置Tomcat服务器进行运行,过程包括创建... 1.启动idea2.创建项目模板点击项目-新建项目-选择maven,显示如下页面输入项目名称,选择