分享:前端开发使用基于 ChatGPT 的各类 AI Copilot 辅助开发

news2025/3/3 4:21:50

前言

现在谁还没听过 ChatGPT,通没通网我不确定,但一定不是搞开发的
网上各种教注册OpenAI账号的、卖key的,然后就可以去各类基于ChatGPT api的插件、应用使用。但是这类都属于不合规的方式,这里不推荐

虽然因为种种原因,无法直接使用。但现如今,已经有的很多合规方式可以让我们稳定使用了。不要再冒风险买key,非科学上网了

一、免费浏览器插件

都知道有token就可以上 ChatGPT,但不稳定不说,指不定什么时候号就被封了。目前有很多基于它的服务/应用,注册他们的账号即可使用

插件

Chrome插件:Monica — Your ChatGPT Copilot in Chrome
微软插件:Sider – AI Sidebar

可分别在Edge Chrome浏览器上安装使用,免费版每天30个问题。省着点,够用了。深度使用或者不差钱的可以花钱升套餐,价格十刀/月起,百刀/年起

示例

记一次技术问答:菜鸟与一本正经胡说八道的AI

实践表明,AI真的只是AI,聊天时,你的心态不能是让它给你把活干了,应该是给你出谋划策、demo演示,对错仍需自行分辨。经历过语法错误、方法过时、自造语法等等…

小结

基于个人使用经验以及开发习惯,ChatGPT是个很不错的“工具人”,它的水平很大程度上不取决于它自身,而取决于你的水平、你描述问题的清晰与准确程度。虽然它可以非常强大,但不要过分沉迷于它。尝试获取某个问题的解决方案时,查阅权威的技术文档等常规措施也是必不可少的。

二、GitHub Copilot

GitHub Copilot - 维基百科
GitHub Copilot
GitHub Copilot VSCode插件 - Your AI pair programmer

相对于什么都可以问的ChatGPT,GitHub Copilot 的定位就是“结对编程助手”,具体介绍、使用方法参照官方介绍。它可以在 JetBrains IDEs (Beta),Neovim,Visual Studio,Visual Studio Code中安装拓展使用。

使用方式非常丝滑

可免费使用60天,订阅价十刀/月起,百刀/年起

示例

GitHub Copilot是个人用的最多的,它的使用方式使它能最大程度的参与日常开发中

1. js方法

在这里插入图片描述

测试代码

// 数字千分位处理
export function formatNumber(num) {
  // 如果不是数字,直接返回
  if (isNaN(num)) return num;
  return num.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
}

// 防抖函数
export function debounce(fn, delay) {
  let timer = null;
  return function () {
    if (timer) clearTimeout(timer);
    timer = setTimeout(() => {
      fn.apply(this, arguments);
    }, delay);
  };
}

// 节流函数
export function throttle(fn, delay) {
  let timer = null;
  return function () {
    if (timer) return;
    timer = setTimeout(() => {
      fn.apply(this, arguments);
      timer = null;
    }, delay);
  };
}

2. vue单文件组件

在这里插入图片描述

测试代码

<script setup>
import { ref, provide } from 'vue'
import UserViewComp from './UserView/index.vue'
import OrderViewComp from './OrderView/index.vue'

// 当前显示的视图 [order|user]
const activeView = ref('')
const orderViewEl = ref()
const userViewEl = ref()

// 切换到user视图
function showUserView(no, record = true) {
  userViewEl.value.showView(no)
  activeView.value = 'user'
  record && addRecord('user', no)
}
// 切换到order视图
function showOrderView(no, record = true) {
  orderViewEl.value.showView(no)
  activeView.value = 'order'
  record && addRecord('order', no)
}
// 提供方法:组件间切换视图
provide('showUserView', showUserView)
provide('showOrderView', showOrderView)


