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
'programing' 카테고리의 다른 글
빈 IEnumerator 반환 (0) | 2021.01.16 |
---|---|
Rails 콘솔 세션에서 경로 인식 (0) | 2021.01.16 |
JavaScript에서 MD5 파일 해시를 생성하는 방법은 무엇입니까? (0) | 2021.01.16 |
Iphone SDK는 외부를 클릭하여 ipad에서 Modal ViewController를 닫습니다. (0) | 2021.01.16 |
두 NSDate 객체의 차이점 — 결과도 NSDate (0) | 2021.01.16 |