同事3天没解决的技术问题,Trae AI编程工具半小时就解决了

947 阅读5分钟

我正在参加Trae「超级体验官」创意实践征文,本文所使用的 Trae 免费下载链接:www.trae.ai/

同事3天没解决的问题,Trae AI编程工具半小时就解决了。

我司多数系统都是前后端分离的。而我个人也很多年不写前端了,之前接触前端还是 jQuery、JSP、ext 时代。现在我看同事们用的前端多数都是 VUE、React 等框架,我几乎是一窍不通。

刚好有一个系统,需要设计一个新页面,提交新的数据给第三方。而第三方需要一个特殊的文本编辑器,前端组的同事们,找了很多框架,屡试不爽,将问题上报到我这里了。

我迅速了解了一些需求,和产品的设计图。

就这???要什么鸡腿,看起来不难,用 textarea 都能实现,不需要其它框架。

于是乎,我使用了字节跳动的 AI 编程工具:Trae,半小时就解决她们的技术难题了。本文记录解决过程。

Trae

Trae 是字节跳动推出的一款 AI 编程工具,对标 Cursor 和 Copilot。

目前首发于海外用户,当然国内也可以使用,需要一点小魔法,目前完全免费。

下载地址,安装教程,以及魔法处理参考这篇文章:。

AI解决难题

这款工具使用起来,超级简单,不需要特殊的提示词即可实现华丽的 AI 编程。

我直接在 Chat 对话框中输入一下内容:

参考图片中的 textarea 案例。请使用 html + JavaScript 语言帮我实现类似效果。并将代码写入到 abc.html 文件中。

我把产品的案例截图和对话一起输送给 Trae。最终它输出了一下代码。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <title>Textarea with Emojis</title>
    <style>
        .container {
            margin: 20px;
        }
        .emoji-btn {
            font-size: 20px;
            background: none;
            border: none;
            cursor: pointer;
            padding: 5px;
        }
        .toolbar {
            margin-bottom: 10px;
        }
        textarea {
            width: 300px;
            height: 150px;
            padding: 10px;
            font-size: 14px;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="toolbar">
            <button class="emoji-btn" onclick="insertEmoji('😊')">😊</button>
            <button class="emoji-btn" onclick="insertEmoji('👍')">👍</button>
            <button class="emoji-btn" onclick="insertEmoji('😄')">😄</button>
            <button class="emoji-btn" onclick="insertEmoji('😃')">😃</button>
            <button class="emoji-btn" onclick="insertEmoji('😉')">😉</button>
        </div>
        <textarea id="myTextarea" placeholder="请输入内容..."></textarea>
    </div>

    <script>
        function insertEmoji(emoji) {
            const textarea = document.getElementById('myTextarea');
            const start = textarea.selectionStart;
            const end = textarea.selectionEnd;
            const text = textarea.value;
            
            // 在光标位置插入表情
            textarea.value = text.substring(0, start) + emoji + text.substring(end);
            
            // 将光标移动到插入的表情后面
            textarea.selectionStart = textarea.selectionEnd = start + emoji.length;
            
            // 让 textarea 重新获得焦点
            textarea.focus();
        }
    </script>
</body>
</html>

另外,它还给出了如下解释:


1. 创建了一个带有工具栏的文本输入区域
2. 工具栏包含了5个表情按钮
3. 点击表情按钮可以在光标位置插入对应的表情
4. 添加了基本的样式,使界面看起来更美观
5. 支持在文本中任意位置插入表情
你可以直接将这段代码保存为 abc.html 文件,然后用浏览器打开即可使用。如果你想添加更多表情,只需在工具栏中添加更多的按钮即可。

运行后的效果令我十分惊讶。

虽然,最终效果没有完全实现,但它的实现程度已经非常高了。

于是,我继续提问,让它辅助我编程。

我在代码中加入了一个新的按钮 B。现需要实现,当我点击 B 按钮时,若选择了内容,则在选中的内容首位添加*。例如:针对内容"你好,我是ai,我会abc",选中“是a”这个字符串后,效果变为:“你好,我是ai,我会abc”。请帮我完成此效果。

在实现这个代码新增功能的过程中,还出现了一些小插曲。公司网线被同事踢掉了,导致一直上不了网,Trae 一直提示网络异常,请稍后重试。我以为是使用的人多,直接给官方反馈,谁知微信都发不出去消息。问了一下办公室的其他同事,才知道网线给它们踢掉了。

网络好了之后,我直接进行重试。不到 1 分钟的时间,它给我输出了以下代码。

并给我解释了代码。

这段代码的功能说明:

1. insertB 函数接收两个参数:prefix(前缀)和 suffix(后缀),在这里都是 *
2. 获取文本区域中选中文本的起始和结束位置
3. 检查是否有选中的文本(start !== end)
4. 如果有选中的文本,则在选中文本的前后分别添加 *
5. 更新文本区域的内容
6. 保持选中状态,并调整光标位置
7. 最后让文本区域重新获得焦点
现在你可以在文本区域中选择任意文本,点击 B 按钮就可以在选中文本的前后添加 * 了。

我直接点击上图右上角的“应用”按钮,源代码文件中的内容就直接更新了,浏览器刷新后效果令我非常满意。

接着,我继续提问。

我在 abc.html 文件中继续添加了一些代码。现在请帮我实现预览功能。要求把两个*之间的内容加粗显示;两个“-”之间的内容斜体显示;两个~之间的内容显示删除线;“```”之间的内容显示为代码样式。当我点击预览按钮后,把 myTextarea 中的内容预览显示到 id 为 showPreview 的 div 中。

AI 编程工具,继续输出了代码,并给出了代码解释。

<head>
    <meta charset="UTF-8">
    <title>Textarea with Emojis</title>
    <style>
        // ... existing code ...

        #showPreview {
            margin-top: 20px;
            padding: 15px;
            border: 1px solid #ddd;
            border-radius: 4px;
            min-height: 100px;
        }

        .code-block {
            background-color: #f5f5f5;
            padding: 10px;
            border-radius: 4px;
            font-family: monospace;
            white-space: pre-wrap;
        }
    </style>
</head>

// ... existing code ...

<script>
    // ... existing code ...

    function preview() {
        const textarea = document.getElementById('myTextarea');
        const previewDiv = document.getElementById('showPreview');
        let content = textarea.value;

        // 处理加粗文本
        content = content.replace(/\*(.*?)\*/g, '<strong>$1</strong>');

        // 处理斜体文本
        content = content.replace(/_(.*?)_/g, '<i>$1</i>');

        // 处理删除线文本
        content = content.replace(/~(.*?)~/g, '<del>$1</del>');

        // 处理代码块
        content = content.replace(/```([\s\S]*?)```/g, '<div class="code-block">$1</div>');

        // 保留换行符
        content = content.replace(/\n/g, '<br>');

        // 显示处理后的内容
        previewDiv.innerHTML = content;
    }
</script>

我一键应用后,继续测试效果。

接着,我又提了优化,样式等细节问题。

上面的代码中,我发现了一个小问题需要改进。执行 insertB 方法时,如果发现首尾已有对应插入的符号,则不执行prefix和suffix符号添加。请帮我进行优化。

最终都被它完美的实现了。

最后我把文件发给前端同事,她连连感谢,请我一杯咖啡☕️。

以上,请大家赶紧下载,上手试试吧。祝大家玩的开心。