/**
 * 记录
 * 记录切换视图的操作, currentRecordIndex指向当前记录, 可前进后退
 * 当有新记录时, currentRecordIndex+1, 后面的记录将被清空
 * 
 * @prop {string} type 记录类型 [user|order]
 * @prop {string} no 记录编号
 */
const records = ref([])
// 当前记录索引
const currRecordIndex = ref(-1)
const forwardDisabled = computed(() => currRecordIndex.value >= records.value.length - 1)
const backDisabled = computed(() => currRecordIndex.value <= 0)

// 监听records, 当长度超过20时, 删除前面的记录
watch(records, (newVal) => {
  if (newVal.length > 20) {
    records.value.splice(0, newVal.length - 20)
    currRecordIndex.value = 19
  }
})

// 前进
function forward() {
  if (currRecordIndex.value < records.value.length - 1) {
    currRecordIndex.value++
    const record = records.value[currRecordIndex.value]
    if (record.type === 'user') {
      showUserView(record.no, false)
    } else {
      showOrderView(record.no, false)
    }
  }
}
// 后退
function back() {
  if (currRecordIndex.value > 0) {
    currRecordIndex.value--
    const record = records.value[currRecordIndex.value]
    if (record.type === 'user') {
      showUserView(record.no, false)
    } else {
      showOrderView(record.no, false)
    }
  }
}
// 添加记录
function addRecord(type, no) {
  // 如果新记录与当前记录相同, 则不添加
  if (currRecordIndex.value > -1 && records.value[currRecordIndex.value].type === type && records.value[currRecordIndex.value].no === no) {
    return
  }
  // 如果新纪录与前一条记录相同, 则前进一步
  if (currRecordIndex.value > 0 && records.value[currRecordIndex.value - 1].type === type && records.value[currRecordIndex.value - 1].no === no) {
    forward()
    return
  }
  // 如果新纪录与后一条记录相同, 则后退一步
  if (currRecordIndex.value < records.value.length - 1 && records.value[currRecordIndex.value + 1].type === type && records.value[currRecordIndex.value + 1].no === no) {
    back()
    return
  }
  currRecordIndex.value++
  records.value.splice(currRecordIndex.value, records.value.length - currRecordIndex.value, { type, no })
}
</script>
<template>
  <OrderViewComp v-show="activeView === 'order'" ref="orderViewEl" />
  <UserViewComp v-show="activeView === 'user'" ref="userViewEl" />
</template>

3. vue组件

在这里插入图片描述

测试代码

<script setup>
import { ref } from 'vue'

const personList = ref([
  { name: '张三', age: 18, position: '前端' },
  { name: '李四', age: 19, position: '后端' },
  { name: '王五', age: 20, position: '测试' }
])
</script>

<template>
  <div class="person-list">
    <div class="person-intro card" v-for="(person, index) in personList" :key="index">
      <span class="close" @click="personList.splice(index, 1)">x</span>
      {{ person.name }} {{ person.age }} {{ person.position }}
    </div>
  </div>
</template>

<style lang="scss" scoped>
.card {
  padding: 10px;
  margin-bottom: 10px;
  border: 1px solid #ccc;
  border-radius: 5px;
  position: relative;
  .close {
    position: absolute;
    top: 0;
    right: 0;
    cursor: pointer;
  }
}
</style>

小结

再说一遍,使用丝滑~
谁用谁知道

三、Bito - GPT-4 and ChatGPT to write code, explain code, create tests

VSCode插件: Bito AI – Be a 100x dev and save an hour a day!

功能强大!相比第一种浏览器插件,提供了更方便的使用方式(IDE内),提供多种代码功能、快捷菜单。出来不久,目前免费使用


以下是从上面链接中关于它的介绍

What does Bito AI do?

Bito helps developers dramatically accelerate their impact by bringing GPT-4 and ChatGPT to your IDE and CLI. We use OpenAI’s models, and you don’t have to have an OpenAI key. Bito can save you an hour a day!. Bito AI makes it easy to write code, understand syntax, write test cases, explain code, comment code, check security, and even explain high level concepts.

