码上掘金低调上线了一个小功能:rawURL,这个功能看似不起眼,但很有用。
rawURL,顾名思义,是给码上掘金项目的代码片段增加了直接访问这部分代码的功能。我们知道,一个前端的码上掘金项目由Markup、Style和Script三部分构成。以前,一个码上掘金项目中只能有三部分代码,一个项目无法引入另一个项目的代码,这就使得用码上掘金构建相对比较复杂一些的项目会有些不方便。
例如,我在第一届码上掘金编程挑战赛上发布的一个游戏项目:AI推箱子,它依赖好几个JS模块,我不得不把这些内容全部放到Script标签里,而实际上,正常开发中,我们一般是将它拆成好几个JS文件,这样维护起来更方便。
如今,有了rawURL功能,我们终于可以这么实现了,我新发布的推箱子版本:
它的JS代码部分,只有105行,它依赖一个独立的JS模块:
而BoxGame又依赖 sokoban_data 和 sokoban_solver,分别是关卡数据和AI。而这三个模块都是另外三个项目的JS部分,这就是rawURL的方便之处。
如何实现?
使用rawURL非常简单,我们创建一个新项目(代码片段),你会发现,项目的Markup、Style和Script各个Tab顶部工具栏多了一个🔗小图标:
点开🔗图标,出现一个URL,这个URL就是这部分代码片段对应的rawURL。
一个项目的三个代码片段,各自有独立的rawURL,它们各有用处,我们可以将它们运用在不同的地方。
用途
Markup的rawURL一般较少使用,但是有时也会有用。例如,我们要在一些项目中引用一些SVG图形,而这些图形我们又想将来可以任意编辑,我们可以将它的代码发到码上掘金项目中。
这样我们可以在其他项目中引用:
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;
}
我们在一个项目中建立上面的代码片段,然后在另一个项目中将它引入进来:
Script的用途就更多了,我们甚至可以把它当做一个简易的,没有版本管理的NPM使用。
我们在上面推箱子的项目中就看过它的用法,这里不再赘述。
注意事项
rawURL使用虽简单,但也有限制,请不要随意滥用。
为了安全性考虑,我们限制了只能在码上掘金项目的域下使用,目前暂不支持其他域名,不过如果大家有需求的话,可以在评论区留言,我们未来会考虑给掘友级别到达一定的用户开放域名白名单功能。
另外,rawURL资源必须项目审核过后才可以被另一个项目引用。
最后,rawURL引用的JS暂时不支持PDN域名的自动补全,所以如果要使用rawURL的Script,在import依赖库的时候请自行补全CDN地址。