介绍一个十分牛逼的GitHub看代码神器,零基础必学会的操作。

2023-11-06

        给大家介绍一个非常实用的工具,有了它,我们可以在几秒之内用 VS Code 打开 GitHub 上的任意一个 Repo,无需 Clone,速度飞快。

用法也十分简单而且好记,下面给大家介绍下。

介绍

比如这里是 Scrapy 的仓库:https://github.com/scrapy/scrapy,用 GitHub 打开是这样的:

看代码的时候我们可能需要一个个点进去,速度慢而且感觉不太方便。

为此大家可能安装了一些 Chrome 插件,比如比较火的是 Octotree,安装之后效果是这样的:

 

安装这个插件之后,在网页左侧会出现一个文件树方便我们快速定位文件。然鹅,个人感觉总不是真正想要的那种味道。

现在好了。

这时候,我们只需要在网址 github 后面加上 1s,变成:https://github1s.com/scrapy/scrapy

没错,就是这么简单好记。

访问之后,就可以看到这样的页面:

是的没错,这就在浏览器中打开了一个在线版的 VS Code,并打开了 Scrapy 的源代码,看代码就非常方便了。

无需克隆,无需任何配置,打开飞速,代码高亮!

一些快捷键也是和 VS Code 一样的,比如 Cmd/Ctrl + P,就可以快速找到一个文件:

 

Cmd/Ctrl + F 搜索:

 

不过我试了一下全局搜索貌似只能限制在一个文件内,不知道是哪里设置的问题。

有的朋友可能会问,代码能修改吗?

答案是不能,代码都是以只读模式打开的,也就是我们只能看,没法改。不过这也合情合理,毕竟任意 Repo 都能打开,改了又存到哪里呢?

原理

另外有的朋友可能好奇这个的实现原理是怎样的,我扒了一下源码,看到作者是这么介绍的:

 

Github1s is based on VS Code 1.52.1 now. VS Code can be built for a browser version officially. I also used the code and got inspired by Code Server.

Thanks to the very powerful and flexible extensibility of VS Code, we can easily implement a VS Code extension that provides the custom File IO ability using FileSystemProvider API. There is an official demo named vscode-web-playground which shows how it is used.

On the other hand, GitHub provides the powerful REST API that can be used for a variety of tasks which includes reading directories and files for sure.

According to the above, obviously, the core concept of GitHub1s is to implement a VS Code Extension (includes FileSystemProvider) using GitHub REST API.

We may switch to the GitHub GraphQL API for more friendly user experience in the future, thanks to @xcv58 and @kanhegaonkarsaurabh. See details at Issue 12.

