Node.js 学习笔记(三)
global
JS在浏览器中的全局对象是window
对象。在Node.js环境中,全局对象则叫global
。我们可以用它来区分当前JavaScript的执行环境:
if(typeof(window)==='undefined'){console.log('node.js');
}else{console.log('browser');
}
process
process
是Node.js提供的一个对象,它代表当前Node.js的进程。
JavaScript程序是由事件驱动执行的单线程模型,Node.js也不例外。Node.js不断执行响应事件的JavaScript函数,直到没有任何响应事件的函数可以执行,Node就退出了。
nextTick方法
此方法可以在下一次事件响应中执行代码。
fs模块
fs模块是Node.js的内置模块,是负责处理读写文件的。它同时提供了异步和同步方法。
异步和同步
异步是在JS执行IO操作时,无需等待执行结果,而是传入回调函数后,继续执行下面的代码,以jQuery的getJSON()
为例:
$.getJSON('http://example.com/ajax',function(data){console.log('IO结果返回后执行……');
});
console.log('不等待IO结果直接执行后续代码‘);
而同步则是线形的,需要等待IO操作返回结果后,再执行后续代码:
var data=getJSONSync('http://example.com/ajax');
同步代码更少,但是异步在实际的用户体验更好。
异步读文件
以下是一个异步读取文本文件的实例:
‘use strict';var fs=require('fs');fs.readFile('sample.txt','utf-8',function(err,data){if(err){console.log(err);}else{console.log(data)}
})
要注意的是,sample.txt
必须在当前的目录之下,且文件的编码格式为utf-8。
如果我们要读取的是二进制文件呢?下面是一个读取图片的例子:
'use strict';var fs = require('fs');fs.readFile('sample.png', function (err, data) {if (err) {console.log(err);} else {console.log(data);console.log(data.length + ' bytes');}
});
当读取二进制文件时,不传入文件编码(如utf-8)时,data会返回一个Buffer
对象。
这里提一下
Buffer
对象,它是Node处理二进制数据的一个接口,也是Node原生的全局对象,可以直接使用,不需要require(‘buffer’)
。它的作用类似于数组。
同步读文件
同步读文件相比异步读文件,只是在readFile
上加了一个sync
,看下面的例子:
'use strict'var fs=require('fs');
try{var data=fs.readFileSync('sample.txt','utf-8');console.log(data);
}
catch(err){//错误信息
}
如果发生错误,只能通过try...catch
捕获。
写文件
通过fs.writeFile()
实现。
'use strict'var fs=require('fs');var data='Hello Node.js!';
fs.writeFile('output.txt',data,function(err){if(err){console.log(err);}else{console.log('ok');}
});
和读文件相同,writeFile()
也有一个同步方法writeFileSync()
。
'use strict';
var fs=require('fs');var data='hello Node.js';
fs.writeFileSync('output.txtx',data);
stat
可以通过fs.stat()
获取文件大小、创建时间等信息。它会返回一个stat对象,告诉我们文件的详细信息。
'use strict';var fs=require('fs');
fs.stat('sample.txt',function(err,stat){if(err){console.log(err);}else{// 是否是文件:console.log('isFile: ' + stat.isFile());// 是否是目录:console.log('isDirectory: ' + stat.isDirectory());if (stat.isFile()) {// 文件大小:console.log('size: ' + stat.size);// 创建时间, Date对象:console.log('birth time: ' + stat.birthtime);// 修改时间, Date对象:console.log('modified time: ' + stat.mtime);}}
});
同样,它也有一个同步函数statSync()
。
'use strict';var fs=require('fs');
var stats=fs.statSync('sample.txt');console.log(stats.isFile()); //true
Node.js 学习笔记(三)相关推荐
- node.js 学习笔记三:路由url
一.修改server.js var http = require("http"); var url = require("url"); //导入内置url模块f ...
- Node.js学习笔记8
Node.js学习笔记8 HTTP服务器与客户端 Node.js的http模块,封装了一个高效的HTTP服务器和一个简易的HTTP客户端 http.server是一个基于事件的HTTP服务器,核心由N ...
- node.js学习笔记5——核心模块1
node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...
- node.js 学习笔记(二)模板引擎和C/S渲染
node.js 学习笔记(二)模板引擎和C/S渲染 文章目录 node.js 学习笔记(二)模板引擎和C/S渲染 一.初步实现Apache功能 1.1 使用模板引擎 1.2 在 node 中使用模板引 ...
- node.js学习笔记
# node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...
- node.js学习笔记14—微型社交网站
node.js学习笔记14-微型社交网站 1.功能分析 微博是以用户为中心,因此需要有注册和登录功能. 微博最核心的功能是信息的发表,这个功能包括许多方面,包括:数据库访问,前端显示等. 一个完整的微 ...
- 千锋Node.js学习笔记
千锋Node.js学习笔记 文章目录 千锋Node.js学习笔记 写在前面 1. 认识Node.js 2. NVM 3. NPM 4. NRM 5. NPX 6. 模块/包与CommonJS 7. 常 ...
- 唤醒手腕 - 前端服务器端开发 Node.Js 学习笔记(学习中,更新中)
唤醒手腕 - Node.Js 学习笔记 唤醒手腕个人的学习记录,时间在2021年12月13日 ~ 2021年12月14日,学习方式看官方文档和B站视频,如有错误或者代码问题的地方,欢迎C站大佬能够帮忙 ...
- Vue.js 学习笔记三,一些基础指令,v-bind,v-on
在笔记二的基础上继续写 v-bind指令,为属性绑定数据 <!--v-bind指令可以绑定属性--><div v-html="msg2" v-bind:title ...
最新文章
- matlab处理txt文件数据
- 解决Windows 10下Wireshark运行问题
- java bean join_spring data jpa 关联join查询出自定义实体java bean的坑
- Mardown(或Latex)换行
- Nessus安全测试插件编写教程(2)
- CString原理介绍
- 《人人都是产品经理》读后感
- 判断两个数组中是否存在相同的数字
- python md5加密数据
- 算法分析之对问题建模
- 项目管理系统、工作台、经营看板、质量管理、合同管理、合同审核、新建合同、分包商管理、立项审批、创建项目、项目模板、项目统计、计划管理、结项申请、审批流程、审批记录、审批状态、参数设置、axure原型
- 【已解决】运行Eclipse出错:Failed to load the JNI shared library
- TCP建立连接的三次握手过程
- Texlive 2021安装卡在be patient解决方案
- 产品读书《科技想要什么》KK
- 万张脸部图片合成平均脸,26家公司颜值大PK
- Cocos2d-x 3.x游戏开发之旅
- 鬼谷八荒流派收集(4)核弹指
- 基础(待续)-BTT与STT导弹模型
- 为什么我们的计算机毕业设计要早做准备?
热门文章
- Python办公自动化(四) | 批量处理文件
- zabbix自动同步ldap帐号到数据库
- linux查看具体进程占用的网络流量
- xshell 自动断开解决方法
- 开发ffmpeg/live555常见问题错误及解决方法
- 【java】javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序【解决方法】
- Taro开发微信小程序遇到的问题和解决方法
- 全网最详细的HBase启动以后,HMaster进程启动了,几秒钟以后自动关闭问题的解决办法(图文详解)
- 什么是C ??!??!操作员呢?
- Win10出现跟这台计算机连接的一个usb设备运行不正常怎么办