是否有可能将github 存储库中的抓取文件误用作 jsFiddle 中的外部资源?
7 回答
TLDR;访问rawgit.com,它将直接从 GitHub 在 CDN 上弹出您的文件,以便您可以使用它们。
不幸的是,这里没有一个答案对我有用。由于连接被拒绝,该rawgithub
URL 似乎不起作用。所以这是一个有效的完整解决方案。首先在 GitHub 中你需要点击Raw
按钮来获取原始的 JavaScript。
然后从它带你的页面复制 URL。您会注意到,如果您尝试直接使用它,您会收到来自 JSFiddle 的警告。
更重要的是浏览器会给你一个错误,例如:
Refused to execute script from https://raw.githubusercontent.com/nnnick/Chart.js/master/Chart.min.js' because its MIME type ('text/plain') is not executable, and strict MIME type checking is enabled.
获取该 URL 并访问rawgit.com。https://rawgit.com/nnnick/Chart.js/master/Chart.min.js
这将为您提供您可以使用的格式的 URL 。
我已经尝试并测试了它,它似乎可以正常工作而没有问题
这是一个更新的答案,因为 Github 的 url 略有变化......我遇到了这个问题并在今天解决了这个问题。希望这有助于人们最近找到这篇文章。Bootswatch 中的 Bootstrap Slate 主题示例:
原始文件网址: https ://raw2.github.com/thomaspark/bootswatch/gh-pages/slate/bootstrap.css
删除
2.
之后raw
:https ://rawgithub.com/thomaspark/bootswatch/gh-pages/slate/bootstrap.css
而已!:D
如今, JSDelivr似乎是最好的选择。
更新
如何使用或滥用 github 作为一种 CDN 并不是只有良性的“提琴手”才有的想法;犯罪分子也有这种想法。不幸的是,github 作为免费和匿名的,很容易被滥用。据我所知,上述一些解决方案现在已经被破坏的事实与此有关。
这是我的做法。它现在可以使用(2019 年 11 月),但不可否认它不是很方便。
如果您还没有,请自己获取一个 github 帐户。创建一个名称与您的 github 用户名相同的存储库。那个 repo(而且只有那个 repo)——我称之为“home repo”——你可以将它用作你的网络托管服务。https : // yourGithubUserName .github.io 将向公众展示你的 home repo“原始/原样”。(文件夹内容未显示,您必须有一个 index.html)
现在,如果您想在小提琴中使用其他人的 github 存储库,只需将完整的存储库复制到您的主存储库,然后只需在小提琴的 HTML 部分中使用脚本标记的 src 属性引用该存储库的副本. 像这样:
<head>
<script src="https://mathheadinclouds.github.io/thirdparty/esprima.js"></script>
<script src="https://mathheadinclouds.github.io/thirdparty/estraverse.browser.js"></script>
<script src="https://mathheadinclouds.github.io/thirdparty/escope.browser.js"></script>
</head>
<body></body>
上面的片段显示了使用节点模块 esprima、estraverse 和 escope 的工作小提琴的 HTML 部分,也就是说,同名的 github 存储库。thirdparty
在那里,因为这是我放置副本的子文件夹的名称(在我的家庭仓库中)。
正如我所说,不是很方便(很多复制和粘贴来设置它),但这对我有用。
我应该提一下,仅复制/粘贴可能还不够,您可能必须在引用的 repo 上执行 browserify 或 webpack(如果它是为节点制作的,那就是。)
这是我正在谈论的小提琴。
旧答案 (有效,但有点慢)
您可以使用requirify。它使您能够在浏览器命令行上要求(因为它在节点中);但它也适用于小提琴,我对其进行了测试。与上述其他方法相比,我不知道它是否是“最好的”(因为我没有对它们进行全部测试并对其进行测试),但它确实有效。
这是一个示例小提琴加载 esprima(javascript 解析器),然后 escodegen(依赖于 esprima 的反向 javascript 解析器),然后解析和重新生成一些简单的 javascript 代码。
什么
require('lorem', 'ipsum')
确实是,它从 npm 加载 ipsum 节点模块,并将结果放入名为 lorem 的全局变量中。所以这仅适用于 npm 模块,而不是一般的 github 文件,它们也不是节点模块。不应该有太大的限制,因为如果它是你自己的项目,你总是可以把它变成一个节点模块。
第二个例子使用相同的技术。
(((实际上它更简单,如小提琴所示。您可以将 2 个 require 语句一个接一个地放置,您不需要一个回调函数(只需一个回调函数等待两个都加载)) ))
如果以下文件夹结构中有 git repo
fiddletest/test1(fiddletest 是 repo 名称,test1 是一个文件夹)
那么相应的jsfiddle链接将是
http://jsfiddle.net/gh/get/<library name>/<version>/<github user name>/fiddletest/tree/master/test1/
文件夹和文件结构必须是这样的
fiddletest(the repo name)
|____ test1
|____ demo.html
|____ demo.js
|____ demo.css
|____ demo.details
除了这三个文件,其他文件将被忽略。详细信息文件应包含外部资源的小提琴详细信息和链接(如果有),如下所示
---
name: test fiddle repo
description: this is a test repo
resources:
- http://abc.xyz.com/abc.js
- http://abc.xyz.com/abc2.js
...
可能你已经注意到小提琴链接中的 and 了。如果小提琴是纯 js,则库名称应为“库”,版本应为“纯”
简而言之,指向 github 的小提琴链接应采用以下格式
http://jsfiddle.net/gh/get/<library name>/<version>/<github user name>/<repo name>/tree/<branchname>/<folder name>/
另一种可能性是将 Git 库添加到cdnJS 脚本存储库(他们写道,任何在 GitHub 上相当流行的库都将被接受),然后将其用作外部资源。
刚刚发现:在http://jsdb.io/上有很多 Javascript 库,在那里添加新库非常容易——我只需输入 Github 存储库的 URL。