include('./path/to/file')
node.js에서 간단한 유형의 명령 을 수행하는 것이 쉬운가요 ?
내가하고 싶은 일은 로컬 변수에 액세스하고 스크립트를 실행하는 것입니다. 사람들은 일반적으로 단순한 hello world보다 큰 node.js 프로젝트를 어떻게 구성합니까? (모든 기능을 갖춘 동적 웹 사이트)
예를 들어 다음과 같은 디렉토리를 갖고 싶습니다.
/models
/views
… 등
답변
그냥 require('./yourfile.js');
외부 액세스하려는 모든 변수를 전역 변수로 선언하십시오. 그래서 대신
var a = "hello"
그것은 될 것이다
GLOBAL.a="hello"
아니면 그냥
a = "hello"
이것은 분명히 나쁘다. 글로벌 범위를 오염시키고 싶지 않습니다. 대신 제안 방법은 export
함수 / 변수에 있습니다.
MVC 패턴을 원한다면 Geddy를 살펴보십시오.
답변
모듈을 정의하는 패턴 인 CommonJS를 이해해야합니다. 항상 나쁜 일인 GLOBAL 범위를 남용해서는 안됩니다. 대신 ‘내보내기’토큰을 사용할 수 있습니다.
// circle.js
var PI = 3.14; // PI will not be accessible from outside this module
exports.area = function (r) {
return PI * r * r;
};
exports.circumference = function (r) {
return 2 * PI * r;
};
그리고 우리 모듈을 사용할 클라이언트 코드 :
// client.js
var circle = require('./circle');
console.log( 'The area of a circle of radius 4 is '
+ circle.area(4));
이 코드는 node.js 문서 API에서 추출되었습니다.
http://nodejs.org/docs/v0.3.2/api/modules.html
또한 Rails 또는 Sinatra와 같은 것을 사용하려면 Express를 권장합니다 (URL을 게시 할 수 없었습니다.
답변
Node 용 코드를 작성하는 경우 Ivan이 설명한 Node 모듈을 사용하는 것은 의심의 여지가 없습니다.
그러나 이미 작성되었고 노드를 인식하지 못하는 JavaScript를로드해야하는 경우 vm
모듈을 사용하는 것이 좋습니다 eval
.
예를 들어 다음은 내 execfile
모듈 입니다.이 모듈 은 전역 컨텍스트 path
에서 스크립트를 평가합니다 context
.
var vm = require("vm");
var fs = require("fs");
module.exports = function(path, context) {
var data = fs.readFileSync(path);
vm.runInNewContext(data, context, path);
}
또한 참고 :로로드 된 모듈 require(…)
은 전역 컨텍스트에 액세스 할 수 없습니다.
답변
외부 자바 스크립트 파일의 함수 또는 객체를로드하려는 경우 다음 코드를 사용하여이 컨텍스트를로드하십시오. runInThisContext 메소드를 참고하십시오.
var vm = require("vm");
var fs = require("fs");
var data = fs.readFileSync('./externalfile.js');
const script = new vm.Script(data);
script.runInThisContext();
// here you can use externalfile's functions or objects as if they were instantiated here. They have been added to this context.
답변
@Shripad 와 @Ivan 의 대답을 확장하면서 Node.js의 표준 module.export 기능 을 사용하는 것이 좋습니다 .
상수 파일 ( 예 🙂 constants.js
에서 다음과 같이 상수를 작성합니다.
const CONST1 = 1;
module.exports.CONST1 = CONST1;
const CONST2 = 2;
module.exports.CONST2 = CONST2;
그런 다음 상수 를 사용 하려는 파일에서 다음 코드를 작성하십시오.
const {CONST1 , CONST2} = require('./constants.js');
const { ... }
이전 에 구문 을 본 적이 없다면 할당을 파괴하는 것 입니다.
답변
부활해서 죄송합니다. child_process 모듈을 사용하여 node.js에서 외부 js 파일을 실행할 수 있습니다
var child_process = require('child_process');
//EXECUTE yourExternalJsFile.js
child_process.exec('node yourExternalJsFile.js', (error, stdout, stderr) => {
console.log(`${stdout}`);
console.log(`${stderr}`);
if (error !== null) {
console.log(`exec error: ${error}`);
}
});