「豆包Marscode体验官」,MarsCode开发大型项目无压力

446 阅读5分钟

我正在参加「豆包MarsCode初体验」征文活动

前沿

最近用Marscode开发我的无代码开发平台brick开源项目,使用下来整体还是蛮不错的。我用家里看剧的电脑,体验了一番,效果不错,之前只要启动项目的时候,风扇呼呼的,电脑都烫手,用了下Marscode IDE,很爽。

brick项目

brick 是一个无代码开发平台,采用 React+Typescript+Lowcode-engine 开发。

image.png

项目相对来说比较大,但用Marscode运行起来,没什么压力,还比较流畅。

MrasCode IDE

先来介绍下MarsCode IDE,

豆包旗下的 AI 原生 IDE,支持智能补全、智能预测、智能问答等能力。同时提供云端开发环境,一键开箱即用

然后我们从创建项目开始,一一介绍一下。

项目创建

MarsCode有两种创建项目方式,一种是模板创建, 一种是导入git项目仓库

  • 模版创建

    提供了多种语言模板,可以方便的快速创建项目。

    image.png

  • 导入git项目仓库

    这里如果授权你的github访问,可以列出你的所有项目,也可以提供一个github地址,来访问此项目。

    image.png

启动项目

进入项目后,快捷键的命令跟vscode一致

  1. pnpm i
  2. pnpm run watch:single  开启监听
  3. pnpm run dev:ui:local 启动低代码平台
  4. pnpm run dev:lc 启动物料组件

点击控制台链接,

image.png

浏览器会打开一个带有二级域名的外网地址。也可以通过网络服务标签看生成的地址

image.png

应用就可以正常访问了

image.png

IDE设置

我们在使用IDE得时候,每个人会有会有一些自己的设置,例如快捷键,代码片段等。

快捷键设置

这里要注意一下,Marscode不能在顶部菜单找到设置项目,只能通过快捷键 command+shift+p,调出设置项,选择你需要设置的。

image.png

代码片段设置

由于brick项目数据状态管理有一个统一的模版,我用代码片段管理起来了,方便我们快速使用模版。

配置用户代码片段 image.png

新建或者修改已经存在的,这里直接把你本地vscode的代码片段给粘贴过来就行,不需要重新写。

image.png

这里如果能直接同步本地vscode的配置,就更好了。

IDE AI Coding

使用了AI能力,如果是生成一些工具方法,还是比较不错的,生成之后可以直接插入到文件当中。

image.png

还有一个较复杂的场景,回答的就有点差强人意了,同样的提示词chat gpt效果比较好,是我想要的答案。

提示此场景如下

  1. 先给你了AI一段代码
export const convertToLevelTree = (data: Array<IConnectionData>) => {
  const graph: { [key: string]: string[] } = {};
  const inDegree: { [key: string]: number } = {};

  for (const item of data) {
    const { sourceId, targetId } = item;
    // 构建邻接表
    if (!graph[sourceId]) {
      graph[sourceId] = [];
    }
    graph[sourceId].push(targetId);

    // 统计入度
    if (!inDegree[targetId]) {
      inDegree[targetId] = 0;
    }
    inDegree[targetId]++;
  }

  const result: string[][] = [];
  const zeroInDegree: string[] = Object.keys(graph).filter((node) => !inDegree[node]);

  while (zeroInDegree.length) {
    const level: string[] = [];
    const nextZeroInDegree: string[] = [];

    for (const node of zeroInDegree) {
      level.push(node);

      if (graph[node]) {
        for (const neighbor of graph[node]) {
          inDegree[neighbor]--;
          if (inDegree[neighbor] === 0) {
            nextZeroInDegree.push(neighbor);
          }
        }
      }
    }

    result.push(level);
    zeroInDegree.length = 0;
    zeroInDegree.push(...nextZeroInDegree);
  }

  return result;
};

  1. 然后描述我的需求这个是convertToLevelTree方法 const treeLevelData = convertToLevelTree(connections); 这个方法是根据x6 连线生成层级关系。我需要再写一个方法,根据 convertToLevelTree 返回的内容,转成 LiteFlow EL 脚,如果当前层级有多个内容,就是IF 条件语句

  2. 生成的结果

在我没写这个方法之前,生成的内容是有点不沾边,我用chat gpt,生成的内容后,写完代码,今天在重新问了一下,发现思路和我写的是一样的,猜测AI也在学习我写的代码。

image.png

IDE使用过程中的遇到一些问题

在深度使用IDE得过程中,也遇到了一些问题,也不算太严重。

  1. 在使用过程中,使用command+x杀掉当前进程的时候,会失效,重新再启动项目会导致之前端口被占用。我在本地一般会执行pkill -9 node杀掉node的所有进程,结果终端和网络服务标签都不能用了。重新进项目也不行,这里最好在项目页面加一个重启云IDE得功能。

image.png

  1. 在频繁编辑,热更新的时候,CPU快跑满之后,TS Server就异常了,后来等CPU降下来后,也不行,关掉项目之后,重新进入就好了。

image.png

3.IDE中关闭文件快捷键和浏览器冲突,这里官方比较给力,不久就有了PWA应该,可以使用PWA应用,不会有这问题了。

image.png

Marscode优缺点

优点

  • 云编译器,不依赖本地电脑配置,如果项目足够复杂,提升云配置,开发体验非常流畅。
  • 和vscode使用习惯一致,易上手
  • AI能力开箱即用,未来趋势
  • 已支持PWA应用,更接近原生体验

缺点

  • 生成的访问外网地址会变,导致在开发时候项目存储的cookie,localStorage每次都会变
  • 不能直接同步vscode的配置
  • 本地项目不能导入

结束语

Marscode IDE作为一款AI原生的云开发环境,为brick等复杂项目提供了流畅的开发体验。尽管在使用过程中遇到了一些小问题,但整体上,Marscode IDE展现了其强大的潜力和便利性。期待未来Marscode IDE能够不断优化,解决现有问题,并提供更加完善的开发体验。

如果你觉得该文章不错,不妨

1、点赞,让更多的人也能看到这篇内容

2、关注我,让我们成为长期关系

3、关注公众号「前端有话说」,里面已有多篇原创文章,和开发工具,欢迎各位的关注,第一时间阅读我的文章