机翻
Bito AI是做什么的?
BITO通过将GPT-4和CHATGPT带入您的IDE和CLI来帮助开发人员极大地加速其影响。我们使用OpenAi的型号,您不必拥有OpenAI钥匙。Bito每天可以节省一个小时!BITO AI使编写代码,了解语法,编写测试用例,解释代码,评论代码,检查安全性甚至解释高级概念变得容易。

What does Bito’s AI Assistant help with? Ask any technical question

  • Generate Code: Examples: “code in java to convert a number from one base to another”, “code to implement a simple REST API in GO”
  • Command Syntax: “how to set git config variables”, “create an encrypted s3 bucket using the AWS cli”
  • Test Cases: “Generate test cases for this code < insert code >"
  • Explain concepts: “explain B+ trees, give an example with code”, “explain banker’s algorithm”

And One click Shortcuts so you don’t have to type anything for:

  • Explain code: explain code you are unfamiliar with
  • Comment Method: comments methods and within methods
  • Improve Performance: easily find performance issues
  • Check Security: make sure you don’t have security vulnerabilities
  • This tool is far from perfect. Compile and verify before using! 😊

机翻
Bito的AI助手有什么帮助?问任何技术问题

  • 生成代码:示例:“ Java中的代码将一个数字从一个基础转换为另一个基础”,“在GO中实现简单的REST API的代码”
  • 命令语法:“如何设置git config变量”,“使用AWS CLI创建加密的S3存储桶”
  • 测试用例:“生成此代码的测试用例<插入代码>”
  • 解释概念:“解释b+树,以代码为例”,“解释银行家的算法”


单击快捷方式,因此您不必输入任何内容:

  • 解释代码:解释您不熟悉的代码
  • 评论方法:评论方法和方法中
  • 提高性能:轻松找到绩效问题
  • 检查安全性:确保您没有安全漏洞
  • 该工具远非完美。使用之前进行编译和验证!

Bito provides many additional capabilities no other tool provides:

  • Automatically compare any new code generated by Bito in diff view against your existing code. This allows you to integrate only the lines or sections you want easily.
  • Ask follow-up questions to refine the output, and the AI assistant considers the chat history for context. This helps you to get more accurate and relevant results.
  • Get lightning-fast results within seconds, allowing you to access the information you need with minimal delay.
  • Save your frequently used prompts as custom shortcuts and execute them with ease.
  • Use Keyboard shortcuts to execute the commands in Bito. Read more about keyboard shortcuts on our “What’s new” page.
  • Share the results with your colleagues on Slack, email, or Twitter, making collaboration easier.

机翻
BITO提供了许多其他工具提供的其他功能:

  • 自动将BITO在DIFF视图中生成的任何新代码与现有代码进行比较。这使您只能集成您想要的行或部分。
  • 提出后续问题以完善输出,而AI助手认为聊天历史记录上下文。这可以帮助您获得更准确和相关的结果。
  • 在几秒钟内获取闪电般的结果,使您可以以最小的延迟访问所需的信息。
  • 将您经常使用的提示作为自定义快捷方式保存,并轻松执行。
  • 使用键盘快捷键在BITO中执行命令。在我们的“新事物”页面上阅读有关键盘快捷键的更多信息。
  • 通过Slack,Email或Twitter与您的同事分享结果,使协作更加容易。

四、Claude

Slack中选择添加应用即可,然后直接和它对话,免费且无限制

Slack可以网页浏览,可以下载APP到PC及手机,使用很方便

Slack可以使用Goole账号注册,苹果手机注册登陆甚至无需科学上网

日常使用无需科学上网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/412317.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nuxt.js - 【最新】简单快捷的 element ui 组件库的主题色更改,批量统一覆盖替换解决方法,无需npm装包。(适用于新手小白的方法,很简单)

