2011-01-31 8 views
16

기존 node.js REPL을 사용하여 자신이 직접 설정 한 사람이 있습니까? 나는 그것을하는 빠른 방법을 생각하지 않았다.node.js - 실시간 프로세스에 대한 평가

오늘 내가 그것을 할 방법은 이맥스이 사용하고 : https://github.com/ivan4th/swank-js

이 모듈로 구성됩니다 :

  1. 점액-JS 부가 이맥스에 JS2 모드와 함께하는, 당신은 단순히 데프 함수의 본문에 어딘가에 CMX를 발행 , 수 - 그리고 오프가에 함수의 문자열을 간다 ..

  2. 허풍-JS 서버 (예, c를 Node.js를 작성하여 로컬 컴퓨터 에서 직접 원격 프로세스에 울드의 평가 후면) - 그것은 당신이 eval'ed 함수의 문자열을 받아 실제로

  3. 다른 연결할 수 있도록하는 전체 부분을 evals 다음 브라우저로 해당 서버 의 포트와 당신이 (꽤 훌륭하지만 관련이 없습니다) 해당 브라우저 에 DOM을 조작 할 수 있습니다

'(내 솔루션 이맥스 측 점액-JS 사용하고 난 필요 swank- js ') 내 app.js 파일에

이제 .. 내 솔루션이나 다른 가능한 것들에 대한 몇 가지 문제와 질문을했다 :

Q1 : 그것을 무리이 있습니까? 누군가가 그의 라이브 프로세스에서 nano의 물건을 평가하는 비밀 방법이 있습니까?

Q2는 : 지금까지 내가, 그냥 복사 전역 변수에 대한 이해,


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

: 나는 ... 허풍-JS가 EVALing되는 방식을 변경했다가이 같은 마술의 일부 종류를 사용 새로운 컨텍스트 및 평가시 원래 함수를 변경하지 않습니다 정의 - SOOO ... "eval"과 IT를 그대로 사용하고 있습니다. WORKS.

의견에 대해 의견이 있으십니까?

Q3 : 함수를 다시 평가하려면 전역 함수 여야합니다. - 모든 함수 정의를 전역 (clojure 유사)으로 설정하는 것은 나쁜 습관입니까? 이것을 할 또 다른 방법이 있다고 생각합니까?

+0

을 사실, 내가 매우 관심 이 질문도 마찬가지입니다. 나는 거기에서 흑 마술을 가지고 노는 것이 몇 가지 대답을 낳을 수 있다고 생각합니다. 나는 오늘 내가 무엇을 할 것인지를 안다! –

답변

2

에 대한 질문을하고, 지금은 NPM을 사용하여 프로젝트와 젠체 JS를 설정하는 것이 훨씬 쉽다. 지금 당장 문서를 작성하는 중입니다 만 기능이 있습니다!에서

0

JS를 샌드 박스에서 실행하는 jsapp.us를 살펴본 다음 간단한 테스트 서버로 전세계에 공개 할 수 있습니다. jsapp.us github repo은 다음과 같습니다.

또한, #node.js에 중지 사실, swank.js 훨씬 좋아지고 빠른 응답 :

2

확인이 밖으로 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' } 

당신에게 많은 도움이해야하는 것은, 노드의 샌드 박스 가지 모두를 사용합니다 :)하지만 당신이 직접 사용할 수 있습니다 :)