上个月,码上掘金低调上线了一个新功能,这个功能看起来不起眼,但相当有用,它能让你不仅可以用码上掘金写前端代码片段,还可以将它扩展到其他语言。
具体用法我们来看一下。
首先我们看到,在Script的Tab下,有一个Custom的分类,那么这个Custom要怎么使用呢?
当分类切换到Custome之后,我们要做的事,是先给代码的第一行添加一个Hashbang,格式为:
#!/jcode/lang/语言类型 https://语法解析.json
这个Hashbang分为两部分,#!/jcode/lang/语言类型指定语言,码上掘金会根据语言类型,将后续的代码渲染为:
<script type="text/语言类型">
...
</script>
后面的URL指定一个语法高亮JSON文件,这个语法高亮文件是一个MonacoEditor的语法高亮配置。
一般的MonacoEditor语法高亮配置是JS,但是因为安全考虑,码上掘金不支持直接引用JS语法高亮文件,所以我们要将它转换为JSON文件,你可以通过下面这个码上掘金代码进行转换:
或者使用这个GitHub项目:github.com/xitu/jcode-…
将JSON文件准备好之后,我们就可以将JSON文件发布,把URL添加在hashbang之后,如下图所示:
这样码上掘金就可以正常处理指定的编程语言的语法高亮了。
处理完语法高亮之后,代码还不能运行,因为这时候,马上掘金仅仅是将它用自定义的script标签渲染到了页面上,我们需要引入处理该语言的运行时脚本,比如上面例子的文言文编程,我们需要引入 github.com/wenyan-lang…
不同的运行时库有不同的API,我们只要拿到渲染的script标签中的代码,然后根据不同的运行时API进行解析:
<div id="app"></div>
<script>
(async function() {
const code = await JCode.getCustomCode();
const jscode = Wenyan.compile(code, {
logCallback: () => {},
importPaths: ['https://akira-cn.github.io/wenyan-demos/'],
allowHttp: true,
});
Wenyan.evalCompiled(`(async () => {${jscode}})()`);
}());
</script>
要拿到自定义script标签里的代码,我们可以在Markup的Tab中使用await JCode.getCustomCode(),为此我们要添加jcode-tools依赖:
接着我们添加文言文运行时代码库:
这样我们就实现了让码上掘金运行文言文编程语言的功能。
最后总结一下,把这几个步骤合在一起,就是下面这张图所示:
目前我在这个项目 github.com/xitu/jcode-… 下整理了九种不同的编程语言支持,未来还会持续添加,大家可以关注一下:
后续还会继续添加新的编程语言支持进来,大家有想要支持的编程语言,也欢迎给这个项目提交PR。