前端Vue3+NodeJS接入文心一言,发布一个VSCode大模型问答插件

三:新建一个Vue3项目,在侧边栏中展示,实现vscode插件<=>vue项目双向消息传递

1.新建vue3+vite+ts项目

2.将web页面展示在vscode侧边栏

(1)插件项目修改,把视图注册到侧边栏,完成消息传递

(2)web项目修改,增加事件监听

四:接入大模型对话能力,实现ChatUI

1.大模型接入准备

2.nodejs调用api

3.前端接口调试

五:注册开发者账号并发布插件

1.推荐教程

2.增加插件商店图标

3.前端资源的缓存策略会影响插件web页面的实时更新

六:实战能力探讨(会持续更新,欢迎探讨)

1.行内提示功能的设计与实现(InlineCompletionItemProvider[9])

2.SSH远程打开文件能力(使用remote-ssh插件提供的命令)

3.Json文件可视化编辑(JsonToHtml)

随着大模型能力越来越卷,在垂直领域的落地也在加快,对于大模型代码生成能力而言,最简洁高效的方式就是集成为常用IDE的插件,在vscode的插件战场中,比较知名的就有GitHubCopilot,智谱清言的codegeex,讯飞星火的iFlyCode。

那么我们就以开发一个简易的大模型对话插件,来探究一下vscode插件开发到发布的流程,研究一下文心一言大模型api的接入

跟着操作大约30-60分钟,你需要

万字长文Action!

如果你的插件只提供原生vscode能力,没有复杂的UI需求,只需要在vscode插件项目上开发即可,类似插件比如VolarGitHistoryEslint如果提供复杂UI交互,定制化界面,就需要在vscode插件内嵌iframe页面(用iframe展示线上web地址与使用vscode提供的一套UI组件皆可,详见第三节),我这里选择访问线上地址,因此需要开发一个vscode插件项目与一个vue3项目(其他框架亦可),类似的复杂插件比如CodeGeeXiFlyCode,会将web页面展示在侧边栏中。

image.png

本文主要讲解如何在vscode插件中通过iframe展示web页面,获得更好的拓展性与可维护性

开始你的第一个插件项目[2]

找到一个比较舒服的文件夹,打开cmd,通过以下命令安装vscode项目脚手架,取的是registry.npmjs.org[3]镜像源,因此可能会有科学问题

npminstall-gyogenerator-code

安装完成后,直接用命令创建新的插件项目

yocode

进入配置页面,默认就选择NewExtension(TypeScript),后面的按照图中来就可然后会自动创建好项目,并执行npmi,然后用vscode打开项目

目录结构就很清晰了,我们主要涉及修改extension.ts以及package.json文件上图中,extension.ts中activate()方法就是插件的入口函数,每次插件启动都会执行此函数,当前代码是注册了一个helloworld命令,当你在vscode中通过ctrl+shift+p调出输入框并输入helloworld,就会执行此注册命令的回调,弹出一个message框,下面我们来试一下

当前vscode版本不能低于package.json中的最低版本要求!

这样写表示最低支持到1.83.0版本!改一下重新reload一下宿主插件,再试试命令就可以弹出啦!到此我们的插件侧项目就搭建好了,下面我们简单建一个vue项目,嵌入到侧边栏中

找一个舒服的文件夹,打开cmd

npminitvite

第一步当然是先建一个iframe把我们的web项目的地址填进去呗,开始。

vscode提供了两种创建iframe的方法,WebviewViewProvider和createWebviewPanel,选其一即可,这里我们介绍一下WebviewViewProvider如何使用

首先在extension.ts同级目录下新建chatWebview.ts

WebviewViewProvider是一个接口,因此建一个自己的类实现它的方法即可下面我们创建一个实现WebviewViewProvider接口的类:ChatWebviewchatWebview.ts文件:(可直接运行)具体代码作用看注释

import{window,Position,WebviewView,WebviewViewProvider}from"vscode";

