文件的写入-对Excel文件数据操作-express生成器——

fs.writeFile

异步地将数据写入到一个文件,如果文件已存在则覆盖该文件。 data 可以是字符串或 buffer。

fs.writeFile('a.txt', '文本内容', 'utf8', function(){
});
fs.writeFile(path.join(__dirname,"a.txt"),"ajaksjdlakjdlkasjdalkjsd",function(err){
    console.log(err);
})

封装fs.appendFile

向文件尾部增加新数据,如果该文件不存在就会创建一个新文件

fs.appendFile(path.join(__dirname,"a.txt"),"\nbbbb",function(err){
    console.log(err);
})
function appendFile(data){
    return new Promise((resolve,reject)=>{
        fs.appendFile(path.join(__dirname,"a.txt"),"\n"+data,function(err){
            resolve(!err);
        })
    })
}

fs.rename

异步地把 oldPath 文件重命名为 newPath 提供的路径名。

fs.rename(path.join(__dirname,"a.txt"),path.join(__dirname,"b.txt"),function(err){
    console.log(err);
})

fs.unlink

删除文件

fs.unlink(path.join(__dirname,"b.txt"),function(err){
    console.log(err);
})

监视文件

监视文件的变化

fs.watch(path.join(__dirname,"a.txt"),"utf8",function(event,filename){
    console.log(event,filename);
})

fs.createReadStream()

读取文件流
流式写入,如果是大文件,内容较多,例如视频等就需要流式写入,防止内存卡死


const fs = require('fs')
const readstream = fs.createReadStream('./note.txt');
readstream.pipe(fs.createWriteStream('./note2.txt'));

对.xlsx的文件数据的操作

利用插件来完成对excel表格数据的筛选。

import xlsx from "node-xlsx";
import fsp from "fs/promises";封装好的数据
import path from "path";

init();
async function init(){
     var data=await fsp.readFile(path.join(path.resolve(),"abc.xlsx"));
     data=xlsx.parse(data)[0];
     var arr=data.data.slice(0,4).concat(data.data.slice(4).filter(item=>item[5]>=90));
     var buffer=xlsx.build([{name:"GP27考试90分以上的表格",data:arr}]);
     await fsp.writeFile(path.join(path.resolve(),"90Up.xlsx"),buffer);
}

express基础

全局安装express,引入

var express = require('express');
var app = express();

启动命令:

node app.js

express的通信应用

app.get

app.post

var express=require("express");
var app=express();
app.post("/a",function(req,res){
   //req 这里的req就是请求数据的内容
})
app.listen(4001);

app.put,app.delete,app.all

express中间件和路由

  • 1、GET请求会向数据库发索取数据的请求,从而来获取信息,该请求就像数据库的select操作一样,只是用来查询一下数据,不会修改、增加数据,不会影响资源的内容,即该请求不会产生副作用。无论进行多少次操作,结果都是一样的。
  • 2、与GET不同的是,PUT请求是向服务器端发送数据的,从而改变信息,该请求就像数据库的update操作一样,用来修改数据的内容,但是不会增加数据的种类等,也就是说无论进行多少次PUT操作,其结果并没有不同。
  • 3、POST请求同PUT请求类似,都是向服务器端发送数据的,但是该请求会改变数据的种类等资源,就像数据库的insert操作一样,会创建新的内容。几乎目前所有的提交操作都是用POST请求的。
  • 4、DELETE请求顾名思义,就是用来删除某一个资源的,该请求就像数据库的delete操作。

app.all是不管哪种都可以接收

app.use用于中间件

app.use("/",function(req,res,next){
    res.set({'Access-Control-Allow-Origin':'*'});//例如在这里处理跨域问题
    next();
})

app.set

部分第三方的一些插件在express框架中使用时需要设置一些基础参数,便于在使用时直接调用,这里有一部分是固定属性,也可以自定义属性
例如express框架使用时:

