启用strict模式的方法是在JavaScript代码的第一行写上:
'use strict';
- 查看全局变量
node环境下输入global.console
(浏览器环境下window.console
)
以下变量虽然看起来像全局变量,但实际上不是。 它们的作用域只在模块内
-
process
查看当前Node.js进程
process === global.process;
process.cwd(); //返回当前工作目录
要在下一次事件响应中执行代码,可以调用process.nextTick()。传入process.nextTick()的函数不是立刻执行,而是要等到下一次事件循环 -
判断JavaScript执行环境
if (typeof(window) === 'undefined') {
console.log('node.js');
} else {
console.log('browser');
} -
fs文件/文件夹操作
服务器启动时如果需要读取配置文件,或者结束时需要写入到状态文件时,可以使用同步代码,因为这些代码只在启动和结束时执行一次,不影响服务器正常运行时的异步执行
let statSync = fs.statSync('a.txt');
console.log(statSync)
console.log(statSync.size)删除文件
fs.unlink('a.txt',err=>{
if(err) throw err
})删除空文件夹
fs.rmdir('a',err=>{
if(err) throw err
})
删除非空文件夹,使用第三方库,如fs-extra
fs.watch()
比 fs.watchFile()
和 fs.unwatchFile()
更高效。 建议使用 fs.watch()
而不是 fs.watchFile()
和 fs.unwatchFile()
- stream流的读写
let readStream = fs.createReadStream('C:\\ubuntukylin-18.04.1-enhanced-amd64.iso');
let writeStream = fs.createWriteStream('a.iso');
let size=0
readStream.on('data',chunk=>{
size+=chunk.length
console.log(`${chunk.length}字节`)
writeStream.write(chunk)
})
readStream.on('end',()=>{
console.log('end'+size)
})
写入也可以
var fs = require('fs');
var ws1 = fs.createWriteStream('output1.txt', 'utf-8');
ws1.write('使用Stream写入文本数据...\n');
ws1.write('END.');
ws1.end();
var ws2 = fs.createWriteStream('output2.txt');
ws2.write(new Buffer('使用Stream写入二进制数据...\n', 'utf-8'));
ws2.write(new Buffer('END.', 'utf-8'));
ws2.end();
所有可以读取数据的流都继承自stream.Readable,所有可以写入的流都继承自stream.Writable。
让我们用pipe()把一个文件流和另一个文件流串起来,这样源文件的所有数据就自动写入到目标文件里了,所以,这实际上是一个复制文件的程序:
'use strict';
var fs = require('fs');
var rs = fs.createReadStream('sample.txt');
var ws = fs.createWriteStream('copied.txt');
rs.pipe(ws);
网友评论