Кто-нибудь настраивал что-то подобное для себя, используя существующие
node.js REPL? Я не думал о быстром способе сделать это.
То, как я делаю это сегодня, использует emacs, и это:
https://github.com/ivan4th/swank-js
Этот модуль состоит из:
Дополнение SLIME-js к emacs, которое в сочетании с js2-mode позволяет
вы просто запускаете C-M-x где-нибудь в теле функции def - и
off отключает строку функции до ..
Сервер Swank-js (да, вы можете загрузить его с локального компьютера
непосредственно в удаленный процесс), написанный в Node.js - он получает
Строка функции, которую вы оценили, и фактически уничтожает ее
Целая часть, которая позволяет вам подключиться к другому порту на этом сервере
с вашим браузером, а затем позволяет вам управлять DOM в этом браузере
(что довольно удивительно, но не актуально)
Мое решение использует SLIME-js на стороне emacs И мне требуется ('swank-
js ') в моем файле app.js
Теперь .. У меня есть несколько вопросов и вопросов относительно моего решения или
другие возможные:
Q1: это переусердствовало? Есть ли у кого-нибудь секретный способ оценить вещи?
из нано в его живой процесс?
Q2: Мне пришлось изменить способ, которым swank-js EVALing .. он использовал некоторые
вид черной магии, как это:
var Script = process.binding('evals').Script;
var evalcx = Script.runInContext;
....
this.context = Script.createContext();
for (var i in global) this.context[i] = global[i];
this.context.module = module;
this.context.require = require;
...
r = evalcx("CODECODE", this.context, "repl");
, который, насколько я понимаю, просто копирует глобальные переменные в
новый контекст и после eval не меняет исходную функцию
определения - СООО .. Я просто использую простой "Eval" и ИТ
WORKS.
Есть ли у вас какие-либо комментарии по этому поводу?
Q3: для того, чтобы повторно оценить функцию, она должна быть функцией GLOBAL -
Это плохая практика, чтобы все определения функций были глобальными (подобными clojure)? Как вы думаете, есть другой способ сделать это?