//设置views文件夹也就是模板文件夹,对于调用的路径是view文件夹下
app.set("views",path.join(__dirname,"./view"));
//设置视图解析的方式是通过art这个注册的插件
app.set("view engine","art");
 - use一般用于中间件,目的是在发送之前,或者某件事件之前先做一些处理,例如提前处理一些数据
 - 注意use后面的第二个函数中有3个参数,第一个是req,第二个是res,第三个是next
   我们在use中处理完内容后,必须执行next()这样才可以进入后续的内容,否则将不会向后继续执行

可以通过express 快速生成服务器骨架

下载

npm i express-generator -g

express中提供了 ejs,hbs,pug,hogan.js等引擎,不带art-template 这里我们可以尝试使用ejs完成

express --view=ejs 
或者
express -e

"morgan": "~1.9.1":生成日志的插件
现阶段常用的几个插件:

"devDependencies": {
	"cross-env":"^7.0.3",
	"nodemon":"^2.0.19"
}
"scripts": {
	"start": "cross-env PORT=4000 nodemon ./bin/www"
},

执行 npm i
启动DEBUG=express2:* & npm start
写入文件
writeFile
保存图片
http-server

在这里插入图片描述


版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


学习编程是顺着互联网的发展潮流,是一件好事。新手如何学习编程?其实不难,不过在学习编程之前你得先了解你的目的是什么?这个很重要,因为目的决定你的发展方向、决定你的发展速度。
IT行业是什么工作做什么?IT行业的工作有:产品策划类、页面设计类、前端与移动、开发与测试、营销推广类、数据运营类、运营维护类、游戏相关类等,根据不同的分类下面有细分了不同的岗位。
女生学Java好就业吗?女生适合学Java编程吗?目前有不少女生学习Java开发,但要结合自身的情况,先了解自己适不适合去学习Java,不要盲目的选择不适合自己的Java培训班进行学习。只要肯下功夫钻研,多看、多想、多练
Can’t connect to local MySQL server through socket \'/var/lib/mysql/mysql.sock问题 1.进入mysql路径
oracle基本命令 一、登录操作 1.管理员登录 # 管理员登录 sqlplus / as sysdba 2.普通用户登录
一、背景 因为项目中需要通北京网络,所以需要连vpn,但是服务器有时候会断掉,所以写个shell脚本每五分钟去判断是否连接,于是就有下面的shell脚本。
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
假如你已经使用过苹果开发者中心上架app,你肯定知道在苹果开发者中心的web界面,无法直接提交ipa文件,而是需要使用第三方工具,将ipa文件上传到构建版本,开...
下面的 SQL 语句指定了两个别名,一个是 name 列的别名,一个是 country 列的别名。**提示:**如果列名称包含空格,要求使用双引号或方括号:
在使用H5混合开发的app打包后,需要将ipa文件上传到appstore进行发布,就需要去苹果开发者中心进行发布。​
+----+--------------+---------------------------+-------+---------+
数组的声明并不是声明一个个单独的变量,比如 number0、number1、...、number99,而是声明一个数组变量,比如 numbers,然后使用 nu...
第一步:到appuploader官网下载辅助工具和iCloud驱动,使用前面创建的AppID登录。
如需删除表中的列,请使用下面的语法(请注意,某些数据库系统不允许这种在数据库表中删除列的方式):
前不久在制作win11pe,制作了一版,1.26GB,太大了,不满意,想再裁剪下,发现这次dism mount正常,commit或discard巨慢,以前都很快...
赛门铁克各个版本概览:https://knowledge.broadcom.com/external/article?legacyId=tech163829
实测Python 3.6.6用pip 21.3.1,再高就报错了,Python 3.10.7用pip 22.3.1是可以的
Broadcom Corporation (博通公司,股票代号AVGO)是全球领先的有线和无线通信半导体公司。其产品实现向家庭、 办公室和移动环境以及在这些环境...
发现个问题,server2016上安装了c4d这些版本,低版本的正常显示窗格,但红色圈出的高版本c4d打开后不显示窗格,
TAT:https://cloud.tencent.com/document/product/1340