您的位置:首页 > Web前端 > Node.js

node.js学习随笔——20170809

2017-08-09 11:10 495 查看
PHP是单线程的,但是Apache是多线程的,会开启150个线程    

大数据时,如何解决高并发

让一个线程更快的结束。

可通过后弦的方法:优化SQL 、主键、缓存

一、node.js特点:

1、单线程异步事件驱动;快、耗内存多

2、事件驱动:因为异步,所示事件结束后,回调方法

3、node.js对于Windows,只支持win8及其以上

二、在node.js导入文件中,路径中不能有汉字,否则报 Error: Cannot find module 'xxx.js'

这时将路径中的汉字改为英文,则错误消失

三、node.js本身自带的类
1、var http=require('http');    //声明一个http服务
2、var URL=require('url');      //对浏览器地址进行截取,提供操作API
var url=URL.parse(request.url).pathname;
3、var fs=require('fs');        //可对文件进行操作的类
var data1=fs.readFileSync(path,'utf-8');     //该方法进行同步读取
var data2=fs.readFile(path,function(err,data){
if(err){
console.log(err);
}else{
console.log(data.toString());
}
});


四、node.js读写文件

node.js读写文件需要先导入读写的类,如下所示:

var file=require("fs");

文件读写各自分为同步和异步,即一共四种操作。

1、同步读
module.exports={
'readSync':function(path,res){          //res为传来的response对象
var message=file.readFileSync(path,'utf-8');
res.write("读取的内容为:"+message);
}
};
2、同步写
module.exports={
'writeSync':function(path,data,res){    //data为要写入的数据
file.writeFileSync(path,data);
res.write("同步写操作成功");
}
};
3、异步读

因为node.js是单线程异步的,因此若要在页面上显示文件内容或状态信息,需要使用闭包,否则服务会提前关闭。
module.exports={
'readFileAsync':function(path,recall){
file.readFile(path,function(err,data){
if(err){
recall(err);
}else{
recall(data);
}
});
}
};

//recall是调用者传来的闭包函数,函数体如下所示:
function recall(data){
response.write(data);
response.end("");
}
4、异步写
module.exports={
'writeFileAsync':function(path,data,recall){
file.writeFile(path,data,function(err){
if(err){
recall(err);
}else{
recall('异步写操作成功');
}
});
}
};
备注:经测试,上面每种读写方法内都可以使用回调函数

五、在node.js中的路径中,'./'为当前目录下,'../'为上一目录下

node.js中路径的使用分如下两种情况:

1、在使用 require()  导入类时

路径为相对于当前文件的路径

该文件B为根文件A中导入的,但在该文件B导入另外的文件C时,路径为C相对于B的

2、在引入资源时(资源为.html或图片等文件)

路径为相对于根文件的路径

文件B为根文件A中导入的,但在该文件B导入资源文件C时,路径为C相对于根文件A的

六、node.js在输出时,无论是 response.write() 输出到页面中,还是 console.log() 输出到控制台,都需要将信息转化为字符串,如 console.log(err.toString()); 因为初始数据是二进制形式的,而这种形式无法输出。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: