1.安装
1)进入官网https://nodejs.org/en/下载nodejs,windows系统按如图所示下载;
2)安装,点击下载好的程序,安装步骤一步一步安装,安装好的界面如图;在cmd中输入 npm -v显示版本号,则表示安装成功;
2.npm使用介绍
2.1npm指令
1)npm -v 版本号查询
2)npm uninstall express 卸载 Node.js 模块
3)npm ls 查看包是否还存在
4)npm update express 更新模块
5)npm search express 搜索模块
2.2node.js REPL
我们可以输入以下命令来启动 Node 的终端:node
2.2.1简单表达式运算
node.js可以使用加减乘除
2.2.2使用变量
变量声明需要使用 var 关键字,如果没有使用 var 关键字变量会直接打印出来。使用 var 关键字的变量可以使用 console.log() 来输出变量。
2.2.3下划线(_)变量
你可以使用下划线(_)获取上一个表达式的运算结果:
2.2.4REPL命令
-
ctrl + c - 退出当前终端。
-
ctrl + c 按下两次 - 退出 Node REPL。
-
ctrl + d - 退出 Node REPL.
-
向上/向下 键 - 查看输入的历史命令
-
tab 键 - 列出当前命令
-
.help - 列出使用命令
-
.break - 退出多行表达式
-
.clear - 退出多行表达式
-
.save filename - 保存当前的 Node REPL 会话到指定文件
-
.load filename - 载入当前 Node REPL 会话的文件内容。
3.EventEmitter事件
3.1实例
events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。可以通过require("events");来访问该模块。
var events = require('events'); //引入events模块 var myEmitter = new events.EventEmitter(); //创建EventEmitter对象 myEmitter.on('someEvent', function(message) { console.log('事件触发'+message); }); myEmitter.emit("someEvent","我是实例"); //调用函数
on 函数用于绑定事件函数,emit 属性用于触发一个事件。EventEmitter 对象如果在实例化时发生错误,会触发 error 事件。当添加新的监听器时,newListener 事件会触发,当监听器被移除时,removeListener 事件被触发。
3.2方法
1)addListener(event, listener) 为指定事件添加一个监听器到监听器数组的尾部。
2)on(event, listener) 为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数。
3)once(event, listener) 为指定事件注册一个单次监听器,即 监听器最多只会触发一次,触发后立刻解除该监听器。
4)removeListener(event, listener) 移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器。 它接受两个参数,第一个是事件名称,第二个是回调函数名称。
5)removeAllListeners([event]) 移除所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器。
6)setMaxListeners(n) 默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。 setMaxListeners 函数用于提高监听器的默认限制的数量。
7)emit(event, [arg1], [arg2], [...]) 按监听器的顺序执行执行每个监听器,如果事件有注册监听返回 true,否则返回 false。
3.3error事件
EventEmitter 定义了一个特殊的事件 error,它包含了错误的语义,我们在遇到 异常的时候通常会触发 error 事件。当 error 被触发时,EventEmitter 规定如果没有响 应的监听器,Node.js 会把它当作异常,退出程序并输出错误信息。我们一般要为会触发 error 事件的对象设置监听器,避免遇到错误后整个程序崩溃。例如:
var events = require('events'); var emitter = new events.EventEmitter(); emitter.emit('error');
4.文件系统
Node.js 提供一组类似 UNIX(POSIX)标准的文件操作API。 Node 导入文件系统模块(fs)语法如下所示:
var fs = require("fs")
4.1同步和异步
Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync()。
异步的方法函数最后一个参数为回调函数,回调函数的第一个参数包含了错误信息(error)。比起同步,异步方法性能更高,速度更快,而且没有阻塞。
4.2实例
var fs = require("fs"); // 异步读取 fs.readFile('input.txt', function (err, data) { if (err) { return console.error(err); } console.log("异步读取: " + data.toString()); }); // 同步读取 var data = fs.readFileSync('input.txt'); console.log("同步读取: " + data.toString()); console.log("程序执行完毕。");
var fs=require("fs"); var readMe=fs.readFileSync("a.txt","utf8"); console.log(readMe);
4.3打开文件
以下为在异步模式下打开文件的语法格式:
fs.open(path, flags[, mode], callback)
-
path- 文件的路径。
-
flags- 文件打开的行为。
-
mode- 设置文件模式(权限),文件创建默认权限为 0666(可读,可写)。
-
callback- 回调函数,带有两个参数如:callback(err, fd)。
var fs = require("fs"); // 异步打开文件 console.log("准备打开文件!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("文件打开成功!"); });
4.4获取文件信息
以下为通过异步模式获取文件信息的语法格式:
fs.stat(path, callback)
fs.stat(path)执行后,会将stats类的实例返回给其回调函数。可以通过stats类中的提供方法判断文件的相关属性。例如判断是否为文件:
var fs = require('fs'); fs.stat('a.txt', function (err, stats) { console.log(stats.isFile()); //true })
4.5写入文件
以下为异步模式下写入文件的语法格式:
fs.writeFile(file, data[, options], callback)
writeFile 直接打开文件默认是 w 模式,所以如果文件存在,该方法写入的内容会覆盖旧的文件内容。
var fs = require("fs"); console.log("准备写入文件"); fs.writeFile('aa.txt', '我是通 过fs.writeFile 写入文件的内容', function(err) { if (err) { return console.error(err); } console.log("数据写入成功!"); console.log("--------我是分割线-------------") console.log("读取写入的数据!"); fs.readFile('aa.txt', function (err, data) { if (err) { return console.error(err); } console.log("异步读取文件数据: " + data.toString()); }); });
4.6读取文件
以下为异步模式下读取文件的语法格式:
fs.read(fd, buffer, offset, length, position, callback)
callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。
fd - 通过 fs.open() 方法返回的文件描述符。
buffer - 数据写入的缓冲区。
offset - 缓冲区写入的写入偏移量。
length - 要从文件中读取的字节数。
position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
var fs = require("fs"); var buf = new Buffer.alloc(1024); console.log("准备打开已存在的文件!"); fs.open('input.txt', 'r+', function(err, fd) { if (err) { return console.error(err); } console.log("文件打开成功!"); console.log("准备读取文件:"); fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){ if (err){ console.log(err); } console.log(bytes + " 字节被读取"); // 仅输出读取的字节 if(bytes > 0){ console.log(buf.slice(0, bytes).toString()); } }); });
4.7删除文件
fs.unlink(path, callback)
使用unlink可以直接删除文件,例:
var fs=require('fs'); fs.unlink('a.txt', function(err) { if (err) { return console.error(err); } console.log("文件删除成功!"); });
引入 events 模块