node学习笔记(一)
Node
node是使用C++、C、js(给js本身调用时提供的一些api)等编写的
node的核心层:libuv是由C编写的库;底层通过对操作系统的一些调用由中间层libuv
来完成
libuv提供了事件循环、文件系统读写、网络IO、线程池等等内容
Node应用场景
- 前端开发的库都是以node包的形式进行管理;
- npm,cnpm、yarn、pnpm成为前端开发使用最多的工具;
- 使用Nodejs作为web服务器开发、中间件、代理服务器;
- 大量项目需要借助Node.js完成前后端渲染的同构应用;(SSR)
- 资深前端工程师需要为项目编写脚本工具;(前端工程师编写脚本通常会使用JavaScript)
- 很多企业在使用Electron来开发桌面应用程序;(Electron是基于Node的并且需要Node环境)
Node版本管理
macOS:n/nvm
1 | npm i -g n |
window:nvm-windows
1 | // 安装最新的node版本n |
Node的输入和输出
process(输入)
- process(进程对象)可用来获取用户终端输入
示例:
在终端输入
1 | node test.js 10 20 |
test.js文件代码如下
1 | // argv=>arguments vector |
process还能够查看系统的其他一些信息:操作系统类型、node版本和V8的版本等。
其他方法:
1 | process.nextTick() |
console(输出)
1 | // 清空控制台 |
Node全局对象
特殊的全局对象
__dirname
、__filename
、exports
、module
、require()
这些全局对象是模块中的变量,只是每个模块都有,看起来像全局变量,但是在命令行交互是不能使用的。
- __dirname:表示当前文件所在的目录;
- __filename:表示当前文件所在的目录以及文件名;
注意:
1 | module.exports === exports |
定时器函数
1 | setTimeout |
global对象
在node环境下,全局对象为global
;在浏览器环境下,全局对象为window
;在后来的版中,使用统一的名称globalThis
作为全局对象,在浏览器环境指向this
,在node环境指向global
。
说明:使用var
声明的变量在浏览器环境下会自动加入到window的一个属性中,在node环境下不会。