Node.js

一、指令输出:

1.编辑器写一个js文件,控制台进入该文件目录 执行 node xxx.js

2.进入REPL模式(即输入-求值-输出循环):指令node 启动一个 JavaScript 的交互式 shell

二、调试工具supervisor:

node.js在修改代码之后需要重新启动 新代码才会生效,安装了supervisor之后,当检测到代码有改动的话就会重启项目。(已达到方便调试)

三、异步式 I/O 与事件式编程

node最大的特点就是异步式I/O(或者非阻塞I/O)与事件紧密结合的编程

阻塞(block):当线程遇到磁盘读写或者网络通信时(统称为IO操作)通常要耗费很长的时间,这时操作系统就会剥夺这个线程的CPU使用权,使其暂停,同时将资源让给其他线程,这种线程调度方式成为阻塞。

异步式I/O(或者非阻塞I/O)则针对所有I/O操作不采用阻塞的策略,当线程遇到 I/O 操作时,不会以阻塞的方式等待 I/O 操作 的完成或数据的返回,而只是将 I/O 请求发送给操作系统,继续执行下一条语句。当操作系统完成 I/O 操作时,以事件的形式通知执行 I/O 操作的线程,线程会在特定时候处理这个 事件。为了处理异步 I/O,线程必须有事件循环,不断地检查有没有未处理的事件,依次予 以处理。

单线程事件驱动的异步式 I/O 和多线程阻塞式 I/O

四、EventEmitter类

events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装

 EventEmitter.on(event, listener) 为指定事件注册一个监听器,接受一个字符串event 和一个回调函数listener。
 EventEmitter.emit(event, [arg1], [arg2], [...]) 发射 event 事件,传递若干可选参数到事件监听器的参数表。
 EventEmitter.once(event, listener) 为指定事件注册一个单次监听器,即监听器最多只会触发一次,触发后立刻解除该监听器。
 EventEmitter.removeListener(event, listener) 移除指定事件的某个监听器,listener 必须是该事件已经注册过的监听器。

 EventEmitter.removeAllListeners([event]) 移除所有事件的所有监听器, 如果指定 event,则移除指定事件的所有监听器。

 

你可以通过require("events");来访问该模块。

//event.js 文件
var EventEmitter = require('events').EventEmitter; 
var event = new EventEmitter(); 
event.on('some_event', function() { //注册监听器
    console.log('some_event 事件触发'); 
}); 
setTimeout(function() { 
    event.emit('some_event');    //发送事件
}, 1000); 

当我们要把某个包作为工程运行时的一部分时,通过本地模式获取,如果要 在命令行下使用,则使用全局模式安装

本地模式:npm install xxx

全局模式:npm install -g xxx

//在 Linux/Mac 上使用 npm install -g 安装时有可能需要 root 权限, 因为 /usr/local/lib/node_modules/ 通常只有管理员才有权写入。


npm 提供了一个有趣的命令 npm link,它的功能是在本地包和全局包之间创建符号链 接。我们说过使用全局模式安装的包不能直接通过 require 使用,但通过 npm link命令 可以打破这一限制。举个例子,我们已经通过 npm install -g express 安装了 express, 5 这时在工程的目录下运行命令:

$ npm link express
./node_modules/express -> /usr/local/lib/node_modules/express

我们可以在 node_modules 子目录中发现一个指向安装到全局的包的符号链接。通过这 种方法,我们就可以把全局包当本地包来使用了。

//npm link 命令不支持 Windows


Util

util.inherits(constructor, superConstructor) 是一个实现对象间原型继承的函数。

//只继承函数不继承属性

util.inspect(object,[showHidden],[depth],[colors]) 是一个将任意对象转换 为字符串的方法

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值