exportclassChatWebviewimplementsWebviewViewProvider{

//写一个public变量,方便对象引用创建后的webview实例,但是可能存在还未完全解析完成时,访问值为null

//看了vscodeapi发现,resolveWebView返回一个Thenable,可以在解析完成后拿到webview实例

//但是这个函数是在webview容器第一次显示时自动执行,不需要手动调用,不知道怎么拿到Thenable

publicwebview:WebviewView|null=null;

resolveWebviewView(webviewView:WebviewView):void|Thenable{

this.webview=webviewView;

webviewView.webview.options={

enableScripts:true,

};

//监听web端传来的消息

webviewView.webview.onDidReceiveMessage((message)=>{

switch(message.command){

case"WebSendMesToVscode":

//实现一个简单的功能,将web端传递过来的消息插入到当前活动编辑器中

leteditor=window.activeTextEditor;

editor.edit((edit)=>{

letposition=editor.selection

editor.selection.start

:newPosition(0,0);

edit.insert(position,message.data);

});

return;

}

},undefined);

//webview展示的内容本身就是嵌套在一个iframe中,因此在此html中再嵌套一个iframe时,需要传递两次postMessage

THE END
1.JS实现侧边栏显示隐藏网页中侧边栏是一个重要的排版位置,尤其是侧边导航栏用的最多。在一些窄屏的侧边导航栏中,控制侧边导航栏的显示与隐藏可以让网页显示更多内容,也可以美化网页。侧边栏隐藏和显示有多种实现方法,这里演示一种简单的方法。 demo案例 下面代码实现了一个侧边栏的显示与隐藏。 https://www.jianshu.com/p/3478aad608ef
2.JavaScriptjs实现侧边栏案例js侧边栏【JavaScript】js实现侧边栏案例 当页面滚动超过250px时,导航栏中的红色元素会显示出来,用户点击这个元素时,页面会平滑滚动到顶部。 代码的逻辑: 当页面滚动时,通过window.addEventListener("scroll", function () {})监听滚动事件。 在滚动事件中,检查页面的滚动距离scrollTop是否大于250px。 如果滚动距离大于https://blog.csdn.net/weixin_58562766/article/details/143806300
3.原生JS实现分享侧边栏腾讯云开发者社区分享一个用原生JS实现的分享侧边栏,实现效果如下: 以下是代码实现,方便大家复制粘贴。 代码语言:javascript 复制 <!DOCTYPEhtml>分享到效果#share{position:fixed;width:100px;height:200px;background-color:lightblue;left:-100px;top:100px;}#share span{width:20px;height:60px;line-height:20px;text-align:https://cloud.tencent.com/developer/article/1753587
4.js和css写的好看的侧边栏51CTO博客已为您找到关于js和css写的好看的侧边栏的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及js和css写的好看的侧边栏问答内容。更多js和css写的好看的侧边栏相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/jshecssxiedehaokandecebianlan.html
5.JS实现侧边栏分享不会r闪怪腾讯JS实现侧边栏分享 <!DOCTYPE html>侧边栏分享*{margin:0px;padding:0px;}#div1{width:120px;height:200px;background:red;position:absolute;left:-120px;}#span1{width:20px;height:60px;background:blue;position:absolute;top:70px;right:-20px;line-height:20px;}window.onload=function(){varoDiv=dochttps://www.cnblogs.com/xuedong/p/5028579.html
6.城市列表侧边栏首字母js城市列表侧边栏首字母js-pinyin插件使用及实例 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动 需求: 平时做项目,会遇到一些关于地址的选择之列的,大量的地址列表信息(如高铁站、机场站、地理位置),需要右侧有个索引栏能起到筛选和分类的作用。在移动端我们一般采用vant-ui中的IndexBar, IndexAnchor和js-https://article.juejin.cn/post/7022638585840926750
7.amisClosed 502647092opened this issueJan 11, 2020· 7 comments Closed amis-editor的侧边栏在jssdk中有组件可以用嘛#431 502647092opened this issueJan 11, 2020· 7 comments Comments Contributor 502647092 Jan 11, 2020 ? edited 就是这个侧边栏部分 有没有直接可以用的组件 https://github.com/baidu/amis/issues/431
8.6种css3和js显示/隐藏侧边栏效果这是一款使用css3和js制作的侧边栏显示和隐藏效果的网页布局。这个侧边栏显示和隐藏效果的侧边栏可以在页面的上、下、左、右四个方向隐藏显示。 CSS3库2019-12-13 上传大小:13KB 所需:49积分/C币 手机端点击滑动隐藏侧边栏菜单.zip 手机端点击滑动隐藏侧边栏菜单基于CSS3制作,4种侧边栏菜单实例。 https://www.iteye.com/resource/weixin_38743737-12030626
9.JS+CSS实现侧边栏跟随浏览器滚动效果wordpress爱找主题 CSS(styles.css): .container { display: flex; } .sidebar { width: 250px; / 侧边栏宽度 / position: fixed; top: 0; left: 0; height: 100%; backgroundcolor: #f0f0f0; / 侧边栏背景色 / } .content { flexgrow: 1; paddingleft: 270px; / 侧边栏宽度加上一些额外空间 / } JavaScriphttps://www.2zzt.com/jcandcj/13357.html
10.jQuery侧边栏个人菜单收缩代码网页特效jQuery侧边栏个人菜单收缩代码 jQuery抽屉式侧边导航菜单展开收缩,点击图标按钮侧边个人菜单收缩显示效果代码。 查看演示 下载地址一 提取码:1pca 下载地址二 提取码:3e85 推荐标签 收缩菜单侧边导航侧边菜单 最新发布 导航菜单源码,纯css动画效果代码案例下载https://js.adminbuy.cn/148.html
11.JavaScript实现动画效果(无私分享)17侧边栏横幅特效艾米手工作品 收藏 下载 分享 手机看 选集(79) 自动播放 [1] 01 JavaScript动画介绍 717播放 03:58 [2] 02 匀速运动 1049播放 09:54 [3] 03 简单的侧边栏分享效果 1455播放 05:52 [4] 04 侧边栏动画效果 645播放 07:28 [5] 05 缓动运动(上) https://open.163.com/newview/movie/free?pid=GHLQPLOOU&mid=RIAMHGIL2
12.折叠侧边栏网页特效前端折叠侧边栏代码下载Bootstrap5响应式Sidebar导航栏,多级手风琴下拉菜单插件metisMenu.js,Bootstrap3垂直扁平风格手风琴插件。折叠侧边栏网页特效,js特效折叠侧边栏源码,实用的前端网页js插件,jquery特效,jquery插件下载折叠侧边栏网页特效,网页小部件js代码就上bootstrap模板库https://www.bootstrapmb.com/tag/zhediecebianlan
13.使用materialui制作侧边栏我正在使用 Drawer 制作侧边栏,问题是切换侧边栏时,它会隐藏右侧的内容。我希望当我的侧边栏被切换时,它发生并将内容推到右侧,侧边栏和内容都有自己的滚动条。这是我当前的代码: 侧边栏.js: import React from 'react'; import lightBaseTheme from 'material-ui/styles/baseThemes/lightBaseTheme'; import Muihttps://segmentfault.com/q/1010000042466235/a-1020000042466237
14.Ionic5Vue3中实现侧边栏,Ionic5Vue3中的侧边栏组件ionIonic Vue中允许我们用js控制侧边栏,具体步骤如下。 1、给ion-menu定义menu-id属性 <ion-menuside="start"menu-id="first"content-id="main"></ion-menu> 2、控制菜单的页面(组件)中引入下面代码: import{menuController}from'@ionic/vue'; 注意:menuController是一个控制器,不是组件 http://bbs.itying.com/topic/5ff7c1b2bb952e1090195fb6
15.兼容移动手机的侧边栏多级导航菜单UI设计素材8网兼容移动手机的侧边栏多级导航菜单UI设计1017 0 0 相关素材 ? 两张照片滑动前后对比的JS插件 ? 创意JS小菜单实现网页快捷导航 ? 产品360度全景展示放映的JavaScript插件 ? 兼容PC和移动端的日历插件 ? 时尚的JavaScript右键菜单效果 ? 创新工具栏菜单切换的SVG动画 ? 课程分类导航带子菜单的特效 https://www.sucai8.cn/12456.html