Latest web development tutorials

전역 객체를 Node.js를

자바 스크립트는 전역 객체 (전역 개체)라는 특별한 목적을 가지고, 그것을 및 모든 속성은 프로그램, 글로벌 변수에 어디서나 액세스 할 수 있습니다.

브라우저 자바 스크립트는 일반적으로 글로벌 윈도우 객체, Node.js를가 전역 전역 객체이며, (세계 자체를 제외한) 모든 전역 변수는 전역 객체의 재산입니다.

Node.js를 우리 필요없이 전역 속성에 직접 액세스, 응용 프로그램에 포함합니다.


글로벌 객체와 전역 변수

전역 변수 호스트로 가장 기본적인 글로벌 역할. 정의의 ECMAScript으로 다음과 같은 조건을 글로벌 변수 사항 :

  • 바깥 쪽 변수 정의;
  • 전역 객체의 속성;
  • 변수 암시 적 정의 (직접 할당 정의되지 않은 변수).

당신이 전역 변수를 정의 할 때, 변수는 전역 객체의 속성, 그 반대가 될 것이다. 모든 사용자 코드는 현재 모듈의 일부이며, 모듈 자체가 최 컨텍스트 없기 때문에 Node.js를로하면, 최 변수를 정의 할 수 있습니다.

주의 : 항상 글로벌 변수의 도입을 방지하기 위해 변수를 정의 VAR을 사용하여 전역 변수 네임 스페이스를 오염 커플 코드의 위험이 증가하기 때문이다.


__filename

__filename 현재 실행되는 스크립트의 파일명을 나타내고있다.이 출력 파일 및 커맨드 라인 파라미터를하고 파일 이름을 지정한다 위치 절대 경로 반드시 동일하지 않다. 모듈의 경우, 반환 값은 모듈 파일의 경로입니다.

다음과 같이 코드를 파일 main.js을 만듭니다

// 输出全局变量 __filename 的值
console.log( __filename );

다음과 같이 집행 main.js 파일의 코드는 다음과 같습니다

$ node main.js
/web/com/w3big/nodejs/main.js

__dirname

__dirname은 현재 실행중인 스크립트의 디렉토리가 위치한 나타냅니다.

다음과 같이 코드를 파일 main.js을 만듭니다

// 输出全局变量 __dirname 的值
console.log( __dirname );

다음과 같이 집행 main.js 파일의 코드는 다음과 같습니다

$ node main.js
/web/com/w3big/nodejs

에서는 setTimeout (CB, MS)

에서는 setTimeout (CB, MS) 전역 함수는 지정된 밀리 세컨드 (밀리 초) 수 (CB) 후 지정된 기능을 수행한다.:에서는 setTimeout () 함수는 한 번만 지정됩니다.

이것은 핸들 값은 타이머를 나타낸다 반환한다.

다음과 같이 코드를 파일 main.js을 만듭니다

function printHello(){
   console.log( "Hello, World!");
}
// 两秒后执行以上函数
setTimeout(printHello, 2000);

다음과 같이 집행 main.js 파일의 코드는 다음과 같습니다

$ node main.js
Hello, World!

사항 clearTimeout (t)

사항 clearTimeout (t)는 타이머를 만들에서는 setTimeout ()를 전달하기 전에 전역 함수를 중지하는 데 사용됩니다.에서는 setTimeout () 함수에 의해 매개 변수t는 계산기를 만들 수 있습니다.

다음과 같이 코드를 파일 main.js을 만듭니다

function printHello(){
   console.log( "Hello, World!");
}
// 两秒后执行以上函数
var t = setTimeout(printHello, 2000);

// 清除定时器
clearTimeout(t);

다음과 같이 집행 main.js 파일의 코드는 다음과 같습니다

$ node main.js

하여 setInterval (CB, MS)

하여 setInterval (CB, MS) 전역 함수는 지정된 밀리 세컨드 (밀리 초) 수 (CB) 후 지정된 기능을 수행한다.

이것은 핸들 값은 타이머를 나타낸다 반환한다. 당신은 타이머를 지우려면위해 clearInterval (t) 기능을 사용할 수 있습니다.

하여 setInterval () 메소드 ()를 위해 clearInterval 때까지 함수를 호출 할 것이라고 또는 창이 닫힙니다.

