码上掘金之 rawURL 功能

5,523 阅读3分钟

码上掘金低调上线了一个小功能:rawURL,这个功能看似不起眼,但很有用。

rawURL,顾名思义,是给码上掘金项目的代码片段增加了直接访问这部分代码的功能。我们知道,一个前端的码上掘金项目由Markup、Style和Script三部分构成。以前,一个码上掘金项目中只能有三部分代码,一个项目无法引入另一个项目的代码,这就使得用码上掘金构建相对比较复杂一些的项目会有些不方便。

例如,我在第一届码上掘金编程挑战赛上发布的一个游戏项目:AI推箱子,它依赖好几个JS模块,我不得不把这些内容全部放到Script标签里,而实际上,正常开发中,我们一般是将它拆成好几个JS文件,这样维护起来更方便。

如今,有了rawURL功能,我们终于可以这么实现了,我新发布的推箱子版本:

code.juejin.cn/pen/7165817…

它的JS代码部分,只有105行,它依赖一个独立的JS模块:

BoxGame

而BoxGame又依赖 sokoban_datasokoban_solver,分别是关卡数据和AI。而这三个模块都是另外三个项目的JS部分,这就是rawURL的方便之处。

如何实现?

使用rawURL非常简单,我们创建一个新项目(代码片段),你会发现,项目的Markup、Style和Script各个Tab顶部工具栏多了一个🔗小图标:

WechatIMG424.jpg

点开🔗图标,出现一个URL,这个URL就是这部分代码片段对应的rawURL。

image.png

一个项目的三个代码片段,各自有独立的rawURL,它们各有用处,我们可以将它们运用在不同的地方。

用途

Markup的rawURL一般较少使用,但是有时也会有用。例如,我们要在一些项目中引用一些SVG图形,而这些图形我们又想将来可以任意编辑,我们可以将它的代码发到码上掘金项目中。

code.juejin.cn/pen/7166055…

这样我们可以在其他项目中引用:

const svg = await (await fetch('https://code.juejin.cn/api/raw/7166055804599009291?id=7166055804599025675')).text();

document.body.innerHTML = svg;

CSS支持@import,所以我们可以在一个项目中写CSS片段,然后在另一个项目中通过rawURL将这个片段引入进来。

不仅原生CSS可以,less也支持:

@bg: black;
@fg: white;

body {
  background-color: @bg;
  color: @fg;
}

我们在一个项目中建立上面的代码片段,然后在另一个项目中将它引入进来:

code.juejin.cn/pen/7166060…

Script的用途就更多了,我们甚至可以把它当做一个简易的,没有版本管理的NPM使用。

我们在上面推箱子的项目中就看过它的用法,这里不再赘述。

注意事项

rawURL使用虽简单,但也有限制,请不要随意滥用。

为了安全性考虑,我们限制了只能在码上掘金项目的域下使用,目前暂不支持其他域名,不过如果大家有需求的话,可以在评论区留言,我们未来会考虑给掘友级别到达一定的用户开放域名白名单功能。

另外,rawURL资源必须项目审核过后才可以被另一个项目引用。

最后,rawURL引用的JS暂时不支持PDN域名的自动补全,所以如果要使用rawURL的Script,在import依赖库的时候请自行补全CDN地址。