一个月的时间,我们对开源的在线代码编辑器完成了一次大重构 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
moment082
V2EX    程序员

一个月的时间,我们对开源的在线代码编辑器完成了一次大重构

  •  2
     
  •   moment082 2024-08-01 09:12:12 +08:00 3584 次点击
    这是一个创建于 506 天前的主题,其中的信息可能已经有所发展或是发生改变。

    在这个月月初的时候,我开始重新维护这个在线代码编辑器,和之前的不同的是,这次我是直接切换了一个分支来直接写,目前已经基本完成了第一版,这次所采用的技术栈主要有以下这些:

    1. 前端框架:NextJs

    2. 语言:Typescript

    3. 状态管理:Zustand

    4. css 方案:tailwindcss

    5. 代码编译方案:WebContainer

    考虑到使用这些技术的主要原因有两个方面,首先 NextJs 是 SEO 比较好,文件式的路由,不再像编写 react-router-dom 那些配置了,开箱即用。

    第二个方面,因为本人也有过两段 Remote 的经验,这些技术基本都是首选的方案,所以......也希望能给社区上一些想学习这些技术的同学提供一些 demo 来参考吧!

    image.png

    项目地址

    在线预览地址

    功能介绍

    接下来先来介绍一下我们现在所实现的一些功能把:

    image.png

    添加了流星动画效果,后续会添加更多好看的元素在首页,目前只是一个初版,还没有写完的(虽然是抄的,但是效果还是挺帅的)

    点击 Get Started 之后我们就可以进入到 dashboard 页面了:

    image.png

    在这里你可以选择一些我们已经提供好的模板进行编辑,也可以点击创建项目的按钮选择本地的代码进行开发:

    20240731210932

    点击之后就可以选择本地的文件了,然后选择就可以进入到编辑页面了:

    20240731211049

    进入到这个页面之后,需要等待一会,因为启动 WebContainer 需要一段时间,当这里出现文字的时候我们就可以启动终端了:

    20240731211326

    在这里,你也可以像是在 vscdoe 上面一样可以执行一些 NodeJs 的命令,如下,我们在终端里执行了 pnpm i 来安装依赖包。

    image.png

    你可以像是在 vscdoe 一样编写代码了,它可以拥有 vscode 上一些基本的功能,并且当你代码发生改变的时候它也可以实现热重载。

    剩下的就是一些基本操作了,看你们的操作了:

    20240731211706

    本来是想把 github 的一些操作也做了的,奈何跟 github 交互太慢了,提交一个文件或者从 github 里拉取一个文件都太慢了,就暂时没有去实现了。

    接下来我们要做什么功能

    接下来最重要的两个功能,一个是协同编辑,另外一个是支持多语言编译。协同编辑的话这边后端正在实现 ing ,并且在支持协同编辑的同时还会支持多人视频会议的功能,来支持远程面试,可以实现多人编写同一个文件等等。这个预计会在月中完成。

    这里采用的技术栈是有挺多的:

    1. WebRtc

    2. Socket

    3. NestJs

    这些技术都是目前比较火的,还有的话也会实现 AI 的功能,并且结合端侧大模型实现离线问答的功能。

    然后还有一个特别亮点的项目,我们社区目前有一位大佬正在做 Webassembly ,也就是说,在后面的版本当中,不仅仅是能在浏览器上执行 NodeJs 代码了,还可以在浏览器上面执行 CC++ 等后端代码,并且也会像 WebContainer 那样做一个开源包出来提供社区直接使用,这些是目前已经实现好了的功能,就差和前端这边交互了:

    20240731212228

    目前是不需要和任何后端交互的,是直接就能够在浏览器上执行一些 C++ 的代码的。

    如果是作为应届生的话,拿这个项目作为简历上的项目应该是非常不错的。而且这里采用的技术都是比较新的,作为学习项目应该能学到一点东西的。

    最后

    最后特别感谢所有参与贡献的朋友,真的是提交的代码比我都多:

    20240731212822

    如果你想参与进来开发或者想进群学习,可以添加我微信 yunmz777,后面还会有很多需求,等这个项目完成之后还会有很多新的并且很有趣的开源项目等着你。

    如果该项目对你有帮助或者对这个项目感兴趣,欢迎 Star

    最后再来提一些这两个开源项目,它们都是我们目前正在维护的开源项目:

    还有一个特别的项目,是闭源的,有可能赚到钱,目前是缺一个 java 或者 go 的后端,可能对技术要求高点,如果感兴趣的话也可以联系我

    12 条回复    2024-0-01 11:06:12 +08:00
    kele999
        1
    kele999  
       2024-08-01 09:15:07 +08:00
    图片看不到
    moment082
        2
    moment082  
    OP
       2024-08-01 09:22:59 +08:00
    @kele999 我这边是能看到的,方便截图看看嘛,或者去另外一个帖子上看吧 https://juejin.cn/post/7397622646630514697
    vfs
        3
    vfs  
       2024-08-01 09:26:21 +08:00
    所有图片都显示不出来+1
    nzbin
        4
    nzbin  
       2024-08-01 09:30:50 +08:00   1
    imik
        5
    imik  
       2024-08-01 09:32:05 +08:00
    这些图 url 里带个 private ,打开 403 ,你可以试试无痕模式访问这个帖子。
    moment082
        7
    moment082  
    OP
       2024-08-01 09:39:05 +08:0
    moment082
        8
    moment082  
    OP
       2024-08-01 09:39:24 +08:00
    moment082
        9
    moment082  
    OP
       2024-08-01 09:39:55 +08:00
    moment082
        10
    moment082  
    OP
       2024-08-01 09:40:42 +08:00
    不好意思没发现这个问题,图片丢了的可以在这个链接上查看 https://juejin.cn/post/7397622646630514697
    matrix1010
        11
    matrix1010  
       2024-08-01 09:43:18 +08:00
    不是哥们,你这又开源又大重构的,顺手加点儿单元测试吧. 建议参考一下你自己的 CONTRIBUTING.md 里面 4. Development Guidelines 这一条
    moment082
        12
    moment082  
    OP
       2024-08-01 11:06:12 +08:00
    @matrix1010 后面再加吧,目前还是比较 care 功能实现
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     926 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 18:54 PVG 02:54 LAX 10:54 JFK 13:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86