核心API
获取指定文件所在的目录
console.log(__dirname);//C:\Users\11267\Desktop\学习\JS二阶段\day16\f80\2.NodeJS核心\lession
获取指定文件所在的绝对路径
console.log(__filename);//C:\Users\11267\Desktop\学习\JS二阶段\day16\f80\2.NodeJS核心\lession\index.js
获取当前文件所在的目录,绝对路径
console.log(process.cwd());//C:\Users\11267\Desktop\学习\JS二阶段\day16\f80\2.NodeJS核心\lession
强制退出当前node进程,参数0表示成功退出,1表示其他原因退出
console.log(process.exit(0));
获取命令中的所有参数,是字符串类型
console.log(process.argv);
/* [
'D:\\xx\\node.exe',
'C:\\Users\\11267\\Desktop\\学习\\JS二阶段\\day16\\f80\\2.NodeJS核心\\lession\\index.js'
] */
获取当前的操作系统
console.log(process.platform);//win32
获取环境变量对象
console.log(process.env);
在Nodejs中获取内置对象,然后可以使用对象身上的方法
let path = require("path");
获取路径中文件名,最后一部分
let suffix = path.basename("/Users/yingside/index.html");
console.log(suffix);//index.html
获取分隔符
console.log(path.delimiter);//;
获取分隔符
console.log(path.sep);//\
console.log("c:\\asd\\adas");//c:\asd\adas
将路径片段形成完整的路径
console.log(path.join(__dirname,"/public"));//C:\Users\11267\Desktop\学习\JS二阶段\day16\f80\2.NodeJS核心\lession\public
将路径片段形成一个绝对路径
console.log(path.resolve(__dirname,"/public"));//C:\public
在Nodejs中获取内置对象,然后可以使用对象身上的方法
let os = require("os");
获取主机名
console.log(os.hostname());//LAPTOP-VFAAL79J
获取当前的操作系统
console.log(os.platform());//win32
主机CPU架构
console.log(os.arch());//x64
主机CPU信息
console.log(os.cpus());
剩余内存数量
console.log(os.freemem());//8987058176
在Nodejs中获取内置对象,然后可以使用对象身上的方法
let fs = require("fs");
let path = require("path");
let p = path.join(__dirname,"/public/")
fs.writeFile("test.txt","aaa",(err)=>{ //写文件
if(err) {console.log(err);}
else {console.log("success!");}
})
文件读取是一个流,因为包含视频、图片等内容,如果需要读取文本类内容,在第二个参数为"utf-8"
fs.readFile('test.txt', "utf-8",(err, data) => {//读文件
if (err) throw err;
console.log(data);
});
练习:文件的读取和写入
//获取内置对象
let fs = require("fs");
let path = require("path");
let fromPath = path.join(__dirname,"/img/11.png");
let toPath = path.join(__dirname,"/img/2.png");
/* 第一种 回调地狱 */
// fs.readFile(fromPath,(err,data)=>{
// if(err) {
// console.log(err);
// }
// else{
// fs.writeFile(toPath,data,(err)=>{
// if(err) {
// console.log(err);
// }
// else{
// console.log("success!");
// }
// })
// }
// })
/* 文件读取是一个流,因为包含视频、图片等内容,如果需要读取文本类内容,在第二个参数为"utf-8" */
/* 第二种 promises */
async function fileCopy(){
try{
let buffer = await fs.promises.readFile(fromPath);//成功
await fs.promises.writeFile(toPath,buffer);//写入
console.log("success");
}catch(err){
console.log(err);
}
}
fileCopy();
npm包管理
爬虫练习
1、初始化包 npm init
2、下载依赖
3、具体代码
/* 在网页上拿文字图片 */
let axios = require("axios");//引入内置对象
let cheerio = require("cheerio");
const { log } = require("console");
let fs = require("fs");
async function getMovies(){
let resp = await axios.get("https://movie.douban.com/chart");//得到整个网页的代码
return resp.data;//返出整个代码的data部分
}
async function getMovieData(){
let htmlStr = await getMovies();//得到返出整个代码的data部分
let $ = cheerio.load(htmlStr);//把得到的代码转成字符串
let trs = $("tr.item");//得到所有的tr
let movies = [];
[...trs].forEach((tr)=>{//把trs结构成数组,遍历数组的每一个tr
let name = $(tr).find("div.pl2 a").text();//方法find找到一个div类名是pl2,然后里面的a标签的文本内容
name = name.replace(/\s/g,"").split("/")[0];//利用正则去掉空格然后以/分隔成数组取第一个 /\s/g,"" \s是空格 g是全部 换成空字符串
let imgPath = $(tr).find("a.nbg img").attr("src");//方法find找到一个a类名是nbg,然后里面的img标签的属性src 得到图片路径
let scort= $(tr).find("span.rating_nums").text();//方法find找到一个span类名是rating_nums,然后里面的文本内容
let stars= $(tr).find("p.pl").text().split("/");//方法find找到一个p类名是pl,然后里面的文本内容,以/转为数组
stars=stars.slice(3,stars.length-6).join(',');//截取数组并转字符串
// console.log(stars);
movies.push({//以对象类型加进数组
name,
imgPath,
scort,
stars,
})
})
return movies;
}
getMovieData().then((movies)=>{//得到返出值并执行打印
movies.forEach(m => {
console.log(m);
})
/* 写入文件 */
let str=JSON.stringify(movies);//把整个数组转成字符串
fs.writeFile('./index.json',str,"utf-8",(err)=>{//调用fs的方法(写入的路径,没有则新建一个,写入的内容,写入文本信息,执行函数),失败怎么样,成功怎么样
if(err) console.log('失败');
else console.log('成功');
})
});
结果