干货| 使用 j-lunker 来在线演示你的前端代码

点击上方“中兴开发者社区”,关注我们

每天读一篇一线开发者原创好文

J-lunker

English Version

链接:https://github.com/rdkmaster/j-lunker/blob/master/README.md


用J-lunker来做啥

J-lunker可以在线运行任意前端代码,并且可以在代码被编辑之后,J-lunker会立即重新运行他们。它可以让你很方便的将代码及其结果和行为分享给他人。

J-lunker和embed.plnkr.co在功能、用法上都非常相似,就连名字也很相似不是吗?


为啥需要J-lunker

你可能已经知道了,embed.plnkr.co的功能和J-lunker几乎是一样的了,那为啥还需要J-lunker呢?这里是一些原因:

避免被GFW干扰:这是我创造J-lunker的最主要原因,GFW在我们使用plunker来分享和运行代码的过程中,制造了太多的麻烦了,Jigsaw的demo代码的读者们常常抱怨这一点。

更快的速度:我在国内部署了一个J-lunker的服务器,这样就可以让多数Jigsaw的demo代码读者享受到更快的代码打开和运行速度了,相信他们会很开心的。

只将代码及其运行效果共享给授信的人,而非所有人:J-lunker极其轻量,因此它可以非常容易的部署到任何范围可控且安全的环境中去,因此你就不需要担心你将代码发给plunker上去运行之后,被不信任的人(包括plunker在内)偷走了。

如果上述任何一个理由也适合你,那么J-lunker就是一个更好的选择。


 代码持久化在哪

J-lunker本身不永久保存被运行的代码,代码由J-lunker的用户自行保存,J-lunker只是提供在线运行他们的功能。如果你和Jigsawangular.ioangular.cn那样,也有大量需要在线演示的代码的话,那J-lunker对你来说是很适合的工具。自行持久化代码的好处是你可以很容易通过CI或者其他脚本来更新或者生成这些代码。


 如何使用

J-lunker的用法和embed.plnkr.co极其相似。拷贝下面的代码,保存到一个文件中去,假设命名为embed.html,使用任意的浏览器打开它,你应该可以立即看到J-lunker运行后的效果了。

  
  
  1. <html>

  2. <head>

  3. <meta charset="UTF-8">

  4. </head>

  5. <body>

  6.   <form id="mainForm" method="post" target="_self"

  7.    action="http://rdk.zte.com.cn/rdk/service/app/j-lunker/server/eval">

  8.     <input type="hidden" name="option[show]" value="index.html,preview" />

  9.     <input type="hidden" name="entries[asset/styles.css][content]" value="

  10. h1 {

  11.   font-size: 30px;

  12.   transition: .5s;

  13. }

  14.  

  15. h1:hover {

  16.   color: red;

  17. }

  18.  

  19. a {

  20.   cursor: pointer;

  21.   transition: .3s;

  22. }

  23.  

  24. a:hover {

  25.   color: blue;

  26. }

  27. " />

  28.     <input type="hidden" name="entries[script/script.js][content]" value="

  29. function gotoProject() {

  30.   window.open('https://github.com/rdkmaster/j-lunker');

  31. }

  32.     ">

  33.     <input type="hidden" name="entries[index.html][content]" value="

  34. &lt;!DOCTYPE html&gt;

  35. &lt;html&gt;

  36. &lt;head&gt;

  37.   &lt;title&gt;J-lunker basic template&lt;/title&gt;

  38.   &lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;asset/styles.css&quot;&gt;

  39.   &lt;script type=&quot;text/javascript&quot; src=&quot;script/script.js&quot;&gt;&lt;/script&gt;

  40. &lt;/head&gt;

  41. &lt;body&gt;

  42. &lt;h1&gt;Hello J-lunker!&lt;/h1&gt;

  43. &lt;p&gt;

  44.   This is the basic template.

  45.   &lt;a οnclick=&quot;gotoProject()&quot;&gt;Click here to star us.&lt;/a&gt;

  46. &lt;/p&gt;

  47. &lt;/body&gt;

  48. &lt;/html&gt;

  49.     ">

  50.     <input type="hidden" name="title" value="J-lunker basic template." />

  51.   </form>

  52.   <script>document.getElementById("mainForm").submit();</script>

  53. </body>

  54. </html>

