2013-03-06 4 views
2

Я пытаюсь понять жизненный цикл ClojureScript и его оценку в repl.Каков жизненный цикл этого ClojureScript REPL?

Как я понимаю, когда я начинаю Repl с помощью следующей команды lein trampoline cljsbuild repl-listen, а затем, когда я слушаю, используя следующие (repl/connect "http://localhost:9000/repl") -

  1. Это создает сервер TCP, который прослушивает порт 9000.
  2. браузер устанавливает какой-то опрос, где он проводит опрос о любых изменениях.
  3. Когда я выполняю любой код в repl, это изменяет скомпилированный файл *.js.
  4. Этот файл * .js затем служит в браузере.
  5. Браузер заменяет свой текущий * .js-файл новым.
  6. Следовательно, изменения, вызванные кодом, выполняемым в repl, отображаются в браузере.

Я пытаюсь проверить и понять это лучше. Поймите, если кто-нибудь сможет это уточнить или указать мне на ссылки, которые лучше объясняют это.

ответ

4

Чтобы быть строгим, среда выполнения для javascript не обязательно должна быть браузером, хотя использование «большинства».

Для среды выполнения на основе браузера:

  1. HTTP-сервер создан на порт 9000
  2. браузер подключается к серверу с помощью HTTP Long polling, создания среды выполнения. (это HTTP GET - http://server:9000/repl)
  3. Когда код выполнен в REPL, clojurescript скомпилирован в javascript, а javascript отправляется как ответ (см. ниже) в длинном опросе HTTP. (обратите внимание, что это не «служит» файлу js для браузера », а скорее относится к формам)
  4. Формы javascript оцениваются в браузере.
  5. В настоящее время среда javascript в браузере обновляется.

Самый простой способ следить за этим - отслеживать трафик http, используя что-то вроде сетевого монитора в инструментах разработчика Google Chrome.

Примечание: есть бесконечный простор для путаницы между запросом/ответом у установки долго опроса HTTP, это может помочь:

[REPL] -> [browser] travels via HTTP Response 
    [browser] -> [REPL] travels via HTTP Request. 
+0

Спасибо, что было очень полезно! – murtaza52

 Смежные вопросы

  • Нет связанных вопросов^_^