programing

node.js에서 전역 변수를 사용하는 방법은 무엇입니까?

copyandpastes 2021. 1. 16. 11:00
반응형

node.js에서 전역 변수를 사용하는 방법은 무엇입니까?


예를 들어 사용자 지정 로거를 사용하고 싶습니다.

logger = require('basic-logger'),
logger.setLevel('info')

var customConfig = {
showMillis: true,
showTimestamp: true
}

var log = new logger(customConfig)

console.log 대신 다른 모듈에서이 로거를 사용하는 방법은 무엇입니까?


대부분의 사람들은 전역 변수 사용을 권장하지 않습니다. 다른 모듈에서 동일한 로거 클래스를 원한다면 이것을 할 수 있습니다

logger.js

  module.exports = new logger(customConfig);

foobar.js

  var logger = require('./logger');
  logger('barfoo');

전역 변수를 원하면 다음을 수행 할 수 있습니다.

global.logger = new logger(customConfig);

global.myNumber; //Delclaration of the global variable - undefined
global.myNumber = 5; //Global variable initialized to value 5. 
var myNumberSquared = global.myNumber * global.myNumber; //Using the global variable. 

Node.js는 전역 변수와 관련하여 클라이언트 측 JavaScript와 다릅니다. Node.js 스크립트 맨 위에 var라는 단어를 사용한다고해서 'basic-logger'와 같이 필요한 모든 개체에서 변수에 액세스 할 수 있다는 의미는 아닙니다.

전역으로 만들려면 변수 이름 앞에 global이라는 단어와 점을 넣으십시오. 따라서 company_id를 글로벌로 지정하려면 global.company_id라고합니다. 하지만 조심하세요. global.company_id와 company_id는 같은 것이므로 다른 스크립트의 다른 변수와 같은 이름으로 전역 변수 이름을 지정하지 마십시오. 서버에서 실행될 다른 스크립트 또는 동일한 코드 내의 다른 위치 .


global 또는 GLOBAL을 사용하여 정의 할 수 있으며 nodejs는 둘 다 지원합니다.

예를 들어

global.underscore = require("underscore");

또는

GLOBAL.underscore = require("underscore");

변수가 이미 정의되어 있는지 확인하여 전역 확인을 사용할 때마다 제안합니다.

if (!global.logger){
  global.logger = require('my_logger');
}

더 나은 성능을 발견했습니다


다음 if문장 을 피하는 것이 더 좋습니다 .

global.logger || (global.logger = require('my_logger'));

앱이 TypeScript로 작성된 경우

(global as any).logger = // ...

또는

Object.assign(global, { logger: // ... })

그러나 나는 React Native가 __DEV__테스트 환경에 있을 때만 할 것입니다.


전역 변수는 현명하게 사용할 때 Node에서 사용할 수 있습니다 .

Node의 전역 변수 선언 :

a = 10;
GLOBAL.a = 10;
global.a = 10;

위의 모든 명령은 구문이 다른 동일한 작업을 수행합니다.

변경되지 않을 때 전역 변수 사용

다음은 전역 변수를 사용할 때 발생할 수있는 일의 예입니다.

// app.js
a = 10; // no var or let or const means global

// users.js
app.get("/users", (req, res, next) => {
   res.send(a); // 10;
});

// permissions.js
app.get("/permissions", (req, res, next) => {
   a = 11; // notice that there is no previous declaration of a in the permissions.js, means we looking for the global instance of a.
   res.send(a); // 11;
});

설명 :

먼저 사용자 경로를 실행하고 10 개를받습니다.

그런 다음 권한 경로를 실행하고 11을받습니다.

그런 다음 사용자 경로를 다시 실행하고 10 대신 11을 수신합니다.

전역 변수를 추월 할 수 있습니다!

이제 express 및 assignin res 개체를 전역으로 사용하는 방법을 생각해보십시오. 그러면 비동기 오류가 발생하고 서버가 종료됩니다.

전역 변수를 언제 사용합니까?

내가 말했듯이-var가 변경되지 않을 때. 어쨌든 process.env구성 파일 개체를 사용하는 것이 더 좋습니다 .

ReferenceURL : https://stackoverflow.com/questions/10987444/how-to-use-global-variable-in-node-js

반응형