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的主要内容,如果未能解决你的问题,请参考以下文章

澄清 node.js + promises 片段

node 片段

Apollo Codegen 没有找到生成代码的操作或片段

你可能不知道的JavaScript代码片段和技巧(下)

你可能不知道的JavaScript代码片段和技巧(上)

node 环境下简单web服务器搭建代码