一.概念
- 进程:为程序的执行提供必备的环境(相当于车间);
- 线程:计算机中最小的计算单位,负责执行线程中的环境(相当于工人);
- 单线程:一个人做一件事;
- 多线程:多个人做同一件事;
- 一般而言,多线程的性能比单线程好;
- Js 的执行采用单线程;
- Node.js:是一个能够在服务端运行的JavaScript的开放源代码,跨平台JavaScript的运行环境;
- 申明变量:直接写是局部变量,如 var a=10;因为系统会自动把他写到函数里面,全局变量申明:a=10;
- require(“”),参数是引入该文件的文件路径(必须以.或者..开头),引入的文件是对象,不能直接使用,需要变量接收才能继续操作,如:
var md=require("./node01.js");
10.将局部变量暴露给其他js文件,采用exports属性(如:exports.var a=10);
二.npm的命令
- npm -v查看npm版本
- npm version 查看所有模块的版本
- npm search 包名 搜索包
- npm install/i 包名 安装包
- npm remove/r 包名 移除包
- npm install 包名 –save 安装包并添加到包的依赖中
- npm install 下载当前项目所依赖的包
- npm install 包名 -g(全局安装包—一般都是工具)
- 进入某个js文件: cd 路径
三.buffer
1.buffer:
-在客户端和服务器交换数据时,储存二进制数据起缓冲作用;类似于数组;
-buffer的长度不可修改,因为他直接作用于内存上;
//将字符串保存在buffer中
//var buf1=Buffer.from("hello node");
//console.log(buf1.toString());
//创建含有10个字节的buffer
var buf2 =Buffer.alloc(10);
buf2[0]=20;
//通过索引操作buffer中的元素
for(var i=0;i<buf2.length-1;i++){
console.log(buf2[i]);
}
同步文件写入
//fs模块是核心模块,直接引入;
var fs=require("fs");
//打开文件
var fd= fs.openSync("start.txt","w");//同步文件写入,openSync(第一个参数是文件路径,第二个w是可写,r是可读)
//向文件写入内容
fs.writeSync(fd,"今天是晴天");
//关闭标识符
fs.closeSync(fd);
异步文件写入
/引入fs模块
var fs=require("fs");
//打开文件
fs.open("hello2.txt","w",function(err,fd){
if(!err){
//如果没有出错,直接写入内容
fs.write(fd,"这是异步文件写入的内容",function(err){
if(!err){
console.log("写入成功");
}
});
fs.close(fd,function(err){
if(!err){
console.log("文件关闭")
}
});
}
})
简单文件写入
//引入fs模块
//a是打开文件用于追加, 如果不存在则创建
var fs= require("fs");
fs.writeFile("hello4.txt","恢复鳄梨和夫人",{flag:"a"},function(err){
if(!err){
console.log("写入成功");
}
});
流式文件写入
var fs = require("fs");
//创建流
var ws = fs.createWriteStream("hi.txt");
//监听流的开关
ws.once("open",function(){
console.log("开");
});
ws.once("open",function(){
console.log("关");
});
//写入流
ws.write("1");
ws.write("12");
ws.write("123");
ws.end();
流式文件读取
var fs=require("fs");
//创建一个可读流
var rs=fs.createReadStream("01.jpg");
var ws=fs.createWriteStream("a.jpg");
rs.once("open",function(){
console.log("可读流打开");
});
rs.once("close",function(){
console.log("关闭");
});
//data事件自动读取可读流,并通过参数data返回
/*rs.on("data",function(data){
console.log(data);
});*/
//pipe()将可读流读到的数据写入可写流中;
rs.pipe(ws);
简单文件读取
var fs=require("fs");
fs.readFile("C:/Users/荣/Desktop/01.jpg",function(err,data){
if(!err){
console.log(data);
}
});
var fs = require("fs");
//existsSync查询当前路径是否存在,存在则返回true,不存在则返回false
var isexists=fs.existsSync("a.jpg");
console.log(isexists);
var fs = require("fs");
//stat()描述当前文件的信息
//size 文件大小
//isFile()是否是一个文件
//isDirectory是否是一个文件夹
fs.stat( "01.jpg",function(err,stats){
if(!err){
console.log(stats.size);
console.log(stats.isFile());
console.log(stats.isDirectory());
}
});
var fs = require("fs");
//unlinkSync()删除该文件
fs.unlinkSync("a.jpg");
fs.unlink("hello.txt",function(){
console.log("已删除");
});
var fs = require("fs");
//readdir()列出当前路径下的所有文件
var n =fs.readdirSync(".");
console.log(n);
fs.readdir(".",function(err,file){
console.log(file);
});
var fs = require("fs");
/*truncateSync();方法截取文件,按字节截取*/
fs.truncateSync("hello2.txt","3");
var fs = require("fs");
//建立文件夹
/*mkdirSync()建立一个文件夹*/
fs.mkdirSync("ha");
//rmdirSync()删除一个文件夹
fs.rmdirSync("ha");
//renameSync();给该文件重命名
fs.renameSync("ha.txt","C:\\Users\\荣\\Desktop\\1013\\he.txt");
//监听文件的变化
fs.watchFile("hello3.txt",function(){
console.log("文件发生变化");
});