2013-08-08 1 views
1

우리는 nodejs를 js 엔진으로 사용하여 서버 측의 일부 학생 스크립트를 평가하므로 정확성을 테스트 할 수 있습니다.NodeJS에서 여러 개의 전통적인 JS 파일을 평가하는 방법

기존의 여러 .js 파일을 '요구'하거나 '가져올 수있는 방법이 있습니까? 여러 사용자의 제출물을 포함시켜야합니다. 아니면 파일을 연결해야합니까?

+0

학생용 샘플 스크립트와 평가 방법을 알려주시겠습니까? 擬似 코드도 괜찮습니다. – Chandu

답변

3

예, Node.JS (대부분의 고급 언어와 마찬가지로)는 동적 가져 오기를 지원합니다. 당신이

var files = ["student1.js", "student2.js", "student3.js", ...]; 

예를

에 대한 파일의 목록을 가지고 있다면 당신은 단순히 자동으로이 파일을 가져 와서 평가합니다

files.forEach(function(f) { 
    try { 
     require(f); 
    } catch(e) { 
     console.log("Error in file: "+f); 
    } 
}); 

이 작업을 수행 할 수 있습니다. 파일의 오류로 인해 예외가 발생할 수 있으므로 try{}catch{}으로 묶는 것이 좋습니다.

당신은 데이터베이스 스크립트를 유지하지만 경우 문자열은 다음 평가를 사용할 수 있기 때문에 Node.js를 당신은 그들을 가지고

"전통적인"물론
var scripts = ["var x = 1;", "console.log('test');", ...]; 
scripts.forEach(function(s) { 
    try { 
     eval(s); 
    } catch(e) { 
     console.log("Error in script:\n"+s); 
    } 
}); 

(나는에 의해 당신이 반드시 브라우저 의미한다고 가정 side JavaScript) 스크립트는 Node.JS와 호환되지 않을 수 있습니다 (예 : Node.JS에는 window이 없음).

경고 : 두 가지 방법이 (사용자가 악성 스크립트를 업로드 할 수 있습니다) 안전하지 주, 그래서 아마도 가장 좋은 아이디어는 그들 각각에 대해 (제한된 환경에서) 별도의 Node.js를의 프로세스를 생성하는 것입니다. 당신은 그것을위한 스크립트를 작성할 수 있습니다, 그것은 조금 더 복잡합니다.

+0

이 대답에 감사드립니다. 주변을 둘러 보았을 때 브라우저 코드에서 작동하지 않는 모듈 식 솔루션이 발견되었습니다 : P – BenMQ

관련 문제