创建模块
Node.js 提供了 exports 和 require 两个对
象,其中 exports 是模块公开的接口,require 用于从外部获取一个模块的接口,即所获取模块的 exports 对象。 让我们以一个例子来了解模块。创建一个 module.js 的文件,内容是: //module.js var name; exports.setName = function(thyName) { name = thyName; }; exports.sayHello = function() { console.log('Hello ' + name); }; 在同一目录下创建 getmodule.js,内容是: //getmodule.js var myModule = require('./module'); myModule.setName('BYVoid'); myModule.sayHello(); 运行node getmodule.js,结果是: Hello BYVoid 在以上示例中,module.js 通过 exports 对象把 setName 和 sayHello 作为模块的访问接口,在 getmodule.js 中通过 require('./module') 加载这个模块,然后就可以直接访问 module.js 中 exports 对象的成员函数了。覆盖exports
使用exports.Hello = Hello; 时,我们在其他文件中需要通过 require('./singleobject').Hello 来获取 Hello 对象,这略显冗余,可以用下面方法稍微简化:
可以通过module.exports = Hello;
包管理
npm i/install package安装本地包
npm i -g package安装全局包
npm link package source dest创建链接
npm init 初始化包的package.json
npm publish发布包
使用node-inspector调试
首先,使用 npm install -g node-inspector 命令安装 node-inspector,然后在终端中通过 node --debug-brk=5858 debug.js 命令连接你要除错的脚本的调试服务器,启动 node-inspector: $ node-inspector 在浏览器中打开 http://127.0.0.1:8080/debug?port=5858,即可显示出优雅的 Web 调试工具。
常用工具util
util.inherits(constructor, superConstructor)是一个实现对象间原型继承
的函数。JavaScript 的面向对象特性是基于原型的,与常见的基于类的不同。JavaScript 没有提供对象继承的语言级别特性,而是通过原型复制来实现的,具体细节我们在附录A中讨论在这里我们只介绍 util.inherits 的用法,示例如下: var util = require('util'); function Base() { this.name = 'base'; this.base = 1991; this.sayHello = function() { console.log('Hello ' + this.name); }; } Base.prototype.showName = function() { console.log(this.name);
}; //原型定义 function Sub() { this.name = 'sub'; } util.inherits(Sub, Base);
Base 有三个在构造函数内定义的属性和一个原型中定义的函数,通过 util.inherits 实现继承。注意,Sub 仅仅继承了 Base 在原型中定义的函数,而构造函数内部创造的 base 属性和 sayHello 函数都没有被 Sub 继承。
util.inspect()将对象转化为字符串,其他util.isArray()、 util.isRegExp()、util.isDate()、util.isError() 四个类型测试工具,以及 util.format()、util. debug() 等工具