2016-06-18 6 views
0

필자는 require를 사용하지 않고 js 파일을 포함하고 싶었습니다. 왜냐하면 require를 사용하지 않고 js 파일을 변수에 연결하고 직접 호출하고 싶은 일부 함수가 있기 때문입니다. 내가 어떻게 해 ? 그것은 나쁜 습관입니까? 의 내가 다음과 같은 tool.js가 있다고 가정 해 봅시다 : 내가 foo는 호출 할 수 싶습니다 app.jsNodeJS : require를 사용하지 않고 자바 스크립트 코드 스 니펫을 어떻게 포함시킬 수 있습니까?

var tool= require('tools.js'); 

tool.foo(); 

에서

function foo() { 
    log.debug("foo"); 
}  
exports.foo = foo; 

내가 피하고 싶은 것은 이것이다 마치 app.js에 정의 된 것처럼 모듈을 만들지 않고; like

foo(); 
+1

======= app.js ======,이 같은 글로벌 사용할 필요가) : http://stackoverflow.com/questions/5797852/in-node-js-how-do-i-include-functions-from-my-other-files –

+0

링크를 클릭하면 피하고 싶은 것을 정확하게 보여줍니다. – Xsmael

+0

예 세 번째 답변이 맞습니다! 미안, 방금 처음 2 장 확인 했어. 감사! – Xsmael

답변

2

파일을 요구하고 전역 개체를 사용하여 변수에 할당하지 않고 해당 기능을 사용할 수 있습니다.

file1.js

function logger(){ 
    console.log(arguments); 
} 

global.logger = logger; 

file2.js

require('./file1'); 

logger('ABC'); 

이 방법은 변수 범위 지정을 제거 할 잠재적 변수 이름과 충돌로 이어지는 글로벌 네임 스페이스를 오염 것입니다.

+0

file1.js에'global.logger = logger;'가 없으면이 방법이 효과가 있습니까? coz 내가 튜토리얼에서 그것을하고있는 누군가를 보았다. 그러나 그것은 나를 위해 일하지 않았다. 그런데 경고에 감사했다. – Xsmael

+0

그것은 작동하지 않을 것이고, 처음에는 그 기능을 사용할 수 없다는 것을 알았다. @Xsmael – Gabs00

+0

이것은 매우 이상하다! 이제 작동한다. 나도 마찬가지야. 왜 그런지 모르겠다. – Xsmael

0

당신은 세 번째 대답을 확인하십시오 (당신은 여기에 대한 답을 찾을 수 있습니다

global.foo= require('tools.js'); // declare as global 
foo(); // can be called from all files