node基础

1 fs模块用于对系统文件及目录进行读写操作。
var fs = require(‘fs’); // 载入fs模块
使用require(‘fs’)载入fs模块,模块中所有方法都有同步和异步两种形式
fs.unlinkSync(’/tmp/shiyanlou’); // Sync 表示是同步方法

fs.readFile(filename,[option],callback) 方法读取文件。
readFile的回调函数接收两个参数,err是读取文件出错时触发的错误对象,data是从文件读取的数据。
fs.readFile(’./test.txt’, function(err, data) {
// 读取文件失败/错误
if (err) {
throw err;
}
// 读取文件成功 console.log(data);
//结果<Buffer 6c 69 6e 65 20 6f 6e 65 0a 6c 69 6e 65 20 74 77 6f 0a>
//这是原始二进制数据在缓冲区中的内容要显示文件内容可以使用toString()或者设置输出编码
});
设置utf-8编码写法:
fs.readFile(’./test.txt’, ‘utf-8’, function(err, data)

使用fs.writeFile(filename,data,[options],callback)写入内容到文件。
var fs = require(‘fs’); // 引入fs模块
// 写入文件内容(如果文件不存在会创建一个文件)
// 写入时会先清空文件
fs.writeFile(’./test2.txt’, ‘test test’, function(err) {
if (err) {
throw err;
}

console.log('Saved.');

// 写入成功后读取测试
fs.readFile('./test2.txt', 'utf-8', function(err, data) {
    if (err) {
        throw err;
    }
    console.log(data);
});

});

因为默认flag=‘w’是写,会清空文件,想要追加,可以传递一个flag参数,如下。
var fs = require(‘fs’); // 引入fs模块
// 写入文件内容(如果文件不存在会创建一个文件)
// 传递了追加参数 { ‘flag’: ‘a’ }
fs.writeFile(’./test2.txt’, ‘test test’, { ‘flag’: ‘a’ }, function(err) {
if (err) {
throw err;
}

console.log('Saved.');

// 写入成功后读取测试
fs.readFile('./test2.txt', 'utf-8', function(err, data) {
    if (err) {
        throw err;
    }
    console.log(data);
});

});
flag传值,r代表读取文件,w代表写文件,a代表追加

url模块用于解析url,

2 path模块用于处理和转换文件路径。

path.dirname(filepath) 获取路径

path.basename(filename)
path.basename(filepath)实际上是获取了路径的最后一部分,
而不是真正的获取到了文件名,但是在实际应用中最后的字符往往就是我们的文件名

如果只想获取文件名,不需要扩展名则可以使用第二个参数,第二个参数就是指定的文件扩展名

//练习,写一个函数,提供文件路劲,返回获取的文件名

bodyParser中间件用来解析http请求体,是express默认使用的中间件之一。
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false })); //一般是post请求,因为只有post请求才会携带请求头
//bodyParser.json是用来解析json数据格式的。
//bodyParser.urlencoded则是用来解析我们通常的form表单提交的数据,
//也就是请求头中包含这样的信息: Content-Type: application/x-www-form-urlencoded
常见的四种请求头
application/x-www-form-urlencoded 常见的form提交
multipart/form-data 文件提交
application/json 提交json格式的数据
text/xml 提交xml格式的数据
bodyParser.urlencoded 模块用于解析req.body的数据,解析成功后覆盖原来的req.body,如果解析失败则为 {}

Multer
multer用于处理文件上传的nodejs中间件,主要跟express框架搭配使用
var upload = multer({dest:‘uploads/’});
app.use(multer({dest:"./uploads"}).array(“file”));
/*
dest:目的地   包括后面的uploads文件夹可以自己定义 默认路径是整个项目文件夹  
array()内是你要上传的file类型input标签的name名称

EventEmitter模块
首先先了解一下EventEmitter模块的基本用法,EventEmitter本质上是一个观察者模式的实现,所谓观察者模式:
它定义了对象间的一种一对多的关系,让多个观察者对象同时监听某一个主题对象,当一个对象发生改变时,所有依赖于它的对象都将得到通知。

因此最基本的EventEmitter功能,包含了一个观察者和一个被监听的对象,对应的实现就是EventEmitter中的on和emit
//简单用法
var events=require(‘events’);
var eventEmitter=new events.EventEmitter();
eventEmitter.on(‘say’,function(name){
    console.log(‘Hello’,name);
})
eventEmitter.emit(‘say’,‘Jony yu’);
//简单实现eventemitter

class EventEmitter{
    constructor(){
       this.handler={};
    }
    on(eventName,callback){
       if(!this.handles){
         this.handles={};
       }
       if(!this.handles[eventName]){
         this.handles[eventName]=[];
       }
       this.handles[eventName].push(callback);
    }
    emit(eventName,…arg){
        if(this.handles[eventName]){
      for(var i=0;i<this.handles[eventName].length;i++){
        this.handles[eventName]i;
      }}}}

addListener(eventName,listener)的作用是为指定事件添加一个监听器. 其别名为on
    removeListener(eventName,listener)的作用是为移除某个事件的监听器. 其别名为off

var events=require(‘events’);
var emitter=new events.EventEmitter();
function hello1(name){
  console.log(“hello 1”,name);
}
function hello2(name){
  console.log(“hello 2”,name);
}
emitter.addListener(‘say’,hello1);
emitter.addListener(‘say’,hello2);
emitter.removeAllListeners(‘say’);
emitter.emit(‘say’,‘Jony’);
//removeAllListeners移除了所有关于say事件的监听
//因此没有任何输出

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值