Node.js 学习笔记
一、Node.js概览
1.Node.js REPL
-
REPL 是一种在命令行里解释执行语言的工具,它的样子就像浏览器的控制台,可以在其中直接写代码,然后执行。
-
REPL通过在控制台输入
node
启动
- 用 REPL 写代码
> 1 + 1
2
> var num = 1;
undefined
> num = 1 + 2;
3
> console.log(num);
3
undefined
- 使用
_
获取上一个表达式的结果
> 1 + 20
21
> var sum = _
undefined
> console.log(sum)
21
undefined
2.Node.js 全局对象和全局变量
- 全局对象
在浏览器环境中,全局对象是 window
,其中包含自定义的全局变量、浏览器方法、文档信息等等。在 Node.js 中,也有一个类似的global
对象
- __filename 和 __dirname
表示当前js文件的路径和文件夹的路径
console.log('__filename:', __filename);
console.log('__dirname:', __dirname);
- process全局变量
是关于 Node.js 进程的全局变量,用来获取当前进程里 Node 环境变量。
属性 | 描述 |
---|---|
process.version | 当前 Node 的版本号 |
process.versions | 打印包括 Node、V8、libuv、zlib 等版本号。 |
process.env | 当前运行环境的信息,比如运行的 Shell、User、执行位置等,这个变量是可以进行写入和删除(用 delete ** 进行删除)的,比如前端常用的 env.NODE_ENV |
process.cpuUsage() process.memoryUsage() | CPU 和 内存的使用情况。 |
process.uptime() | 当前进程已经运行的时间。 |
process.nextTick(fn) | 当切换下一个任务时,运行回调里的内容。 |
3.Node.js 模块系统
- cjs(CommonJS) 格式
Node.js 模块系统使用module.exports
和exports
导出模块,使用require
导入模块。
//module.js
module.exports.a = 1;
module.exports.b = 2;
exports.c = 3;
var testModule = require('./module');
console.log(testModule);//输出 { a: 1 , b: 2, c: 3 }
极其不推荐同时使用 module.exports
和 exports
操作,因为二者可能会创建一个不同的对象,导致导出结果只有一部分参数
- esm(ES modules)格式
ES6 出现的模块格式,在新版本的 Node.js 中推荐使用 esm 格式
//module.js
export const a = 1;
import { a } from "./module";
console.log("a: ", a);
然后需要在 package.json
并且设置 type
为 module
,让该文件夹成为模块,才可以正常使用。
4.Node.js 内置模块
查看官方文档的内置模块
- 使用
fs
模块
const fs = require('fs')
//import { fs } from 'fs'
fs.writeFile("./test.txt", "这是文件中的内容", function (err) {
if (err) {
return console.error(err)
//如果写入成功 err的值为null,否则为错误对象
}
fs.readFile("./test.txt",'utf-8', function (err, data) {
if (err) {
return console.error(err)
}
console.log("异步读取: " + data.toString())
})
let data2 = fs.readFileSync("./test.txt")
console.log("同步读取: " + data2.toString())
})