2015-01-30 3 views
1

나는 Windows 시스템에 slimerjs와 이맥스, 사이다, cljsbuild, 오스틴를 사용하여 ClojureScript 초보자입니다. 나는 메시지austin을 통한 ClojureScript REPL은 SlimerJS 및 Browser-REPL과 어떻게 상호 작용합니까?

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

가 나타납니다의 clojurescript의 REPL을 시작하고 내가 거기에 브라우저 (예를 들어, 크롬)에 appendChild 또는 JS 같은 기능의 후 부작용을 지적하는 경우/경고 때 것으로 나타났습니다 볼 수 있습니다. 두 개의 Firefox 창이 열리 며, "SlimerJS"라고 쓰여 있습니다. 이 Firefox 창을 닫아도 아무런 효과가없는 것 같습니다.

내 다른 브라우저 (Chrome)에 연결되어있는 ClojureScript REPL, SlimerJS 및 Browser-REPL로 백그라운드에서 진행되는 상황을 설명해 줄 수 있습니까? 이야기의

답변

2

짧은 버전 :

페이지가로드, 스크립트가 귀하의 ClojureScript REPL 백엔드에 long polling를 사용하여 연결되고
  1. (일부 REPLs을위한 웹 소켓 대신 사용된다). 당신이 REPL에서 행동을하는 것처럼
  2. 은 즉시, 코드는 자바 스크립트로 변환하고 (1 단계에서 연결을 통해) 브라우저로 전송됩니다. 단계 # 2에서
  3. 코드는 브라우저에서 실행되고, 결과는 추가 정보와 REPL로 다시 전송됩니다 - 상태, 유형 등

크롬 개발 도구에서 네트워크 탭의 트래픽을 모니터링하는 동안이 모든 동작을 관찰 할 수있다 (또는 다른 브라우저에 대한 유사한 도구).

SlimerJS 확실

하지,하지만 PhantomJS 위의 그림에서 브라우저의 역할을 할 것이다 (이 경우 그들은 내가 보는 것과 매우 유사하다). 번역 된 JavaScript 코드를 호스팅하고 실행합니다. 원칙적으로 노드 JS에서 호스팅되는 서버 측 ClojureScript 코드에 대해서도 마찬가지입니다.

+0

감사합니다. SlimerJS는 어디서 그림에 잘 들어 맞습니까? – Anonymous

+1

방금 ​​답변을 업데이트했습니다. 원칙적으로 REPL <-> JS 끝점 통신의 측면에서 차이가 없습니다. – Jarlax

+0

감사! 또한, 빠른 (오타가있을 수 있음) 질문 : "긴 풀링"을 의미 했습니까? – Anonymous