다음과 같이 코드를 파일 main.js을 만듭니다

function printHello(){
   console.log( "Hello, World!");
}
// 两秒后执行以上函数
setInterval(printHello, 2000);

다음과 같이 집행 main.js 파일의 코드는 다음과 같습니다

$ node main.js
안녕하세요, 세계! 안녕하세요, 세계! 안녕하세요, 세계! 안녕하세요, 세계! 안녕하세요, 세계! ...

위의 프로그램은 출력을 한 번 2 초마다 "안녕하세요, 세계!"것, 그리고 당신은Ctrl + C 버튼을 누를 때까지 실행을 계속 영구적으로 될 것입니다.


콘솔

이후 사실상의 표준 브라우저되고, 인터넷 익스플로러 (Internet Explorer)의 JScript 엔진에서 제공하는 디버깅 도구입니다 표준 출력을 제공하는 콘솔 콘솔.

Node.js를 일관된 행동과 표준 출력 스트림 (표준 출력) 또는 표준 오류 스트림 (표준 에러) 출력 문자에 사용되는 콘솔 개체의 습관을 제공하며,이 표준을 따른다.

콘솔 방법

다음은 콘솔 개체입니다 :

아니오. 방법 및 설명
(1) CONSOLE.LOG ([자료] [... ])
줄 바꿈과 표준 출력 스트림 인쇄 문자와 종료합니다. 하나의 매개 변수이 매개 변수의 출력 문자열이있는 경우이 방법은 몇 가지 매개 변수를 사용합니다. 여러 인수, C 언어의 printf () 명령 출력 형식 같은 곳이있는 경우.
console.info ([자료] [... ])
P 명령은 CONSOLE.LOG 차이는 출력 텍스트, 나머지는 파란색 느낌표가 표시됩니다 것입니다 크롬뿐만 아니라, 크기가 아닌이며, 명령의 역할은 정보 메시지를 반환합니다.
3 console.error ([자료] [... ])
출력 오류 메시지. 오류가 포크를 발생하면 콘솔은 빨간색으로 표시됩니다.
4 console.warn ([자료] [... ])
메시지를 경고 출력됩니다. 콘솔은 노란색 느낌표가 나타납니다.
(5) console.dir (OBJ [옵션])
확인 (검사)하는 데 사용되는 개체 및 읽기 쉬운 디스플레이 및 인쇄 형식을 지원합니다.
6 console.time (라벨)
시간의 출력 시작 시간.
(7) console.timeEnd (라벨)
타이밍의 끝을 나타내는 종료 시간.
8 console.trace (메시지 [...])
코드가 현재이 테스트 기능이 도움이 실행 스택에 호출 경로를 실행, 그냥 줄에 console.trace 가입의 기능을 테스트 할 수 있습니다.
9 console.assert (값 [메시지] [ , ...])
변수 또는 표현식이 참인지를 판단를 들어, 첫 번째 매개 변수가 표현이고 두 번째 인수는 문자열, 두 개의 매개 변수를했다. 첫 번째 인수가 false 인 경우에만 출력은 어떤 결과가없는 것, 두 번째 인수 될 것입니다.
CONSOLE.LOG은 () : 표준 출력 스트림에 출력하고 개행 문자로 끝납니다.

하나의 매개 변수이 매개 변수의 출력 문자열이있는 경우 CONSOLE.LOG는 여러 매개 변수를 사용할 수 있습니다. 여러 인수, C 언어의 printf () 명령 출력 형식 같은 곳이있는 경우.

첫 번째 매개 변수는 매개 변수없이, 단지 개행 문자를 인쇄하는 문자열입니다.

console.log('Hello world'); 
console.log('byvoid%diovyb'); 
console.log('byvoid%diovyb', 1991); 

영업 실적은 다음과 같습니다 :

Hello world 
byvoid%diovyb 
byvoid1991iovyb 
  • console.error () : CONSOLE.LOG ()와 동일한 사용하지만, 표준 에러 스트림 출력.
  • console.trace () : 표준 출력 현재 호출 스택에 오류 스트림입니다.
console.trace();

영업 실적은 다음과 같습니다 :

Trace: 
at Object.<anonymous> (/home/byvoid/consoletrace.js:1:71) 
at Module._compile (module.js:441:26) 
at Object..js (module.js:459:10) 
at Module.load (module.js:348:31) 
at Function._load (module.js:308:12) 
at Array.0 (module.js:479:10) 
at EventEmitter._tickCallback (node.js:192:40)

