vscode摸鱼插件开发

news2024/11/14 10:58:40

不知道大家在写代码的时候,摸不摸鱼,是不是时不时得打开一下微博,看看今天发生了什么大事,又有谁塌房,而你没有及时赶上。

为此,我决定开发一个vscode插件,来查看微博热搜

插件名称:Fish Tools
vscode扩展可搜索安装

1、热搜

首先实现在侧边栏中展示前20个热搜,没必要太多

1、package.json 增加配置

"views": {
    "fish-activityBar": [
      {
        "id": "fishView",
        "name": "fish weibo"
      }
    ]
  },
 "viewsContainers": {
    "activitybar": [
      {
        "id": "fish-activityBar",
        "title": "Fish Weibo",
        "icon": "resources/dark/weibo.svg"
      }
    ]
  },

如此,侧边栏就会展示微博按钮

按钮有了,内容可以通过树视图展示,vscode.window.createTreeView 可以创建树视图

 const customView = vscode.window.createTreeView("fishView", {
    treeDataProvider: customTreeDataProvider,
 });
class CustomTreeDataProvider implements vscode.TreeDataProvider<CustomItem>

这里官方文档中有树视图的例子

热搜内容,可以在CustomTreeDataProvider类的getChildren方法中,通过调微博的接口获取

const data = await getHotSearch();
const top20Hot = (data?.data?.realtime || []).slice(0, 20);
const treeData = top10Hot.map((item: any) => {
  return { label: item?.note, id: item?.mid };
});

到这里,完成情况如图所示,
在这里插入图片描述

只有热搜当然还是不够的,因为我们想了解具体内容的时候,还是需要打开浏览器,所以这里给每条热搜增加点击功能

2、热搜内容

getTreeItem(element: CustomItem): vscode.TreeItem {
  const treeItem = new vscode.TreeItem(element?.label);
  // 配置点击行为
  treeItem.command = {
    command: "treeView.openContent",
    title: "Open Content",
    arguments: [element],
  };
  return treeItem;
 }

这里增加了command,需要注册该命令,并且点击之后打开一个webview,(简单版的也可以直接打开一个文档,展示内容即可)

vscode.commands.registerCommand(
  "treeView.openContent",
  (treeItem: vscode.TreeItem) => {
    const panel = vscode.window.createWebviewPanel(
      webviewId,
      webviewTitle || "详情",
      vscode.ViewColumn.One,
      {
        enableScripts: true,
      }
    );
    // webview内容
    const scriptPath = vscode.Uri.file(path.join(extensionPath, jsPath));
    const scriptUri = panel.webview.asWebviewUri(scriptPath);
	panel.webview.html = `<!DOCTYPE html>
  <html lang="en">
    <head>
      <meta charset="UTF-8" />
      <meta name="viewport" content="width=device-width, initial-scale=1.0" />
      <title>详情</title>
    </head>
    <body>
      <div id="loading">页面初始化中...</div>
      <div id="root"></div>
      <script src=${scriptUri}></script>
    </body>
  </html>`
  }
)

webview内容,实现方式可以多种,这里scriptUri 直接写路径,是不生效的,详情可以看官方文档。

3、消息传递

这里实现了,热搜,点击事件以及打开了webview窗口,那么数据如何在webview传递,这里因为直接调的微博的接口,所以在webview中,是调不通的,所以调接口查数据的过程在vscode扩展这边实现

这里第一个问题是热搜的详细内容,是需要登录的,所以这里需要一个cookie,cookie的获取,也比较简单,随便找一个接口,就能查询到

第二个问题是详细内容,并不是通过调xhr接口返回的,需要自行去解析dom结构,来获取自己需要的内容。

1、消息的传递,vscode扩展传递到webview,可以通过postMessage

panel.webview.postMessage({
  command,
  text
});

2、webview中可以通过 window.addEventListener监听消息

