Skip to content

基础模块 #42

@coconilu

Description

@coconilu

1. events

类似于DOM的事件模型,如果你想要为你的对象能够触发事件的话,可以继承NodeJS提供的EventEmitter类。
NodeJS中许多内置的类都继承自EventEmitter类,比如net.Serverfs.ReadStreamStream
API:

两个全局事件,‘newListener’和‘removeListener’分别表示`EventEmitter`的子类添加或移除监听器的时候触发的事件。
EventEmitter.defaultMaxListeners,全局设置`EventEmitter`的单个事件的监听器数量。

addListener(eventName, listener),添加 listener 函数到名为 eventName 的事件的监听器数组的末尾。
emit(eventName[, ...args]),按监听器的注册顺序,同步地调用每个注册到名为 eventName 事件的监听器,并传入提供的参数。
eventNames(),返回一个列出触发器已注册监听器的事件的数组。
getMaxListeners(),返回 EventEmitter 当前的最大监听器限制值。
listenerCount(eventName),返回正在监听名为 eventName 的事件的监听器的数量。
listeners(eventName),返回名为 eventName 的事件的监听器数组的副本。
off(eventName, listener),removeListener的别名。
on(eventName, listener),addListener的别名。
once(eventName, listener),添加一个单次 listener 函数到名为 eventName 的事件。
prependListener(eventName, listener),添加 listener 函数到名为 eventName 的事件的监听器数组的开头。 
prependOnceListener(eventName, listener),添加一个单次 listener 函数到名为 eventName 的事件的监听器数组的开头。
removeAllListeners([eventName]),移除全部或指定 eventName 的监听器。
removeListener(eventName, listener),从名为 eventName 的事件的监听器数组中移除指定的 listener。
setMaxListeners(n),修改指定的 EventEmitter 实例的限制。
rawListeners(eventName),返回一个监听某具名为eventName事件的数组的拷贝,包括任何被包装的事件(例如由.once()创建的事件)。

2. global

全局变量在所有模块中均可使用。

Buffer,用于处理二进制数据。
console,用于打印 stdout 和 stderr。
global,全局的命名空间对象。
process,进程对象。
URL,URL对象。
URLSearchParams,URLSearchParams对象。
Timer,定时器:
    setImmediate(callback[, ...args])
    setInterval(callback, delay[, ...args])
    setTimeout(callback, delay[, ...args])
    clearImmediate(immediateObject)
    clearInterval(intervalObject)
    clearTimeout(timeoutObject)

3. module

以下变量虽然看起来像全局变量,但实际上不是,它们是属于模块作用域的:

1. __dirname,当前模块的文件夹名称。
2. __filename,当前模块的文件名称---解析后的绝对路径。
3. exports,这是一个对于 module.exports 的更简短的引用形式。
4. module,对当前模块的引用。
5. require(),引入模块。

A. require()

1. require.cache
2. require.main
3. require.resolve,使用内部的 require() 机制查询模块的位置, 此操作只返回解析后的文件名,不会加载该模块。
4. require.resolve.paths,返回一个数组,其中包含解析 request 过程中被查询的路径。 如果 request 字符串指向核心模块(例如 http 或 fs),则返回 null。

通过 require.resovle 可以提前在文件中作为常量定义, 那么在应用启动时就可以抛异常, 而不是等到具体操作文件的时候才抛异常。

B. module

module.children,被该模块引用的模块对象。
module.exports,导出的对象。
module.filename,模块的完全解析后的文件名。
module.id,模块的标识符。 通常是完全解析后的文件名。
module.loaded,模块是否已经加载完成,或正在加载中。
module.parent,最先引用该模块的模块。
module.paths,模块的搜索路径。
module.require(id)

每一个模块开始,都会执行exports = module.exports = {},真正导出的对象是module.exports

参考

events
globals
module
Node.js 的 require.resolve 简介

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions