Pergunta

Alguém criou algo assim para si mesmo usando o nó.js REPL?Não pensei em uma maneira rápida de fazer isso.

A maneira como faço isso hoje é usando o emacs e isto:https://github.com/ivan4th/swank-js

Este módulo é composto por:

  1. Um addon slime-js para os emacs que, em combinação com o modo JS2, permite que você simplesmente emita um CMX em algum lugar do corpo de uma função definitivamente-e desligam a sequência da função para o ..

  2. Servidor Swank-js (sim, você pode eval de sua máquina local diretamente para um processo remoto) escrito em Node.js - Recebe o string da função que você eval'ed e realmente evals it

  3. Uma parte inteira que permite se conectar a outra porta nesse servidor com seu navegador e depois permite que você manipule o DOM naquele navegador (que é incrível, mas não relevante)

Minha solução usa SLIME-js no lado do emacs E eu exijo('swank- js') no arquivo .js meu aplicativo

Agora..Tenho vários problemas e dúvidas em relação à minha solução ou outras possíveis:

P1:Isso é exagero?Alguém tem uma maneira secreta de evitar as coisas? De Nano para o seu processo ao vivo?

Q2:Eu tive que mudar a forma como o Swank-js está avaliando.ele usou alguns tipo de magia negra assim:


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");

que, pelo que entendi, apenas copia as variáveis globais para o Novo contexto, e sobre Eval, não altera a função original definições - SOOO..Estou apenas usando simples "eval" e TI OBRAS.

Você tem algum comentário sobre isso?

P3:A fim de re-eval uma função, ela precisa ser uma função GLOBAL - É má prática ter todas as definições de função como globais (clojure-like)?Você acha que existe outra maneira de fazer isso?

Foi útil?

Solução

Na verdade, o swank.js está ficando muito melhor e agora é muito mais fácil configurar o swank js com seu projeto usando NPM.Estou escrevendo a documentação agora, mas a funcionalidade está lá!

Outras dicas

Veja isso http://nodejs.org/api/vm.html

var util = require('util'),
vm = require('vm'),
sandbox = {
  animal: 'cat',
  count: 2
};

vm.runInNewContext('count += 1; name = "kitty"', sandbox, 'myfile.vm');
console.log(util.inspect(sandbox));

// { animal: 'cat', count: 3, name: 'kitty' }

Deve ajudá-lo muito, todas as coisas do sandbox para o node o utilizam :) mas você pode usá-lo diretamente :)

Você pode dar uma olhada em jsapp.us, que executa JS em uma sandbox, e depois expõe isso ao mundo como um pequeno servidor de teste rápido.Aqui está o repositório github jsapp.us.

Além disso, pare em #node.js e faça perguntas para uma resposta mais rápida :)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top