window.addEventListener("message", (event) => {
  if (message.command === "getMessage") {
    setContent(message.text);
  }
}

3、webview传递到vscode中,通过postMessage方法

const vscode = acquireVsCodeApi();
vscode.postMessage({
  command: "pageUp",
  text: { page: page - 1 },
});

4、vscode中通过onDidReceiveMessage监听

panel.webview.onDidReceiveMessage((message) => {
  if (message.command === "pageUp") {
    getHotDetail();
  }
});

这里在给webview.html赋值之后,可以调接口拿到微博内容,通过上述方式传到webview中,webview中只需要展示即可。其他的上一页,下一页,刷新,也可以通过相同方式实现。

最后完成情况如下
在这里插入图片描述

4、配置

上述只简单概述插件功能,配置方面,这里增加了cookie的配置,以及热搜的刷新间隔。
在这里插入图片描述

后续可以考虑评论、点赞等功能实现。

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

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

相关文章

每日一练 | 华为认证真题练习Day121

1、如下图所示的交换网络&#xff0c;所有交换机都运行了STP协议。当拓扑稳定后&#xff0c;在下列那台交换机上修改配置BPDU的发送周期&#xff0c;可以影响SWD配置BPDU的发送周期 A. SWD B. SWC C. SWB D. SWA 2、如下图所示的网络&#xff0c;交换机的MAC地址已标出。在S…

(数据结构)单链表的相关操作

//1.预编译部分#define _CRT_SECURE_NO_WARNINGS#include<stdio.h>#include<stdlib.h>//2.单链表的结构体typedef struct LNode{int data;struct LNode* next; //因为next指针指向的为结构体类型&#xff0c;所以类型为struct LNode*}LNode, * LinkList; …

如何保障Facebook账号登录稳定?跨境人必看

作为全球最大的社交媒体平台&#xff0c;Facebook已成为众多跨境人们拓展海外市场的重要渠道。然而&#xff0c;Facebook对跨境业务卖家的监管越来越严格&#xff0c;封号政策也日趋严厉。对于想要在Facebook上开展业务的跨境人们而言&#xff0c;大家是否被Facebook封号问题困…

如何对需求变更进行精准的风险评估?

1、明确需求变更背景和目的 首先需要了解需求变更的背景&#xff0c;即需求产生的原因和环境&#xff0c;如需求变更是由业务变化、用户需求变化、技术限制、资源限制等因素引起的。其次需要明确需求变更目的是为了解决问题还是满足需求。 明确需求变更背景和目的&#xff0c;有…

X32位汇编和X64位区别无参函数分析(一)

前言 一、X32汇编函数无参无返回分析 二、X64汇编函数无参无返回分析 总结 前言 提示&#xff1a;以下是个人学习总结&#xff1a;如有错误请大神指出来&#xff0c;只供学习参考&#xff0c;本内容使用使用VS2017开发工具&#xff1a;语言是C&#xff0c;需要一些常见的汇编指…

数据库管理-第112期 Oracle Exadata 03-网络与ILOM(20231020)

数据库管理-第112期 Oracle Exadata 03-网络与ILOM&#xff08;202301020&#xff09; 在Exadata中&#xff0c;除了对外网络以外&#xff0c;其余网络都是服务于一体机内部各组件的网络&#xff0c;本期对这些网络的具体情况和硬件管理相关做一个讲解。 1 网络分类 1.1 生产…

工业交换机选购标准,你知道多少?

工业交换机是专门针对灵活多变的工业应用需求而设计的&#xff0c;旨在为工业以太网通讯提供高性价比的解决方案。当我们选购工业交换机时&#xff0c;有哪些选购标准呢&#xff1f; 一、工业交换机选购标准&#xff1a; 1、考虑到工作环境的因素 这些内容包括温度范围、电磁…

前端 js 之 浏览器工作原理 和 v8引擎 01

嘿&#xff0c;老哥&#xff0c;来了就别跑 &#xff01;学完 &#xff0c;不亏 &#x1f602; 文章目录 一、输入url 之后做了什么二、简单了解下浏览器内核三、浏览器渲染过程 &#xff08;渲染引擎&#xff09;四、js 引擎五、chrome五、v8 引擎原理八、浏览器性能优化九、前…

学会C++之后,为什么学任何语言都会更加容易?

学会C之后&#xff0c;为什么学任何语言都会更加容易&#xff1f; 编程的本质是把自然语言翻译为机器语言&#xff0c;但机器没有联想力&#xff0c;所以它需要编写者事无巨细地告诉它怎么做。最近很多小伙伴找我&#xff0c;说想要一些c语言资料&#xff0c;然后我根据自己从业…

家电电器小程序商城的作用是什么

随着人们生活提升&#xff0c;各式家电类型非常多&#xff0c;优化了人们生活日常&#xff0c;入局的大中小品牌也非常多&#xff0c;人们可以在商场、商圈或线上电商平台找到自己所需的电器家电产品。 无论大件还是小件&#xff0c;消费者的选择性非常广&#xff0c;对品牌或…

第二证券:跌破3000点,热搜第一!

今天上午&#xff0c;“沪指开盘跌破3000点关口”冲上百度热搜榜榜首。 上午收盘&#xff0c;上证指数下跌0.27%&#xff0c;报2997.22点&#xff1b;深证成指下跌0.36%&#xff0c;创业板指下跌0.44%。 赛道股发力&#xff0c;光伏、风电、新能源轿车等板块盘中冲高。房地产…

【控制系统】PID(学习笔记)

一、PID概要 1、引入 流量稳定、调整流量 2、适用系统 二阶以内的线性系统 线性系统&#xff1a;满足齐次性和叠加性 齐次性&#xff1a; y f ( x ) yf(x) yf(x) 则 k y f ( k x ) kyf(kx) kyf(kx) 叠加性&#xff1a; y 1 f ( x 1 ) , y 2 f ( x 2 ) y_1f(x_1),y_2f(x…

[linux] 把txt文本文件分成10个子文件,并保存。 linux命令

您可以使用split命令将文件分割成多个子文件。以下是使用split命令将"zh_for_translate5k.txt"文件分割成10个子文件的示例命令&#xff1a; split -l $(( $(wc -l < zh_for_translate5k.txt) / 10 )) zh_for_translate5k.txt sub_file_

同城便民信息分类小程序H5开发

一款适合同城使用的便民信息服务发布小程序&#xff0c;程序经过多代版本更新以后&#xff0c;功能更丰富完善&#xff0c;使用体验更好。支持saas和独立部署。 核心能力&#xff1a;商户浏览、同城配置管理、商家管理设置、帖子管理设置、用户设置管理、会员卡管理、商品管理…

2023年全球及中国环球影城主题公园数量、游客人数及收入分析[图]

环球影城主题公园是以电影为核心的主题游乐园&#xff0c;目前全球共5家&#xff0c;分别位于美国洛杉矶、奥兰多&#xff0c;日本大阪&#xff0c;新加坡圣淘沙岛以及中国北京。 2022年全球环球影城主题公园游客总数为5927.5万人次&#xff1b;其中日本环球影城游客数为1235.0…

安全带、登山绳、登山扣标准认证以及模版标签讲解

安全带、登山绳、登山扣标准认证以及模版标签讲解 一、安全带 安全带是指作业人员在户外或高空等场景下配戴的安全保护装备。为分散坠落防护时产生的对于人体大腿上部、骨盆、胸部以及肩部的压力&#xff0c;常见的装备类型为腰带式安全带和背带式安全带两种。坠落防护安全装…

Spring framework :基于 jdk 动态代理实现连接池复用

前言 在数据库开发中&#xff0c;连接池是一种重要的技术手段&#xff0c;它可以提高数据库连接的复用性和性能。连接池的原理是在应用启动时创建一定数量的数据库连接&#xff0c;并将这些连接保存在一个池中&#xff0c;应用程序需要数据库连接时&#xff0c;从连接池中获取…

智能巡检系统有什么特点和功能?它是如何推动企业高效管理?

随着科技的快速发展&#xff0c;智能化管理逐渐成为各行各业的重要发展方向。巡检工作作为企业管理中的重要环节&#xff0c;智能巡检系统综合平台正逐渐成为关注的焦点。本文将从功能、特点和应用场景三个方面&#xff0c;详细解析“的修”工单管理系统的优势和价值。 一、智能…

什么是美颜sdk?直播实时美颜sdk的工作流程和架构分析

在现代社交媒体和娱乐行业中&#xff0c;直播已经成为了一种受欢迎的娱乐形式&#xff0c;同时实时美颜也变得越来越重要。直播实时美颜SDK的工作流程和架构在这一领域起到了关键作用。本文将深入探讨这些SDK的内部机制&#xff0c;从而理解它们如何为用户提供出色的美颜效果。…

推荐一种更高效的打字输入法——双拼输入法

简介 双拼&#xff08;也称双打&#xff09;是一种建立在拼音输入法基础之上的文字输入方法&#xff0c;可视为全拼的一种改进。它通过将每个汉字拼音的声母和韵母各自映射到某个按键上&#xff0c;使得每个汉字最多用两个按键表示&#xff0c;从而极大地提高了拼音输入法的输…