这是我参与11月更文挑战的第六天,活动详情请查看:2021最后一次更文挑战
前言:
前台的服务器
运行在服务端的JavaScript,基于chrome JavaScript运行时建立的一个平台。Node.js是一个事件驱动I/O服务端JavaScript环境,基于Google的V8引擎,V8引擎执行Javascript的速度非常快,性能非常好。
我们在vue项目中经常使用的npm,是node.js一起的管理工具,解决的了很多的node在代码部署上的问题。
创建应用程序的步骤
- 引入 required 模块:我们可以使用 require指令来载入 Node.js 模块。
- 创建服务器:服务器可以监听客户端的请求,类似于 Apache 、Nginx 等 HTTP 服务器。
- 接收请求与响应请求:服务器很容易创建,客户端可以使用浏览器或终端发送 HTTP 请求,服务器接收请求后返回响应数据。
//使用 require 指令来载入 http 模块,并将实例化的 HTTP 赋值给变量 http1
var http1 = require('http');
//使用http.createServer()方法创建服务器,返回值为一个对象
http1.createServer(function (request, response) {
// 发送 HTTP 头部
// HTTP 状态值: 200 : OK
// 内容类型: text/plain
response.writeHead(200, {'Content-Type': 'text/plain'});
// 发送响应数据 "Hello World"
response.end('Hello World\n');
}).listen(8888);
// 终端打印如下信息
console.log('Server running at http://127.0.0.1:8888/');
文件的读取 || 写入
1、写入文件
1)write-string
/*
*fs.write(fd, string[, position[, encoding]], callback)
--*/
-----------------------------------------------------------
/*
* r+:在原文内容的基础上替换相同长度的字符
eg:原:12345-----修:JAVA5
* a+:在原文件后面添加内容
eg:原12345----修:12345 JAVA
* */
let fs=require('fs');
//打开文件
fs.open('../A/in.txt','a+',(err,fd)=>{
fs.write(fd,'JAVA',(err)=>{
})
});
2)write-buffer
/*
*
* fs.write(fd, buffer[, offset[, length[, position]]], callback)
* */
let fs=require('fs');
let buf=Buffer.from('Welcome');
fs.open('../A/in.txt','a+',(err,fd)=>{
fs.write(fd,buf,(err)=>{
console.log("成功写入!")
})
});
/*
*fs.write(fd, buffer[, offset[, length[, position]]], callback)
*/
let fs=require('fs');
let buf=Buffer.from('Welcome');
fs.open('../A/in.txt','a+',(err,fd)=>{
/*截取buf的长度为3,下角标从1开始的字符,追加到原有的文件后面
* eg:原123456---修:123456elc
* */
fs.write(fd,buf,1,3,(err)=>{
console.log("成功写入!")
})
3)writeFile
/*
* fs.writeFile(file, data[, options], callback)
*/
let fs=require('fs');
let txt='Hello Node.js';
let fileName='../A/message.txt';
let saved_txt='The file has been saved!';
const data = Buffer.from(txt);
fs.writeFile(fileName, data, (err) => {
if (err) throw err;
console.log(saved_txt);
});
writeFile()
和write()
的区别:
相同点
:
1)当fs.writeFile()的参数是文件描述符时,则相当于使用fs.write();
2)在文件描述符的情况下,文件不会被替换;且原始数据会被保留,新数据会被写入某个位置(开头或结束);
不同点:
1)fs.write()可能仅写入缓冲区的一部分,并且将需要重试以写入剩余数据。
2)fs.writeFile()将重试直到数据被完全写入(或发生错误)。
同步写入
fs.writeSync(fd,buffer[,offset[,length[,position]]])
fs.writeSync(fd,string[,position[,encoding]])
fs.writeFileSync(file,data[,options])
方式一
let fs=require('fs');
let buf=Buffer.from('111111111111111111111111111111');
let buf1=Buffer.from('222222222222222222222222222222222');
fs.open('../A/message.txt','r+',(err,fd)=>{
//同步执行
fs.writeSync(fd,buf);
fs.writeSync(fd,buf1);
//直接写入文件,覆盖掉原来的内容
//异步执行
fs.write(fd,buf,(err)=>{});
fs.write(fd,buf1,(err)=>{});
});
方式二
let fs=require('fs');
let buf=Buffer.from('111111111111');
let buf1=Buffer.from('22222222222');
let fileName='../A/message.txt';
/*省略掉打开文件的方式*/
fs.writeFileSync(fileName,buf);
fs.writeFileSync(fileName,buf1);
2、读取文件
1.fs.read(fd,buffer,offset,length,position,callback)<=>fs.read(fd,[options,]callback)
2.fs.readSync(fd,buffer,offset,length,position)
3.fs.readFile(path[,options],callback)
4.fs.readFileSync(path[,options])
- 引入
let fs=require('fs');
//未规定编码集时,以二进制输入字符
fs.readFile('../A/out.txt',(err,data)=>{
if (err) throw err;
console.log(data)
})
方式一
let fs=require('fs');
//提前规定编码集---utf8
fs.readFile('../A/out.txt','utf8',(err,data)=>{
if (err) throw err;
console.log(data)
})
方式二
let fs=require('fs');
//输出时一字符的形式输出--toString()
fs.readFile('../A/out.txt',(err,data)=>{
if (err) throw err;
console.log(data.toString())
})
3、复制文件
文件的复制有4
种方法:pipe
,stream
,file
,直接读取内容并写入
。
1)直接读取文件的内容并写入
let fs=require('fs');
let RfileName='../../1.View/in.txt';
let WfileName='../../1.View/B1.txt';
fs.copyFile(RfileName,WfileName,function(err){
if(err) throw err;
console.log("复制成功");
})
2)pipe-copy
var fs = require("fs");
let RfileName='../../1.View/in.txt';
let WfileName='../../1.View/B1.txt';
var readerStream = fs.createReadStream(RfileName);
var writerStream = fs.createWriteStream(WfileName);
//管道读写操作----适用于大文件的操作
readerStream. pipe(writerStream) ;
3)stream-copy
let fs = require('fs');
let RfileName='../../1.View/in.txt';
let WfileName='../../1.View/B1.txt';
let readertream = fs.createReadStream(RfileName);
let writerStream =fs.createWriteStream(WfileName);
readertream.setEncoding('utf8');
let data='';
readertream.on('data',function (chunk) {
data+=chunk;
writerStream.write(data,'utf8' );
})
4)file-copy
/*先读取A文件----再写入B文件*/
let fs=require('fs');
let RfileName='../../1.View/in.txt';
let WfileName='../../1.View/B1.txt';
fs.readFile(RfileName,'utf8',(err,data)=>{
if (err) throw err;
console.log(data);
fs.writeFile(WfileName, data, (err) => {
if (err) throw err;
console.log("复制成功");
});
})