Node
Posted chenjiashao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Node相关的知识,希望对你有一定的参考价值。
Node
1、process 全局对象,直接用
console.log(process.env); //得到很多系统变量与用户变量
2、接收命令行参数
// 如在命令行输入 node ./index.js 2 3
console.log(process.argv); // [ 'C:\Program Files\nodejs\node.exe','F:\node-code\index.js','2','3' ]
3、获取命令行参数数组的2,3索引对应的元素并进行相关计算
let num1 = parseInt(process.argv[2]);
let num2 = parseInt(process.argv[3]); // parseInt也ok
let sum = num1 + num2;
//输出(卡顿输出)(定时输出)
console.log('计算中.....');
//2秒后输出
setTimeout(()=>{
console.log('结果为:' + sum ); // 5
},2000);
注意: 以下代码所在的项目路径为 F:/node-code
4、fileName、dirname属性
console.log(__filename); // F:
ode-codeindex.js
console.log(__dirname); // F:
ode-code
5、拼接路径 path.join()
// 引入核心对象
const path = require('path'); // 核心对象 path在node.exe里面
// 3段路径来自不同用户的输入
const myPath = path.join(__dirname,'//one//','//two//','//three///');
console.log(myPath); // F:
ode-codeone wo hree
6、根据相对路径,返回绝对路径
// 如 ./abv/efg.js 非要一个绝对路径
const str = './abv/efg.js';
let temp = path.resolve(str);
console.log(temp); // F:
ode-codeabvefg.js
7、解析路径为对象 path.parse()
const path = require('path');
// 接受一段字符串路径
let myPath = path.join(__dirname,'jack','rose','mick.txt');
// 解析这个路径为对象,更易于操作
let pathObj = path.parse(myPath);
console.log(pathObj); // { root: 'F:\', dir: 'F:\node-code\jack\rose', base: 'mick.txt',ext: '.txt',name: 'mick'}
// base可以作为修改文件名,或后缀的方式
pathObj.base = 'mick_die.good';
// 接收路径对象,转换成路径字符串
myPath = path.format(pathObj);
console.log(myPath); // F:
ode-codejack
osemick_die.good
8、IO
// I or O?
// I input 计算机来说,就是输入
// O output 计算机来说 ,展现/写入数据就是输出,
9、读取文件 fs.readFile()
//读取文件
// 引入核心对象
const fs = require('fs');
fs.readFile('./a.txt','utf8',(err,data)=>{
if (err) throw err; // 抛到控制台显示异常信息
// console.log(data);
// 需要获取字符串数据,就可以调用 buffer篮子.toString(编码)函数
// console.log(data.toString('utf8')); 默认urf8可以不传递
console.log(data); // 如在第二个参数传了 utf8 则可以直接打印而无需转译
});
10、编写文件 fs.writeFile()
// 引入核心对象
const fs = require('fs');
fs.writeFile('./a.txt','我今天赚了2块钱', {flag:'a'},(err)=>{ // {flag: 'a'} 则表示是追加模式 如无这个参数 文件每次编写时都会覆盖所有内容重新编写
// window中目录层级超级深的时候,写入会报错
if(err) throw err;
console.log('写文件完成了');
});
// 文件编写追加方式: appendFile('path',data,callback);
fs.appendFile('./a.txt','我今天赚了1块钱',(err)=>{
if(err) throw err;
console.log('文件追加成功');
});
11、文件的一些其他操作
// 接收命令行参数,根据该目录,读取目录下的所有文件并输出(遍历文件夹)
const path = require('path');
const fs = require('fs');
//引入别人包的入口的文件
// 1: 接收命令行参数 node ./01_read_dir_files.js .//xxx//xxx//xx
// 2: 修正该路径 path.resolve(process.agrv[2]);
let inputPath = path.resolve(process.argv[2]);
// 3: 判断该路径是否存在 fs.access(fs.constants.F_OK)
function testReadFiles(dir) {
try {
fs.accessSync(dir, fs.constants.F_OK); //判断该路径是否存在 同步写法
let state = fs.statSync(dir); // 获取文件的状态
if (state.isFile()) { //判断是否是文件
console.log(dir);
} else if (state.isDirectory()) { //判断是否是文件夹
let files = fs.readdirSync(dir); // 读文件
files.forEach( file => {
testReadFiles(path.join(dir,file));
});
}
} catch (e) {
console.log(e);
console.log('该文件或文件夹不存在!');
}
}
// 只判断一次
// fs.accessSync(dir, fs.constants.F_OK);
testReadFiles(inputPath);
以上是关于Node的主要内容,如果未能解决你的问题,请参考以下文章