programing

로컬 변수에 액세스할 수 있는 node.js의 외부 js 파일을 로드하고 실행하시겠습니까?

skycolor 2023. 7. 26. 21:44
반응형

로컬 변수에 액세스할 수 있는 node.js의 외부 js 파일을 로드하고 실행하시겠습니까?

간단한 작업이 가능합니까?include('./path/to/file')node.js에 있는 명령 유형?

제가 원하는 것은 로컬 변수에 액세스하고 스크립트를 실행하는 것입니다.사람들은 일반적으로 어떻게 단순한 헬로 월드보다 큰 node.js 프로젝트를 구성합니까? (완전하게 기능하는 동적 웹사이트)

예를 들어 다음과 같은 디렉터리가 필요합니다.

/models

/views

...기타

그냥 해요require('./yourfile.js');

외부 액세스를 원하는 모든 변수를 전역 변수로 선언합니다.그래서 대신에

var a = "hello"그럴 것이다.

GLOBAL.a="hello"아니면 그냥

a = "hello"

이것은 분명히 나쁜 것입니다.여러분은 세계적인 범위를 오염시키고 싶지 않을 것입니다.대신 제안 방법은 다음과 같습니다.export당신의 직무/업무

MVC 패턴을 원한다면 Geddy를 보세요.

모듈을 정의하는 패턴인 CommonJS를 이해해야 합니다.항상 나쁜 짓만 하는 글로벌 범위를 남용해서는 안 됩니다. 대신 다음과 같은 '내보내기' 토큰을 사용할 수 있습니다.

// 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

또한 레일즈나 시나트라 같은 것을 사용하고 싶다면 익스프레스를 추천합니다(URL을 올리지 못했습니다, 스택 오버플로가 부끄럽습니다!)

노드에 대한 코드를 작성하는 경우 Ivan이 설명한 대로 노드 모듈을 사용하는 것이 확실합니다.

그러나 이미 작성되어 노드를 인식하지 못하는 JavaScript를 로드해야 하는 경우에는 모듈을 사용하는 것이 좋습니다.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(…)글로벌 컨텍스트에 액세스할 수 없습니다.

외부 Javascript 파일의 함수나 객체를 로드할 계획이라면 다음 코드를 사용하여 이 컨텍스트에 로드하십시오. runIn을 기록하십시오.다음 컨텍스트 메서드:

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

언급URL : https://stackoverflow.com/questions/4481058/load-and-execute-external-js-file-in-node-js-with-access-to-local-variables

반응형