效果图 最新解决方案,简单便捷且不用npm安装任何第三方包就能搞定。 原来的主题色是蓝色 ,可以通过本篇博客提供的方法,统一变成其他主题颜色,比如下面的紫色: 下面就是真实的运行效果,保证可行~ 这样就不用每个组件单独去写样式覆盖颜色了! 定制主

【C++】STL理解【容器】

【C】STL理解【容器】 1. STL概念引入 长久以来&#xff0c;软件界一直希望建立一种可重复利用的东西&#xff0c;以及一种得以制造出”可重复运用的东西”的方法&#xff0c;从函数(functions)&#xff0c;类别(classes),函数库(function libraries),类别库(class libraries…

Python中的type与isinstance的区别

Python中的type()函数和isinstance()函数是两个常用的类型判断函数&#xff0c;它们可以用来判断变量的类型&#xff0c;接下来让我们一起来看一下它们的用法。type()函数type()函数用于获取一个变量的类型&#xff0c;它的语法是&#xff1a;type(变量)。调之后会返回变变量的…

关于修改压缩包内的文件(Excel...)内容的解决方法

关于修改压缩包内的文件&#xff08;Excel…&#xff09;内容的解决方法 前提&#xff1a; &#x1f4a9; 如果能在压缩前就修改完成就不需要修改压缩包内的文件 &#x1f4a9; 如果能在压缩前就修改完成就不需要修改压缩包内的文件 &#x1f4a9; 如果能在压缩前就修改完成…

通讯框架与Netty

一、网络通讯基础 1、OSI七层模型 2、一个域名底层是如何解析 浏览器访问域名&#xff0c;根据域名先从本地host文件C:\Windows\System32\drivers\etc\hosts文件 查找匹配对应的ip与域名&#xff0c;如果本地Host文件 没有的情况下&#xff0c;则联网去电信运营商查找。 3、什…

拉曼光谱的airPLS处理算法原理及MATLAB示例

一、拉曼光谱及airPLS算法 拉曼光谱被称作物质的“指纹谱”&#xff0c;能够表征分子的特征官能团&#xff0c;具有极高的特异性&#xff0c;在检测传感领域有极大的应用前景。但拉曼散射强度低&#xff0c;在实际的检测应用过程中还会受到噪声的影响。 为减少拉曼光谱中的…

程序员的“灵魂笔记本“:五款高效笔记软件推荐

大家好&#xff0c;我是 jonssonyan。作为一名程序员&#xff0c;我们经常需要记录和整理大量的代码、知识和项目信息&#xff0c;以便在日后能够高效地进行查阅和复用。而好用的笔记软件则成为了我们的"灵魂笔记本"&#xff0c;帮助我们提高工作效率。在这篇文章中&…

十一、存储技术基础

&#xff08;一&#xff09;独立磁盘冗余阵列RAID RAID级别 特点 需要磁盘 磁盘利用率 容错性 冗余性 热备盘选项 典型应用 RAID0 条带 2 全部 无 无 无 无故障的迅速读写&#xff0c;要求安全性不高&#xff0c;如图形工作站等 RAID1 镜像 2 50% 有 复制…

代码随想录_二叉树_leetcode112、113

leetcode112 路径总和 112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返…

【血泪建议】软件测试岗位现状,可惜之前没人告诉我,肠子都晦青了....

谈到现状&#xff0c;国内的软件测试行情目前呈现了两极分化的极端情况。 一个是早期的手工测试人员吐槽工作不好做&#xff0c;即使有工作也是外包&#xff0c;而且薪资太低&#xff1b;一方面是很多互联网企业感叹自动化测试人才难找&#xff0c;有技术的自动化测试工程师&a…

Linux中执行命令

目录 一、命令格式 二、查看命令帮助 三、date命令 四、timedatectl命令 五、查看目录下的文件&#xff1a;ls&#xff08;list&#xff09; 一、命令格式 命令格式&#xff1a;主命令 选项 参数&#xff08;操作对象&#xff09; 命令分为两类&#xff1a; 内置命…