这个embed.html文件没有任何依赖,可以将它保存到你的web服务器下的任意目录,这样你就可以通过对应的链接来将他分享给任何人了,或者也可以将代码插入在你的文档、文章中去。使用CI或者脚本来创建这样的文件是很简单的事情。

注意到这个文件的核心部分是一个表单(form),以及一些隐藏了的inputs。这些inputs的name属性值定义了一个J-lunker可识别的属性,value定义了该属性的值。J-lunker目前可以支持的属性有:

option[show]:关键字option表明这里定义的是一个选项,show是这个选项的名字,它的值是index.html,preview,这个选项告诉J-lunker在页面准备继续之后,就打开index.html这个文件,以及打开运行效果预览区。

entries[asset/styles.css][content]:entries用于定义一个文件,asset/styles.css是文件名和路径。此属性的值就是文件的内容。注意需要对文件内容做uri编码。

title:此属性用于定义运行结果的页面的标题。

这里给出Jigsaw的生产环境中的live demo的代码作为例子:http://rdk.zte.com.cn/j-lunker

我们的CI环境每天自动检查两遍http://rdk.zte.com.cn/j-lunker这个站点以确保它是可用的。


 如何部署

如果你只需要运行你的代码,你是无需部署J-lunker服务器的,请先阅读这个小节,然后再决定是否继续按照这个小节的说明部署你自己的J-lunker服务器。

这个小节说明了如何部署一台独立的J-lunker服务器,由此,你就可以使用你自己部署的J-lunker服务器来运行你的代码了,被运行的代码不需要发送到公网上,因此被运行的代码的安全性就可以得到保障。

详细步骤如下:

克隆或者下载这个仓库的代码,并且解压缩到一个任意目录,最好不要解压到有空格或者中文的目录中。

J-lunker的服务端需要jre1.8以上,如果你的运行环境上没有,则请安装或者设置JAVA_HOME指向jre1.8。如果你的环境无法安装或者不方便设置环境变量,你也可以将jre1.8拷贝到proc/bin/jre目录下。

如果你想将J-lunker部署在Windows上,或者只想试一试,那么双击start.bat就可以启动J-lunker的服务端和web服务器了。接下来你可以按照这个小节的方法来测试你自己的J-lunker服务器了。别忘了将例子中的http://rdk.zte.com.cn改为http://localhost:8080。

如果你想将J-lunker部署在其他操作系统上,则还要继续:

配置你的web服务器,这里用nginx作为例子。首先你需要在nginx.conf中的server节点下添加一个反向代理配置:

  
  
  1. location /rdk/service {

  2.     proxy_pass http://localhost:5812;

  3. }

这个配置项告诉nginx将所有包含/rdk/service关键字的URL转发给J-lunker的服务器,别忘了需要重启一下nginx。

你可以对比这个文件,它也许可以帮助你解决这方面的配置问题。

将www目录设置为你的web服务器的根目录,如果你的web服务器已经有一个根了,则可以将下面这几行插入到nginx.conf中的server节点下

  
  
  1. location /j-lunker {

  2.     root   /dir/to/j-lunker/www/;

  3.     index  index.html index.htm;

  4. }

你可以对比这个文件,它也许可以帮助你解决这方面的配置问题。

将web服务器的监听端口改为任何你喜欢的,默认是8080。

到proc/bin目录下,执行sh run.sh命令,它将启动J-lunker的服务端,再次提醒,J-lunker的服务端需要jre1.8以上。

至此大功告成,接下来你可以按照这个小节的方法来测试你自己的J-lunker服务器了。别忘了将例子中的http://rdk.zte.com.cn改为http://localhost:8080。

如果你碰到了任何困难,欢迎给我提issue。


共创共建

我非常欢迎你给我推送PR。

J-lunker的默认首页现在非常简陋,而且我不会有太多的时间花在它上面,我很希望有人能够帮我完善它,具体请参考这个issue:

http://rdk.zte.com.cn/j-lunker/(点击阅读原文查看)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值