다음과 같이 코드를 파일 main.js을 만듭니다

console.info("程序开始执行:");

var counter = 10;
console.log("计数: %d", counter);

console.time("获取数据");
//
// 执行一些代码
// 
console.timeEnd('获取数据');

console.info("程序执行完毕。")

다음과 같이 집행 main.js 파일의 코드는 다음과 같습니다

$ node main.js
程序开始执行:
计数: 10
获取数据: 0ms
程序执行完毕

방법

프로세스는 전역 객체 속성 전역 변수이다.

그것이 객체 Node.js를 프로세스의 현재 상태를 설명하는 데 사용되는, 상기 운영체제에 대한 간단한 인터페이스를 제공한다. 일반적으로는 기본 명령 줄 프로그램을 작성하고, 궁극적으로, 그것으로 처리 할 수 ​​있습니다. 다음은 부재 오브젝트 처리의 가장 많이 사용되는 방법의 일부를 소개한다.

아니오. 이벤트 및 설명
(1) 출구
프로세스가 종료 할 준비가되면 발생합니다.
beforeExit
이 이벤트는 트리거 될 때 노드 빈 이벤트 루프, 그리고 다른 준비. 일반적 때 노드가 계속되도록 'beforeExit'청취자가 비동기 적으로 호출 될 수있다 출구 노드를 배치 할 프로세스는 없지만.
3 의 uncaughtException
예외가 다시 이벤트 루프에 버블 링 할 때,이 이벤트를 트리거합니다. 당신이 예외에 모니터를 추가하는 경우, 기본 조치가 발생하지 않습니다 (스택 추적하고 종료 인쇄).
4 이벤트로 <br> 프로세스가 신호를 수신 할 때 때 신호가트리거된다. 등등 SIGINT, SIGUSR1과 같은 신호 표준 POSIX 신호 이름의 목록을 참조하십시오.

다음과 같이 코드를 파일 main.js을 만듭니다

process.on('exit', function(code) {

  // 以下代码永远不会执行
  setTimeout(function() {
    console.log("该代码不会执行");
  }, 0);
  
  console.log('退出码为:', code);
});
console.log("程序执行结束");

다음과 같이 집행 main.js 파일의 코드는 다음과 같습니다

$ node main.js
程序执行结束
退出码为: 0

종료 상태 코드

다음과 같은 종료 상태 코드는 다음과 같습니다

상태 코드 제목 및 설명
(1) 캐치되지 않는 치명적인 예외
이 캐치되지 않는 예외, 그것은 처리 또는 도메인의 uncaughtException 핸들러되지 않았습니다.
사용하지 않은
보유
3 내부 자바 스크립트 구문 분석 오류
노드 처리를 개시 할 때 에러를 분석 스크립트 소스 코드를 일으켰다. 아주 드물게 경우에만 노드의 개발에 없을 것이다.
4 내부 자바 스크립트 평가 오류
JavaScript 소스 노드 시작 프로세스 함수를 평가하는 경우 오류를 돌려 준다. 아주 드물게 경우에만 노드의 개발에 없을 것이다.
(5) 치명적 오류
복구 할 수없는 오류가 V8 치명적. 일반적으로 표준 오류, 콘텐츠에 인쇄 : 치명적인 오류
6 비 함수 내부 예외 핸들러
캐치되지 않는 예외, 예외 핸들러 안에 든에 기능 설정하고 호출 할 수 없습니다.
(7) 내부 예외 핸들러 런타임 오류
캐치되지 않는 예외, 자신을 처리 할 수있는 예외 핸들러는 예외가 발생합니다. 예를 들어, process.on ( '의 uncaughtException') 또는 domain.on ( '오류')는 예외가 발생합니다.
8 사용하지 않은
보유
9 잘못된 인수
그것은 어떤 값으로 매개 변수 또는 매개 변수에 알 수있다.
(10) 내부 자바 스크립트 런타임 오류
매우 드문 노드 처리 오류를 시작할 때 자바 스크립트 소스 코드 노드의 개발이있을 것이다 때만 발생한다.
(12) 잘못된 디버그 인수
--debug 파라미터 설정 및 / 또는 --debug-BRK하지만 잘못된 포트를 선택했다.
> (128) 신호 종료
노드는 SIGKILL 또는 SIGHUP 같은 치명적인 신호를 수신하면, 종료 코드는 신호 코드를 더한 128이다. 이것은 표준 유닉스 연습, 종료 신호에 높은 코드입니다.

