通过austin的ClojureScript REPL如何与SlimerJS和Browser-REPL交互?

时间:2015-01-30 19:40:48

标签: emacs clojure clojurescript slimerjs

我是在Windows机器上使用emacs,cider,cljsbuild和带有slimerjs的奥斯汀的ClojureScript新手。我注意到当我启动clojurescript repl时,该消息

Browser-REPL ready @ http://localhost:xxxx/yyyy/repl/start

出现,如果我指向浏览器(例如Chrome),则可以看到appendChild或js / alert等功能的副作用。两个Firefox窗口也打开了,其中一个表示" SlimerJS。"关闭这些Firefox窗口似乎没有任何影响。

有人可以通过我的其他浏览器(Chrome)连接的ClojureScript REPL,SlimerJS和Browser-REPL向我解释幕后发生的事情吗?

1 个答案:

答案 0 :(得分:2)

故事的简短版本:

  1. 当页面加载时,脚本正在使用long polling连接到您的ClojureScript REPL后端(对于某些REPL使用Web套接字而不是)。
  2. 只要在REPL中执行操作,代码就会转换为JavaScript并发送到浏览器(通过步骤#1的连接)。
  3. 步骤#2中的代码在浏览器中执行,结果将发送回REPL,并附带其他信息 - 状态,类型等。
  4. 您可以在Chrome开发工具(或不同浏览器的类似工具)的“网络”标签上监控流量时观察所有这些行为。

    不确定SlimerJS,但PhantomJS(它们与我看到的非常相似)在这种情况下将从上图中起到浏览器的作用。它托管并运行已翻译的JavaScript代码。原则上,Node JS上托管的服务器端ClojureScript代码也是如此。