전역 객체?
- 전역 객체는 언제 어디에서나 사용이 가능하다.
- 함수 안에서 선언한 변수는 그 함수 안에서만 유효하다.
- 하지만 전역 객체는 함수 안과 밖 모두에서 사용할 수 있도록 범위가 제한되어 있지 않은 객체다.
- 따라서 어디에서나 사용이 가능하다.
- 대표적인 전역 객체로는 console, process, exports가 있다.
전역 변수?
- 전역 변수 또한 마찬가지로 어디에서나 사용이 가능하다.
- 예)
console.log('현재 실행한 파일 이름 : %s', __filename);
console.log('현재 실행한 파일의 폴더 경로: %s', __dirname); - 여기서의 __filename과 __dirname이 전역 변수이다.
*console.dir() 메서드는 객체 안에 들어있는 모든 속성을 콘솔에 출력해준다.
프로세스 객체 살펴보기
- 프로세스 객체는 프로그램을 실행했을 때 만들어지는 프로세스 정보를 다루는 객체이다.
- 프로세스 객체의 주요 속성과 메서드는 아래와 같다.
- argv: 프로세스를 실행할 때 전달되는 파라미터 정보
console.log('argv 속성의 파라미터 수: ' + process.argv.length);
console.dir(process.argv);
>>> dir를 하게 되면 node.exe 파일의 이름이 첫 번째 파라미터가 되고, js파일의 패스가 두 번째 파라미터가 된다. 값은 배열 [] 기호를 사용해 만들어진다. - env: 환경 변수 정보
내가 현재 쓰고 있는 프로그램의 설정상태는 이렇다.
이런식으로 현업에서는 dev와 prod로 개발과 사용 설정을 다른 파일로 분리해서 사용한다.
이 경우에는 사용자 정의 환경 변수[profile]를 만든 것이라 볼 수 있다.
process.env['OS'] 이런식으로 시스템 환경변수에도 접근이 가능하다.
const profile = process.env.profile const devConfig = require('./dev') const prodConfig = require('./prod') module.exports = { dev: devConfig, prod: prodConfig }[profile]
- exit(): 프로세스를 끝내는 메서드
- argv: 프로세스를 실행할 때 전달되는 파라미터 정보
노드에서 모듈 사용하기
- 하나의 함수 안에 모든 기능을 넣는 것보다 기능별로 여러 개의 함수로 나눈 후 필요한 함수만 가져다 사용하면 다른 곳에서도 이 함수를 재사용 할 수 있기 때문에 훨씬 효율적으로 프로그램을 만들 수 있고 프로그램 관리가 수월해진다.
- 메인 파일의 코드 중에서 독립적인 기능은 별도 파일로 분리 가능. -> 이렇게 분리한 파일을 모듈이라고 부름.
- 노드는 CommonsJs의 표준 스펙에 따라 모듈을 사용할 수 있게 하므로 이 과정에서 exports 객체를 사용한다.
- 모듈을 불러올 때는 require() 메소드를 사용하고 모듈로 만들어 둔 파일의 이름을 이 메서드의 파라미터로 전달한다.
- exports 외에 module.exports도 사용 가능.
- module.exports에는 하나의 변수나 함수 또는 객체를 직접 할당한다.
- 일반적으로는 객체를 그대로 할당하고 이 객체에 넣어 둔 변수나 함수를 메인 파일에서도 사용할 수 있게 된다.
위의 내 코드를 보면 module.exports를 통해 dev, prod라는 변수를 뽑아서 쓸 수 있게 해주는 것이다. - app.js에 보면 이런식으로 profile=dev 를 꺼내다 쓸 수 있다.
"scripts": {
"start": "node bin/www",
"dev": "profile=dev node bin/www",
"prod": "profile=prod node bin/www",
"test": "jest"
},
- 모듈 호출 시 기준
- 예를 들어 require('./dev') 이렇게 했다면 먼저 dev.js가 있는지 찾아본 뒤 있으면 불러오고 만약 없다면 dev 폴더가 있는지 찾아보고 dev 폴더 안의 index.js를 불러온다.
외장 모듈 사용하기
- npm, yarn 등으로 외부 패키지를 받아서 사용할 수 있다.
- 만약 사내 내부망 등을 이용하면 'behind a proxy'라는 에러를 마주할 수도 있다.
- 이런 경우에는 proxy 설정을 통해 해결하는 방법이 있다.
- 터미널에 일단 netstat을 쳐서 ESTABLISHED로 표시된 주소 중 프록시 서버가 있는지 확인한다.
- 그 다음 서버의 호스트 이름과 포트가 예를 들어 proxy.abc.com:8080인 경우
- 아래와 같이 입력해본다.
npm config set proxy http://proxy.abc.com:8080
npm config set https-proxy http://proxy.abc.com:8080
npm config set strict-ssl false
- 이런식으로 npm 으로 설치한 모듈은 [node_modules] 폴더 안에 설치되게 된다.
- 그리고 각 프로젝트당 설치된 패키지의 정보를 알려주는 package.json을 만들기 위해서는 터미널에 npm init을 입력하면 된다.
npm init
- 이렇게 만든 package.json을 다른 곳에 옮긴 후 터미널에서 npm install 을 입력해주면 package.json에 명시된 모든 패키지들이 한꺼번에 설치되게 된다.
'Backend > node.js' 카테고리의 다른 글
6. Postgresql을 node.js에 연결하기 (0) | 2022.04.19 |
---|---|
5. 노드로 웹 서버 만들기 (0) | 2022.04.19 |
4. 노드의 기본 기능 (1) | 2022.04.19 |
3. node를 이해하기 위한 자바스크립트의 기본 (0) | 2022.04.19 |
1. node js는 무엇일까? (0) | 2022.04.18 |