nodejsの旅-003-基礎知識-大域作用域と大域関数
8814 ワード
グローバルスコープとグローバル関数
Nodejsでは、1つのモジュールで定義された変数、方法はこのモジュールでのみ利用可能ですが、exportオブジェクトの使用によってモジュールの外部に転送されても良いです.しかし、まだグローバルスコープが存在しています.モジュールをロードする必要がなくても変数、関数、クラスを使用できます.
グローバルスコープ
Nodejsでglobalオブジェクトを定義し、Nodejsのグローバル名前空間を表しています.
大域関数setTimeoutの役割は、クライアントjavascriptのsetTimeout関数の役割と類似しており、数ミリ秒遅延して、フィードバック関数を実行する.
set Timeout(cb,ms,[arg],[...])
前の二つのパラメータは必須入力であり、後のことはコールバック関数cbのパラメータとして作用します.
グローバル関数set Intervalの役割はクライアントjavascriptのsetInterval関数の役割と似ています.タイマーの役割をして、数秒ごとにコールバック関数を実行します.
set Interval(cb,ms,[arg],[...]
同じ最初の二つのパラメータは必須であり、後のパラメータはコールバック関数のパラメータとして作用します.
set Timeout方法とset Interval方法は、タイマーオブジェクトを返します.タイマーオブジェクトにはunref方法とref方法があります.
unrefメソッドは、コールバック関数をキャンセルすることです.
unrefメソッドを呼び出した後、ref方法でタイマーを回復してコールバック関数を呼び出すことができます.
モジュールに関するグローバル関数とオブジェクト
1、require関数を使ってモジュールをロードする
モジュールをロード
require.cacheオブジェクトは、既にロードされているモジュールのすべてのキャッシュエリアを表しています.
Nodejsでは、1つのモジュールで定義された変数、方法はこのモジュールでのみ利用可能ですが、exportオブジェクトの使用によってモジュールの外部に転送されても良いです.しかし、まだグローバルスコープが存在しています.モジュールをロードする必要がなくても変数、関数、クラスを使用できます.
グローバルスコープ
Nodejsでglobalオブジェクトを定義し、Nodejsのグローバル名前空間を表しています.
console.log(global);
{ ArrayBuffer: [Function: ArrayBuffer],
Int8Array: { [Function: Int8Array] BYTES_PER_ELEMENT: 1 },
Uint8Array: { [Function: Uint8Array] BYTES_PER_ELEMENT: 1 },
Uint8ClampedArray: { [Function: Uint8ClampedArray] BYTES_PER_ELEMENT: 1 },
Int16Array: { [Function: Int16Array] BYTES_PER_ELEMENT: 2 },
Uint16Array: { [Function: Uint16Array] BYTES_PER_ELEMENT: 2 },
Int32Array: { [Function: Int32Array] BYTES_PER_ELEMENT: 4 },
Uint32Array: { [Function: Uint32Array] BYTES_PER_ELEMENT: 4 },
Float32Array: { [Function: Float32Array] BYTES_PER_ELEMENT: 4 },
Float64Array: { [Function: Float64Array] BYTES_PER_ELEMENT: 8 },
DataView: [Function: DataView],
DTRACE_NET_SERVER_CONNECTION: [Function],
DTRACE_NET_STREAM_END: [Function],
DTRACE_NET_SOCKET_READ: [Function],
DTRACE_NET_SOCKET_WRITE: [Function],
DTRACE_HTTP_SERVER_REQUEST: [Function],
DTRACE_HTTP_SERVER_RESPONSE: [Function],
DTRACE_HTTP_CLIENT_REQUEST: [Function],
DTRACE_HTTP_CLIENT_RESPONSE: [Function],
global: [Circular],
process:
{ title: 'node',
version: 'v0.10.32',
moduleLoadList:
[ 'Binding evals',
'Binding natives',
'NativeModule events',
'NativeModule buffer',
'Binding buffer',
'NativeModule assert',
'NativeModule util',
'NativeModule module',
'NativeModule path',
'NativeModule tty',
'NativeModule net',
'NativeModule stream',
'NativeModule _stream_readable',
'NativeModule _stream_writable',
'NativeModule _stream_duplex',
'NativeModule _stream_transform',
'NativeModule _stream_passthrough',
'NativeModule timers',
'Binding timer_wrap',
'NativeModule _linklist',
'Binding cares_wrap',
'Binding tty_wrap',
'NativeModule vm',
'NativeModule fs',
'Binding fs',
'Binding constants',
'NativeModule readline',
'NativeModule console',
'Binding signal_wrap',
'NativeModule string_decoder' ],
versions:
{ http_parser: '1.0',
node: '0.10.32',
v8: '3.14.5.9',
ares: '1.9.0-DEV',
uv: '0.10.28',
zlib: '1.2.3',
modules: '11',
openssl: '1.0.1i' },
arch: 'x64',
platform: 'darwin',
argv: [ 'node' ],
execArgv: [],
env:
{ SHELL: '/bin/bash',
TERM: 'xterm-256color',
TMPDIR: '/var/folders/8m/338n1zwx6b54drwph5s0hq780000gn/T/',
Apple_PubSub_Socket_Render: '/private/tmp/com.apple.launchd.u8dfW4kGIc/Render',
OLDPWD: '/Users/wanq/WebstormProjects/NodejsPro',
USER: 'wanq',
SSH_AUTH_SOCK: '/private/tmp/com.apple.launchd.wfqCjimqs6/Listeners',
__CF_USER_TEXT_ENCODING: '0x1F5:0x19:0x34',
PATH: '/Users/wanq/DevTools/mongodb/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin',
PWD: '/Users/wanq/WebstormProjects/NodejsPro/lesson002',
XPC_FLAGS: '0x0',
XPC_SERVICE_NAME: '0',
SHLVL: '1',
HOME: '/Users/wanq',
LOGNAME: 'wanq',
LC_CTYPE: 'zh_CN.UTF-8',
_: '/usr/local/bin/node' },
pid: 9514,
features:
{ debug: false,
uv: true,
ipv6: true,
tls_npn: true,
tls_sni: true,
tls: true },
_needImmediateCallback: false,
execPath: '/usr/local/bin/node',
debugPort: 5858,
_getActiveRequests: [Function],
_getActiveHandles: [Function],
_needTickCallback: [Function],
reallyExit: [Function],
abort: [Function],
chdir: [Function],
cwd: [Function],
umask: [Function],
getuid: [Function],
setuid: [Function],
setgid: [Function],
getgid: [Function],
getgroups: [Function],
setgroups: [Function],
initgroups: [Function],
_kill: [Function],
_debugProcess: [Function],
_debugPause: [Function],
_debugEnd: [Function],
hrtime: [Function],
dlopen: [Function],
uptime: [Function],
memoryUsage: [Function],
binding: [Function],
_usingDomains: [Function],
_tickInfoBox: { '0': 1, '1': 0, '2': 0 },
_events: { SIGWINCH: [Function] },
domain: null,
_maxListeners: 10,
EventEmitter: { [Function: EventEmitter] listenerCount: [Function] },
_fatalException: [Function],
_exiting: false,
assert: [Function],
config: { target_defaults: [Object], variables: [Object] },
nextTick: [Function: nextTick],
_currentTickHandler: [Function: _nextTick],
_nextDomainTick: [Function: _nextDomainTick],
_tickCallback: [Function: _tickCallback],
_tickDomainCallback: [Function: _tickDomainCallback],
_tickFromSpinner: [Function: _tickFromSpinner],
maxTickDepth: 1000,
stdout: [Getter],
stderr: [Getter],
stdin: [Getter],
openStdin: [Function],
exit: [Function],
kill: [Function],
addListener: [Function],
on: [Function],
removeListener: [Function] },
GLOBAL: [Circular],
root: [Circular],
Buffer:
{ [Function: Buffer]
isEncoding: [Function],
poolSize: 8192,
isBuffer: [Function: isBuffer],
byteLength: [Function],
concat: [Function] },
setTimeout: [Function],
setInterval: [Function],
clearTimeout: [Function],
clearInterval: [Function],
setImmediate: [Function],
clearImmediate: [Function],
console: [Getter],
module:
{ id: 'repl',
exports:
{ writer: [Object],
_builtinLibs: [Object],
REPLServer: [Object],
start: [Function],
repl: [Object] },
parent: undefined,
filename: '/Users/wanq/WebstormProjects/NodejsPro/lesson002/repl',
loaded: false,
children: [],
paths:
[ '/Users/wanq/WebstormProjects/NodejsPro/lesson002/repl/node_modules',
'/Users/wanq/WebstormProjects/NodejsPro/lesson002/node_modules',
'/Users/wanq/WebstormProjects/NodejsPro/node_modules',
'/Users/wanq/WebstormProjects/node_modules',
'/Users/wanq/node_modules',
'/Users/node_modules',
'/node_modules' ] },
require:
{ [Function: require]
resolve: [Function],
main: undefined,
extensions: { '.js': [Function], '.json': [Function], '.node': [Function] },
registerExtension: [Function],
cache: {} } }
set Timeout関数とclearTimeout関数大域関数setTimeoutの役割は、クライアントjavascriptのsetTimeout関数の役割と類似しており、数ミリ秒遅延して、フィードバック関数を実行する.
set Timeout(cb,ms,[arg],[...])
前の二つのパラメータは必須入力であり、後のことはコールバック関数cbのパラメータとして作用します.
//5 callBackFun
var timer = setTimeout(callBackFun,5000);
// callBackFun
clearTimeout(timer);
set Interval関数とclear Interval関数グローバル関数set Intervalの役割はクライアントjavascriptのsetInterval関数の役割と似ています.タイマーの役割をして、数秒ごとにコールバック関数を実行します.
set Interval(cb,ms,[arg],[...]
同じ最初の二つのパラメータは必須であり、後のパラメータはコールバック関数のパラメータとして作用します.
// 5 callBackFun
var timer = setInterval(callBackFun, 5000);
// callBackFun
clearInterval(timer);
タイマーオブジェクトのunref方法とref方法set Timeout方法とset Interval方法は、タイマーオブジェクトを返します.タイマーオブジェクトにはunref方法とref方法があります.
unrefメソッドは、コールバック関数をキャンセルすることです.
unrefメソッドを呼び出した後、ref方法でタイマーを回復してコールバック関数を呼び出すことができます.
モジュールに関するグローバル関数とオブジェクト
1、require関数を使ってモジュールをロードする
モジュールをロード
var foo = require('../foo.js');
var http = require('http');
testModule.js/**
* Created by wanq on 14/11/13.
*/
var testVar = 'This is a variable form testModule.js';
exports.testVar = testVar;
app.js/**
* Created by wanq on 14/11/14.
*/
var testModule = require('./testModule.js');
console.log(testModule.testVar);
2、require.reolve関数を使って完全なモジュール名を調べます.require.resolve('./testModule.js');// testModule.js
3、require cache対象require.cacheオブジェクトは、既にロードされているモジュールのすべてのキャッシュエリアを表しています.