프로세스 속성

프로세스는 많은 유용한 특성, 우리는 더 나은 시스템을 제어 할 수있는 상호 작용의 용이성을 제공합니다 :

수. 부동산 및 설명
(1) 표준 출력
표준 출력 스트림.
열려진
표준 오류 스트림입니다.
3 표준 입력
표준 입력 스트림입니다.
4 변수는 argv
변수는 argv 속성은 명령 줄 스크립트 실행 구성에 다양한 매개 변수의 배열을 반환합니다. 첫 부재가 항상 노드이고, 상기 제 2 부재는 스크립트 파일 이름이며, 나머지 부재 스크립트 파일의 매개 변수이다.
(5) execPath
현재 스크립트 실행 노드 바이너리의 절대 경로를 반환합니다.
6 execArgv
명령 줄 스크립트 노드 실행 스크립트 파일 커맨드 라인 파라미터 사이에서 실행된다 하에서 배열 부재 인 리턴.
(7) ENV
개체, 현재 쉘 환경 변수의 멤버를 돌려줍니다
8 ExitCode를
프로세스에 대한 종료 코드, 경우 종료 코드를 지정하지 않고, process.exit () 종료에 의해 재능 과정.
9 버전
노드 버전, 같은 v0.10.18.
(10) 버전
노드 버전 및 종속성을 포함하는 속성입니다.
(11) 설정
현재 노드를 포함하는 객체는 자바 스크립트 구성 옵션 실행 파일을 컴파일하는 데 사용됩니다. 이 같은 실행 ./configure 실행 스크립트는 "config.gypi"파일을 생성합니다.
(12) PID
현재의 프로세스 번호.
(13) 표제
프로세스 이름은 기본값은 값을 사용자 정의 할 수 있습니다, "노드"입니다.
(14) 아치
현재 CPU 아키텍처 : '팔', 'IA32'또는 '64'.
(15) 플랫폼
프로그램을 실행 위치 플랫폼 '다윈', 'FreeBSD의', '리눅스', '은 SunOS'또는 ​​'는 Win32'
(16) mainModule
다른 방법을 require.main. 주요 모듈은 런타임에 변경되면 다른 점, require.main 이전 모듈로 돌아 계속할 수 있습니다. 이는 모두 동일한 모듈 참조 것으로 여겨진다.

다음과 같이 코드를 파일 main.js을 만듭니다

// 输出到终端
process.stdout.write("Hello World!" + "\n");

// 通过参数读取
process.argv.forEach(function(val, index, array) {
   console.log(index + ': ' + val);
});

// 获取执行路局
console.log(process.execPath);


// 平台信息
console.log(process.platform);

다음과 같이 집행 main.js 파일의 코드는 다음과 같습니다

$ node main.js
Hello World!
0: node
1: /web/www/node/main.js
/usr/local/node/0.10.36/bin/node
darwin

방법 참조 설명서

프로세스는 대화 형 시스템의 더 나은 제어를 용이하게하기 위해 유용한 많은 방법을 제공한다 :

