[javascript] 로컬 변수에 액세스하여 node.js에서 외부 js 파일을로드하고 실행합니까?

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}`);
    }
});


답변