摘要:全局对象中一个对象,该对象为全局对象。在客户端中,该对象为,由进行指向中的全局对象为,所有的全局变量,除了自己以外都是对象的属性全局对象和全局变量全局变量是全局对象的宿主表示当前正在执行的脚本名,将会输出文件位置所在的绝对路径。
node全局对象
js中一个对象,该对象为全局对象。
在客户端中,该对象为whindow,由this进行指向
node中的全局对象为global,所有的全局变量,除了自己以外都是global对象的属性
全局变量是全局对象的宿主
_filename表示当前正在执行的脚本名,将会输出文件位置所在的绝对路径。
如果在模块中,返回的是模块文件的路径。
PS C:UsersmingmDesktop est> node main.js C:UsersmingmDesktop estmain.js PS C:UsersmingmDesktop est>
// 输出全局变量 __filename的值 console.log(__filename);__dirname
表示当前执行脚本所在的目录
PS C:UsersmingmDesktop est> node main.js C:UsersmingmDesktop est PS C:UsersmingmDesktop est>
console.log(__dirname);setTimeout
function printHello() { console.log("hello word"); }; // 两秒后执行以上函数 setTimeout(printHello, 2000); // 该函数返回一个代表定时器的句柄值
function printHello() { console.log("hello word"); }; // 两秒后执行以上函数 setTimeout(printHello, 2000); // 该函数返回一个代表定时器的句柄值clearTimeout
停止一个计时器
settlnterval一个计时器会不断的调用,返回的是一个代表定时器的句柄值
function printHello() { console.log("hello word!"); }; // 每两秒后循环执行以上函数 setInterval(printHello, 2000);
PS C:UsersmingmDesktop est> node main.js hello word! hello word! hello word! hello word! hello word! hello word! hello word! hello word! hello word!process
一个全局变量,即global对象的属性
用于描述当前node进程状态的对象。
process.on("exit", (code) => { // 下方代码不会执行 setTimeout(() => {console.log("该代码不会执行");}, 0); console.log("退出码为", code); }); console.log("程序执行结束");
PS C:UsersmingmDesktop est> node main.js 程序执行结束 退出码为 0 PS C:UsersmingmDesktop est>一个示例文件
// 输出到终端 process.stdout.write("hello world!" + " "); // 创建一个写入流,通过写入流,输出到终端 // 通过参数读取 process.argv.forEach((val, index, array) => {console.log(val + index + array)}); // 获取执行路径 console.log(process.execPath); // 平台信息 console.log(process.platform);
PS C:UsersmingmDesktop est> node main.js hello world! C:Program Files odejs ode.exe0C:Program Files odejs ode.exe,C:UsersmingmDesktop estmain.js C:UsersmingmDesktop estmain.js1C:Program Files odejs ode.exe,C:UsersmingmDesktop estmain.js C:Program Files odejs ode.exe win32 PS C:UsersmingmDesktop est>
PS C:UsersmingmDesktop est> node main.js { rss: 18874368, heapTotal: 6066176, heapUsed: 3677376, external: 8272 } PS C:UsersmingmDesktop est>
// 输出内存使用情况 console.log(process.memoryUsage());node文件系统
node提供一组类似unix的标准文件操作api
异步和同步异步的方法后面会有一个回调函数
貌似回调多了以后会产生回调地狱
var fs = require("fs"); // 异步读取 fs.readFile("input.txt", (err, data) => { err?console.error(err):true; console.log("异步读取" + data.toString()); });
PS C:UsersmingmDesktop est> node main.js 异步读取33333333333333333333333333333333333333333 PS C:UsersmingmDesktop est>
ps 减少异步,让世界更美好一点(^o^)/打开文件
建议回调使用箭头函数,要不然很容易产生回调地狱,让人抓狂
// 打开input.txt文件进行读写 var fs = require("fs"); // 异步打开文件 console.log("准备打开文件!"); fs.open("input.txt", "r+", (err, fd) => {err?console.log(err):console.log("文件打开成功!");});
PS C:UsersmingmDesktop est> node main.js 准备打开文件! 文件打开成功!获取文件信息
fs模块下的stat方法
判断是否是文件
var fs = require("fs"); fs.stat("input.txt", (err, stats) => {console.log(stats.isFile());});
PS C:UsersmingmDesktop est> node main.js true PS C:UsersmingmDesktop est>
var fs = require("fs"); console.log("准备打开文件!"); fs.stat("input.txt", (err, stats) => {err?console.log(err):console.log(stats); console.log("读取文件信息成功!"); // 检测文件类型 console.log(stats.ifFile()); console.log(stats.isDirectory()); });
PS C:UsersmingmDesktop est> node main.js 准备打开文件! Stats { dev: 982976588, mode: 33206, nlink: 1, uid: 0, gid: 0, rdev: 0, blksize: undefined, ino: 12103423998567884, size: 41, blocks: undefined, atimeMs: 1532607165034.9072, mtimeMs: 1532606924599.2798, ctimeMs: 1532606924599.2798, birthtimeMs: 1532606914067.3428, atime: 2018-07-26T12:12:45.035Z, mtime: 2018-07-26T12:08:44.599Z, ctime: 2018-07-26T12:08:44.599Z, birthtime: 2018-07-26T12:08:34.067Z } 读取文件信息成功! C:UsersmingmDesktop estmain.js:7 console.log(stats.ifFile()); ^ TypeError: stats.ifFile is not a function at fs.stat (C:UsersmingmDesktop estmain.js:7:20) at FSReqWrap.oncomplete (fs.js:159:5) PS C:UsersmingmDesktop est>写入文件
var fs = require("fs"); console.log("准备写入文件"); fs.writeFile("input.txt", "我是异步写入的内容", (err) => { err?console.log(err):false; console.log("数据写入成功!"); console.log("----我是分割线----"); console.log("开始读取写入的数据"); fs.readFile("input.txt", (err, data) => { err?console.log(err):false; console.log("异步读取数据为" + data.toString()); }); });
PS C:UsersmingmDesktop est> node main.js 准备写入文件 数据写入成功! ----我是分割线---- 开始读取写入的数据 异步读取数据为我是异步写入的内容 PS C:UsersmingmDesktop est>读取文件
在异步的情况下读取文件
参数 http://nodejs.cn/api/fs.html#...
使用的fs.read http://nodejs.cn/api/fs.html#...
var fs = require("fs"); var buf = new Buffer.alloc(1024); // 创建一个缓冲区 console.log("准备打开已存在的文件"); fs.open("input.txt", "r+", (err, fd) => { if (err) { console.log(err); }; console.log("文件打开成功"); console.log("准备读取文件"); fs.read(fd, buf, 0, buf.length, 0, (err, bytes) => { if (err) { console.log(err); }; console.log(bytes + "字节被读取"); // 输出读取的字节 if (buyes > 0) { console.log(buf.slice(0, bytes).toString()); } }); });
PS C:UsersmingmDesktop est> node main.js 准备写入文件 数据写入成功! ----我是分割线---- 开始读取写入的数据 异步读取数据为我是异步写入的内容 PS C:UsersmingmDesktop est>
Buffer.slice http://nodejs.cn/api/buffer.html
返回一个指向相同原始内存的新建的 Buffer
PS C:UsersmingmDesktop est> node main.js 准备打开已存在的文件 文件打开成功 准备读取文件 27字节被读取 我是异步写入的内容 PS C:UsersmingmDesktop est>
var fs = require("fs"); var buf = new Buffer.alloc(1024); // 创建一个缓冲区 console.log("准备打开已存在的文件"); fs.open("input.txt", "r+", (err, fd) => { if (err) { return console.log(err); }; console.log("文件打开成功"); console.log("准备读取文件"); fs.read(fd, buf, 0, buf.length, 0, (err, bytes) => { if (err) { console.log(err); }; console.log(bytes + "字节被读取"); // 输出读取的字节 if (bytes > 0) { console.log(buf.slice(0, bytes).toString()); } }); });关闭文件
在异步的模式下关闭文件
PS C:UsersmingmDesktop est> node main.js 准备打开文件! 文件打开成功! 准备读取文件! 我是异步写入的内容 文件关闭成功 PS C:UsersmingmDesktop est>
var fs = require("fs"); var buf = new Buffer.alloc(1024); console.log("准备打开文件!"); fs.open("input.txt", "r+", (err, fd) => { if (err) { return console.log(err); }; console.log("文件打开成功!"); console.log("准备读取文件!"); fs.read(fd, buf, 0, buf.length, 0, (err, bytes) => { if (err) { console.log(err); }; // 输出能读取的字节 if(bytes > 0) { console.log(buf.slice(0,bytes).toString()); }; // 关闭文件 fs.close(fd, (err) => { if(err) { console.log(err); }; console.log("文件关闭成功"); }); }); });截取文件
在异步的模式下截取文件
fs.ftruncate(fd[, len], callback)
http://nodejs.cn/api/fs.html#...
var fs = require("fs"); var buf = new Buffer.alloc(1024); console.log("准备打开文件!"); fs.open("input.txt", "r+", (err, fd) => { if (err) { return console.error(err); }; console.log("文件打开成功!"); console.log("截取了10字节后的文件内容。"); // 截取文件 fs.ftruncate(fd, 10, (err) => { if (err) { console.log(err); }; console.log("文件截取成功"); console.log("读取相同的文件"); fs.read(fd, buf, 0, buf.length, 0, (err, bytes) => { if (err) { console.log(err); }; // 仅输出读取的字节 if (bytes > 0) { console.log(buf.slice(0, bytes).toString()); } // 关闭文件 fs.close(fd, (err) => { console.log(err); }); console.log("文件关闭成功!"); }); }); });
PS C:UsersmingmDesktop est> node main.js 准备打开文件! 文件打开成功! 截取了10字节后的文件内容。 文件截取成功 读取相同的文件 我是异� 文件关闭成功! null PS C:UsersmingmDesktop est>删除文件
PS C:UsersmingmDesktop est> node main.js 准备删除文件! 文件删除成功! PS C:UsersmingmDesktop est>
var fs = require("fs"); console.log("准备删除文件!") fs.unlink("input.txt", (err) => { if (err) { return console.log(err); }; console.log("文件删除成功!"); });创建目录
PS C:UsersmingmDesktop est> node main.js 创建目录 ./tmp/test { [Error: ENOENT: no such file or directory, mkdir "C:UsersmingmDesktop est mp est"] errno: -4058, code: "ENOENT", syscall: "mkdir", path: "C:UsersmingmDesktop est mp est" } PS C:UsersmingmDesktop est>
var fs = require("fs"); console.log("创建目录 ./tmp/test"); fs.mkdir("./tmp/test", (err) => { if (err) { return console.log(err); }; console.log("目录创建成功!"); });读取目录
forEach方法没有找到一个 官方文档,貌似目前找不到
PS C:UsersmingmDesktop est> node main.js 查看 /tmp 目录 { [Error: ENOENT: no such file or directory, scandir "C:UsersmingmDesktop est mp"] errno: -4058, code: "ENOENT", syscall: "scandir", path: "C:UsersmingmDesktop est mp" } PS C:UsersmingmDesktop est>
var fs = require("fs"); console.log("查看 /tmp 目录"); fs.readdir("./tmp/", (err, files) => { if (err) { return console.log(err); }; files.forEach((file) => { // 这个方法目前没有找到,联系到客户端的方法,貌似是合并的意思 console.log( file ); }); });博客
www.iming.info
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/96306.html
摘要:深入浅出一直想致力于写一篇关于广义讲解系统的文章,苦于时间有限,资源有限。事件驱动机制是通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文的切换。 深入浅出Node.js 一直想致力于写一篇关于广义讲解Node.js系统的文章,苦于时间有限,资源有限。这篇文章是在结合自己的学习心得以及与行业大佬共同探讨下争对于熟练掌握JS语言后的广义Node.js.至于为什么...
摘要:深入浅出一直想致力于写一篇关于广义讲解系统的文章,苦于时间有限,资源有限。事件驱动机制是通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文的切换。 深入浅出Node.js 一直想致力于写一篇关于广义讲解Node.js系统的文章,苦于时间有限,资源有限。这篇文章是在结合自己的学习心得以及与行业大佬共同探讨下争对于熟练掌握JS语言后的广义Node.js.至于为什么...
摘要:深入浅出一直想致力于写一篇关于广义讲解系统的文章,苦于时间有限,资源有限。事件驱动机制是通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文的切换。 深入浅出Node.js 一直想致力于写一篇关于广义讲解Node.js系统的文章,苦于时间有限,资源有限。这篇文章是在结合自己的学习心得以及与行业大佬共同探讨下争对于熟练掌握JS语言后的广义Node.js.至于为什么...
摘要:基础篇整合最近有朋友也想学习相关方面的知识,如果你是后端想接近前端,作为一门跑在服务端的语言从这里入门再好不过了。事件驱动机制是通过内部单线程高效率地维护事件循环队列来实现的,没有多线程的资源占用和上下文的切换。 nodeJs 基础篇整合 最近有朋友也想学习nodeJs相关方面的知识,如果你是后端想接近前端,node作为一门跑在服务端的JS语言从这里入门再好不过了。如果你正好喜欢前端,...
阅读 3576·2021-11-24 10:25
阅读 2447·2021-11-24 09:38
阅读 1189·2021-09-08 10:41
阅读 2879·2021-09-01 10:42
阅读 2514·2021-07-25 21:37
阅读 1935·2019-08-30 15:56
阅读 873·2019-08-30 15:55
阅读 2704·2019-08-30 15:54