GitHub1s is a purely static web app (because it really doesn't need a backend service, does it?). So we just deploy it on GitHub Pages now (the gh-pages branch of this repository), and it is free. The service of GitHub1s could be reliable (GitHub is very reliable) because nobody needs to pay the web hosting bills.

 

 

总的来说,GitHub1s 这个仓库是基于 VS Code 构建的,灵感来源于 Code Server 这个 Repo,地址为:https://github.com/cdr/code-server,这个就是一个 Online 版的 VS Code。

那作者基于这个做了什么事呢?

他基于 VS Code 提供的 FileSystemProvider API 对接了 GitHub 的 REST API 实现了这些功能。其中前者是 VS Code 提供的,可以提供文件读写操作,当然读写在线文件也是没问题的了;而后者是 GitHub 提供的,通过 REST API 可以获取 Repo 的文件夹或者某个文件。

如此,GitHub1s 就诞生了。

知道了原理之后,我们也可以自己把 GitHub1s 代码下载下来,改写一下,扩展一些功能:比如解除只读限制,保存的时候直接存储到自己的 Repo 等。

具体的修改和开发流程可以参见:https://github.com/conwnet/github1s/blob/master/docs/guide.md#development

 

访问频率限制

另外作者也提到了一点:

For unauthenticated requests, the rate limit allows for up to 60 requests per hour. Unauthenticated requests are associated with the originating IP address, and not the user making requests.

对于未授权的请求,API 的请求频率是有限制的,每个 IP 每个小时访问限制是 60 次,所以用着用着就容易超限制了,可能就打不开文件了。

这里的频率限制我解读下,有朋友可能好奇,因为这个网站是 github1s.com 来 serve 的,所以请求是不是都是 github1s.com 这个服务器发出来的呢?所以不同的人其实都是用的一个 IP?

其实不是的,我观察了一下网络请求,是当前网页直接请求了 GitHub 的 API 实现的,所以 IP 就是我们自己客户端的真实 IP,网络请求如下所示:

但是请求 GitHub 的 API 没有跨域问题吗?

没有,这是因为 GitHub API 设置了解除跨域访问,Response Headers 里面可以看到:

access-control-allow-origin: *

所以任何网站都可以直接请求 GitHub 的 API。

OK,说回解除频率限制的问题:

For API requests using Basic Authentication or OAuth, you can make up to 5,000 requests per hour.

这里说如果登录了,每小时就可以提高到 5000 次请求了。

怎么设置呢?

可以在 github1s.com 打开侧栏的 OAuth 设置,如图所示:

 

然后点击 Generate New OAuth Token,跳到自己的 GitHub Setting 页面,生成一个 Token 就好了,如图所示:

好了之后贴回来就 OK 了,这样频率限制就解除了,爽歪歪。

彩蛋

另外我还发现了有一个配套的 Chrome 插件,也叫 GitHub1s,大家可以自己搜索安装:

安装完成之后,每个 GitHub Repo 都会自动多出一个绿色按钮,如图所示:

点击之后就直接跳转到刚才所说的 github1s.com 打开这个 Repo 了,简直不要太方便!

另外还有另外一个开发者写的插件,效果是这样的:

感觉这个还是挺小巧精致的,可以来这里下载:https://github.com/2293736867/Github1sExtension

 你会了吗,需要好玩源代码不会用gitub的可以关注下方小卡片,照样获取!

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

介绍一个十分牛逼的GitHub看代码神器,零基础必学会的操作。 的相关文章

随机推荐

  • Java数据结构之优先级队列(堆)

    文章目录 一 优先级队列 一 概念 二 优先级队列的模拟实现 一 堆的概念 二 堆的存储结构 三 堆的创建 1 堆的创建和向下调整 2 堆的创建和向上调整 四 堆的插入和删除 1 堆的插入 堆的创建和向上调整 续 2 堆的删除 五 用堆模拟
  • Cadence 背景颜色设置

    目录 概述 一 Allegro PCB Designer 二 OrCAD Capture 三 总结 概述 有位粉丝问我 关于背景颜色设置问题 这里我写一篇文章吧 尽自己微薄之力帮助更多的人 加油 一 Allegro PCB Designer
  • 2.22笔记:linux命令不同颜色命令

    浅蓝色 表示软链接 灰色 表示其他文件 绿色 表示可执行文件 红色 表示压缩文件 蓝色 表示目录 红色闪烁 表示链接的文件有问题了 黄色 表示设备文件 包括block char fifo 管道文件 粉色 网络文件
  • bochs+gdb联调linux-0.11内核

    终于把bochs和gdb连起来了 下面描述下步骤以作记录 1 安装bochs 前面有篇文章介绍了bochs源码编译安装过程 这里安装也非常相似 只是命令稍微有些不同 configure enable gdb stub make make i
  • Java语言连接数据库时间读取错误的问题

    连接时候的数据库相关配置
  • pcie inbound和outbound关系

    Inbound PCI域訪问存储器域 Outbound 存储器域訪问PCI域 RC訪问EP RC存储器域 gt outbound gt RC PCI域 gt EP PCI域 gt inbound gt EP存储器域 EP訪问RC EP存储器
  • Jenkins插件下载失败两种处理办法

    持续集成 自动化部署 弹性伸缩教程 http edu csdn net course detail 6452 大家在使用jenkins安装插件的时候经常遇到一下问题 就是插件由于网络或者墙的原因无法直接下载 出现下面截图的问题 处理办法有两
  • flume采集log4j日志到kafka

    简单测试项目 1 新建Java项目结构如下 测试类FlumeTest代码如下 package com demo flume import org apache log4j Logger public class FlumeTest priv
  • 芯片电源引脚为什么要加一个100nF电容

    在设计电路的时候 常常会在芯片的每个电源引脚就近的放一个100nF的贴片电容 这电容有什么作用呢 今天就来和大家分享一下这个电容的作用以及为什么是100nF 首先这个芯片电源引脚的100nF的电容一般我们称为旁路电容 也有叫去耦电容的 因为
  • Oracle 行转列 动态出转换的列

    10月的第二天 前天写了个Oracle中行转列的pivot的基本使用方法 然后 因为pivot的用法中 正常情况下 我们需要转出多少个列 都得在我们的sql中完完整整地写出 而不能直接在里面写个查询来动态转换 然后 趁着祖国母亲的生日 这几
  • 漫谈设计模式之建造者模式(Builder)

    建造者模式 Builder 又叫生成器模式 属于对象创建型模式 建造者模式的目的是要将一个复杂对象的构建与它的表示分离 使得同样的构建过程可以创建不同的表示 产品 说得通俗点就是一个产品 表示 的构建 生产 过程是一样的 但是同样的生产过程
  • hdu 1465不容易系列之一

    http acm hdu edu cn showproblem php pid 1465 这是一道排错问题 用排错公式 排错公式推导 当n个编号元素放在n个编号位置 元素编号与位置编号各不对应的方法数用D n 表示 那么D n 1 就表示n
  • FISCO BCOS 2.0原理解析: 群组架构的设计

    为了方便企业 开发者更深入理解FISCO BCOS 2 0诸多新特性 更快速地运用FISCO BCOS搭建联盟链应用 我们启动了FISCO BCOS 2 0系列剖析的计划 在后续的推送中 我们将陆续推出 FISCO BCOS 2 0原理解析
  • LeetCode 260. 只出现一次的数字 III

    题目链接 https leetcode cn problems single number iii 思路如下 从头到尾依次异或数组中的每一个数字 那么最终得到的结果就是两个只出现一次的数字的异或结果 因为其他数字都出现了两次 在异或中全部抵
  • javascript求任意一组数的平均值

    代码 function getAvg 任意一组数求平均值 var sum 0 len arguments length i arguments是js函数中内置的类数组 它能像数组一样使用下标进行访问元素 for i 0 i
  • vue怎么改logo_vue项目添加网页logo

    网上关于为vue项目添加网页logo的文章很多 步骤很简单 但是博主还是踩了坑 特此记录一下 先上效果 1 首先 要为网页添加logo我们需要一张ico格式的图标 可以用网上的在线转换工具 将 jpg png 格式的图片转为 ico 格式
  • 防抖与节流函数

    文章目录 前言 节流函数代码 防抖函数代码 前言 防抖与节流是日常开发中常用的两个函数 目的都在于控制事件触发频率降低性能损耗和代码错误 节流 点击事件即开始计时 计时时间内无论触发多少次事件 都只执行触发计时的那个事件 防抖 点击事件即开
  • Python: SQLAlchemy 增、删、改、查

    目录 一 完整代码 1 1 代码 1 2 运行结果 二 增删改查 2 1 增加一行记录 2 2 修改一行记录 2 3 查询一行记录 2 4 删除一行记录 一 完整代码 1 1 代码 import uuid import datetime i
  • 一个关于缓存的问题

    网上查了一下 关于生命周期的话题 如果是类的成员变量 则其声明周期贯穿整个其对象的生命周期 如果是方法内的变量 局部变量 则仅仅在该方法内有效 出了方法体则无效 失去意义 static是修饰静态代码块或者成员变量或者方法的 其方法或者代码块
  • 介绍一个十分牛逼的GitHub看代码神器,零基础必学会的操作。

    给大家介绍一个非常实用的工具 有了它 我们可以在几秒之内用 VS Code 打开 GitHub 上的任意一个 Repo 无需 Clone 速度飞快 用法也十分简单而且好记 下面给大家介绍下 介绍 比如这里是 Scrapy 的仓库 https