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 学习笔记(三)相关推荐

  1. node.js 学习笔记三:路由url

    一.修改server.js var http = require("http"); var url = require("url"); //导入内置url模块f ...

  2. Node.js学习笔记8

    Node.js学习笔记8 HTTP服务器与客户端 Node.js的http模块,封装了一个高效的HTTP服务器和一个简易的HTTP客户端 http.server是一个基于事件的HTTP服务器,核心由N ...

  3. node.js学习笔记5——核心模块1

    node.js学习笔记5--核心模块1 Node.js核心模块主要内容包括:(1)全局对象 (2)常用工具 (3)事件机制 (4)文件系统访问 (5)HTTP服务器与客户端 一: 全局对象 Node. ...

  4. node.js 学习笔记(二)模板引擎和C/S渲染

    node.js 学习笔记(二)模板引擎和C/S渲染 文章目录 node.js 学习笔记(二)模板引擎和C/S渲染 一.初步实现Apache功能 1.1 使用模板引擎 1.2 在 node 中使用模板引 ...

  5. node.js学习笔记

    # node.js学习笔记标签(空格分隔): node.js---## 一 内置模块学习 ### 1. http 模块 ``` //1 导入http模块 const http =require('ht ...

  6. node.js学习笔记14—微型社交网站

    node.js学习笔记14-微型社交网站 1.功能分析 微博是以用户为中心,因此需要有注册和登录功能. 微博最核心的功能是信息的发表,这个功能包括许多方面,包括:数据库访问,前端显示等. 一个完整的微 ...

  7. 千锋Node.js学习笔记

    千锋Node.js学习笔记 文章目录 千锋Node.js学习笔记 写在前面 1. 认识Node.js 2. NVM 3. NPM 4. NRM 5. NPX 6. 模块/包与CommonJS 7. 常 ...

  8. 唤醒手腕 - 前端服务器端开发 Node.Js 学习笔记(学习中,更新中)

    唤醒手腕 - Node.Js 学习笔记 唤醒手腕个人的学习记录,时间在2021年12月13日 ~ 2021年12月14日,学习方式看官方文档和B站视频,如有错误或者代码问题的地方,欢迎C站大佬能够帮忙 ...

  9. Vue.js 学习笔记三,一些基础指令,v-bind,v-on

    在笔记二的基础上继续写 v-bind指令,为属性绑定数据 <!--v-bind指令可以绑定属性--><div v-html="msg2" v-bind:title ...

最新文章

  1. matlab处理txt文件数据
  2. 解决Windows 10下Wireshark运行问题
  3. java bean join_spring data jpa 关联join查询出自定义实体java bean的坑
  4. Mardown(或Latex)换行
  5. Nessus安全测试插件编写教程(2)
  6. CString原理介绍
  7. 《人人都是产品经理》读后感
  8. 判断两个数组中是否存在相同的数字
  9. python md5加密数据
  10. 算法分析之对问题建模
  11. 项目管理系统、工作台、经营看板、质量管理、合同管理、合同审核、新建合同、分包商管理、立项审批、创建项目、项目模板、项目统计、计划管理、结项申请、审批流程、审批记录、审批状态、参数设置、axure原型
  12. 【已解决】运行Eclipse出错:Failed to load the JNI shared library
  13. TCP建立连接的三次握手过程
  14. Texlive 2021安装卡在be patient解决方案
  15. 产品读书《科技想要什么》KK
  16. 万张脸部图片合成平均脸,26家公司颜值大PK
  17. Cocos2d-x 3.x游戏开发之旅
  18. 鬼谷八荒流派收集(4)核弹指
  19. 基础(待续)-BTT与STT导弹模型
  20. 为什么我们的计算机毕业设计要早做准备?

热门文章

  1. Python办公自动化(四) | 批量处理文件
  2. zabbix自动同步ldap帐号到数据库
  3. linux查看具体进程占用的网络流量
  4. xshell 自动断开解决方法
  5. 开发ffmpeg/live555常见问题错误及解决方法
  6. 【java】javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序【解决方法】
  7. Taro开发微信小程序遇到的问题和解决方法
  8. 全网最详细的HBase启动以后,HMaster进程启动了,几秒钟以后自动关闭问题的解决办法(图文详解)
  9. 什么是C ??!??!操作员呢?
  10. Win10出现跟这台计算机连接的一个usb设备运行不正常怎么办