아니오. 방법 및 설명
(1) () 중단
이것은 노드 중단 트리거 이벤트를 유발할 것이다. 이 노드를 종료하고 코어 파일을 생성합니다.
CHDIR (디렉토리)
작업이 던져 실패 할 경우, 프로세스의 현재 작업 디렉토리를 변경합니다.
3 CWD ()
현재 프로세스의 작업 디렉토리를 돌려줍니다
4 종료 ([코드])
지정된 코드 프로세스 마지막. 생략 된 경우, 코드 0을 사용한다.
(5) getgid ()
프로세스 그룹 ID를 가져옵니다 (getgid (2) 참조). 그룹이 디지털 ID를 인수 한 경우, 지명하지.
주 :이 함수는 POSIX 플랫폼에서 사용 (예를 들어, 비 - 윈도우 안드로이드) 될 수있다.
6 setgid를 (ID)
그룹 식별 설정 처리 (setgid를 (2) 참조). 당신은 디지털 ID 또는 그룹 이름을받을 수 있습니다. 지정하면 그룹 이름은 디지털 ID를 기다리는 차단하기 위해 해결됩니다.
주 :이 함수는 POSIX 플랫폼에서 사용 (예를 들어, 비 - 윈도우 안드로이드) 될 수있다.
(7) getuid ()
사용자 식별 프로세스를 가져 오기합니다 (getuid (2)). 이 숫자 사용자 ID가 아닌 사용자 이름입니다.
주 :이 함수는 POSIX 플랫폼에서 사용 (예를 들어, 비 - 윈도우 안드로이드) 될 수있다.
8 이 setuid (ID)
사용자 ID 설정 처리 (이 setuid (2) 참조). 디지털 ID 또는 문자열 이름을 받기. 지정하면 그룹 이름은 디지털 ID를 기다리는 차단하기 위해 해결됩니다.
주 :이 함수는 POSIX 플랫폼에서 사용 (예를 들어, 비 - 윈도우 안드로이드) 될 수있다.
9 기능 getgroups ()
프로세스 그룹 ID의 배열을 돌려줍니다. POSIX 시스템은이 있음을 보증하지 않습니다,하지만 Node.js를이 보장됩니다.
주 :이 함수는 POSIX 플랫폼에서 사용 (예를 들어, 비 - 윈도우 안드로이드) 될 수있다.
(10) 을 setgroups (그룹)
설정 프로세스 그룹 ID. 당신이 루트 권한을 가지고, 또는 CAP_SETGID 용량을 가질 필요가 전혀 작동 할 수있는 권한이 있습니다.
주 :이 함수는 POSIX 플랫폼에서 사용 (예를 들어, 비 - 윈도우 안드로이드) 될 수있다.
(11) initgroups (사용자, extra_group)
은 / etc / 그룹을 읽고, 그룹 액세스 목록을 초기화하고, 모든 그룹 구성원이 있습니다. 당신이 루트 권한을 가지고, 또는 CAP_SETGID 용량을 가질 필요가 전혀 작동 할 수있는 권한이 있습니다.
주 :이 함수는 POSIX 플랫폼에서 사용 (예를 들어, 비 - 윈도우 안드로이드) 될 수있다.
(12) 죽 (PID [신호])
프로세스에 신호를 보낸다. pid는 프로세스 ID 및 신호가 전송되는 신호를 기술하는 문자열이다. 신호 이름은 'SIGINT'또는 'SIGHUP'와 같은 문자열입니다. 생략 할 경우, 신호는 'SIGTERM'일 것이다.
(13) MemoryUsage의 ()
이것은 노드 메모리 상태 바이트가 사용하는 과정을 설명하는 객체를 반환한다.
(14) nextTick (콜백)
현재 이벤트 루프의 끝되면, 함수를 다시 호출합니다.
(15) umask를 ([마스크])
설정 또는 프로세스 파일 마스크를 참조하십시오. 자식 프로세스는 부모 프로세스에서 마스크를 상속. 마스크 인수가 유효한 경우, 이전 마스크를 반환한다. 그렇지 않으면, 현재의 마스크를 반환한다.
(16) 가동 시간 ()
초 노드의 수는 이미 실행중인 돌려줍니다.
(17) hrtime ()
폼 [초 나노초] 어레이의 현재 프로세스의 시간 해상도. 그것은 어떤 과거 이벤트와 관련된다. 이 값은 따라서 클럭 드리프트에 영향을 미치지 날짜와는 아무 상관이 없습니다. 주요 목적은, 프로그램의 성능을 측정하기 위해 정확한 시간 간격으로된다.
현재 process.hrtime에게 결과를 전달하기 전에 ()는 기준 및 측정 시간 간격 동안, 둘 사이의 시차로 되돌아갑니다.

다음과 같이 코드를 파일 main.js을 만듭니다

// 输出当前目录
console.log('当前目录: ' + process.cwd());

// 输出当前版本
console.log('当前版本: ' + process.version);

// 输出内存使用情况
console.log(process.memoryUsage());

다음과 같이 집행 main.js 파일의 코드는 다음과 같습니다

$ node main.js
当前目录: /web/com/w3big/nodejs
当前版本: v0.10.36
{ rss: 12541952, heapTotal: 4083456, heapUsed: 2157056 }