要刹车?生成式AI迎新规、行业连发ChatGPT“警报”、多国考虑严监管

4月13日消息&#xff0c;据中国移动通信联合会元宇宙产业工作委员会网站&#xff0c;中国移动通信联合会元宇宙产业工作委员会、中国通信工业协会区块链专业委员会等&#xff0c;共同发布“关于元宇宙生成式人工智能&#xff08;类 ChatGPT&#xff09;应用的行业提示”。提示内…

wmv格式的视频怎么转成mp4,4种方法简单易学

你知道wmv格式的视频怎么转成mp4吗&#xff1f;wmv和mp4都是视频文件格式&#xff0c;wmv格式是由微软开发的一种数字容器格式&#xff0c;它主要适用于电脑客户端。但由于其兼容性不佳&#xff0c;可能导致无法播放或出现错误。相比之下&#xff0c;mp4格式具有更广泛的兼容性…

Maven项目的JDK版本不一致引发的问题

1.运行提示java: 错误: 不支持发行版本 5&#xff08;改成JDK8&#xff09; 2.运行提示java&#xff1a;-source 8 中不支持 instanceof 中的模式匹配(改成JDK17) 解决方案&#xff08;以JDK8为例&#xff09; 1.普通Maven项目 通过指定Maven插件的JDK版本解决 <build>…

使用CentOS8实现Nginx负载均衡反向代理与安装MySQL数据库(涉及CentOS8、Nginx、MySQL、Flask)

文章目录1. 安装并配置CentOS8虚拟机1.1 安装1.2 设置静态IP(看需求不一定要设置)1.3 开启SSH\开启关闭端口\关闭开启防火墙1.4 虚拟机与本机互相复制粘贴、传输文件2. 如何在CentOS 8安装Python3. 解决错误&#xff1a;为 repo appstream 下载元数据失败4. 安装Nginx4.1 [关于…

Shader Graph8-输入Vector

一、三个向量 Vector叫做矢量或者向量&#xff0c;向量更偏向于数学&#xff0c;矢量更偏向于图形。下面三种Vector我们用的最多&#xff0c;红色叫Camera Vector相机向量、蓝色叫Surface Normal表面法线、黄色叫Light Vector光向量。 每个面都有法线&#xff0c;法线向量是这…

七大排序算法

文章目录1. 冒泡排序2. 插入排序3. 希尔排序4. 选择排序5. 堆排序6. 快速排序7. 归并排序1. 冒泡排序 从 0 号下标开始遍历&#xff0c;相邻两个数相互比较&#xff0c;如果左边的数大于右边的数&#xff0c;执行交换操作&#xff0c;最终每一趟冒泡都会将一个最大的数移到最右…

matplotlib使用

文章目录基本语法导入库plt 和ax.区别ax. 用法子图创建-展示不同的分区区域设置刻度范围&#xff1a;显示刻度设置刻度标签tick_params()函数添加轴坐标标签&#xff0c;表头&#xff0c;图例plt.用法普通折线图plt.plot(x,y,format_string,**kwargs)函数说明&#xff1a;中文显…

chapter-1数据管理技术的发展

以下课程来源于MOOC学习—原课程请见&#xff1a;数据库原理与应用 数据管理技术的发展 发展三阶段 人工管理【1950前】 采用批处理&#xff1b;主要用于科学计算&#xff1b;外部设备只有磁带&#xff0c;卡片&#xff0c;纸带等 特点&#xff1a;1.数据面向应用2.数据不保…

python注释方式

计算机语言的注释基本都是一样的作用 一个是 我这段代码可能之后还要用 但现在没用 我先注释在这里 他不会参与运行 但我想用了 直接打开注释 他就正常运行了 还要就是 用 注释 解释你代码的作用 方法呢 单行注释 以警号开头 右侧内容即为注释 print(666) print(130.33) #pr…