Nodejs基础
Rio 2023-03-06
Node.js
说明
Nodejs基础知识总结
# Node.js
Nodejs主要由V8、Libuv和第三方库组成
Node.js是一个基于V8 JavaScript引擎的JavaScript运行时环境,在浏览器之外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使得 Node.js 的性能非常好。
我们编写的JavaScript代码会经过V8引擎,再通过Node.js的Bindings,将任务放到Libuv的事件循环中;
V8:实现JS解析、执行和支持自定义拓展
Libuv:跨平台的异步IO库,但不仅包括IO还有进程、线程、信号、定时器、进程间通信、线程池等。
第三方库:异步DNS解析、HTTP解析器、解压压缩库、加密解密库等
# Nodejs应用
- 目前前端开发的库都是以node包的形式进行管理;
- npm、yarn、pnpm工具成为前端开发使用最多的工具;
- 使用Node.js作为web服务器开发、中间件、代理服务器;
- 借助Node.js完成前后端渲染的同构应用;SSR
- 资深前端工程师需要为项目编写脚本工具(前端工程师编写脚本通常会使用JavaScript,而不是Python或者shell));
- 很多企业在使用Electron来开发桌面应用程序;
# Nodejs版本切换
# Node输入与输出
// 输入 node .\demo.js arg1=20 arg2=40
const arg1 = process.argv[2]
const arg2 = process.argv[3]
console.log(arg1,arg2);
console.log(process.argv);
// arg1=20 arg2=40
// [
// 'D:\\nodejs\\node.exe',
// 'E:\\HTML,CSS,JavaScript\\Node.js\\Node.js入门\\demo.js',
// 'arg1=20',
// 'arg2=40'
// ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
# Nodejs全局对象
// 类似window的全局对象
// console.log(global);
// 特殊的全局对象
// console.log(__dirname); // 获取当前文件所在路径
// console.log(__filename); // 获取当前所在的路径和文件名称
// 模块化
// console.log(module);
// console.log(exports);
// console.log(require);
// process对象提供了node进程相关的信息
// console.log(process);
// console.log(process.argv);
// console对象提供简单的调试控制台
// 定时器函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# FS内置模块
console.log(global);
const fs = require('fs');
fs.readFile('Node.js入门/1.txt','utf-8',function (err,data) {
console.log(err);
console.log("------");
console.log(data);
})
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
const fs = require('fs');
// 会覆盖之前的内容 成功返回null 失败返回错误信息
fs.writeFile('Node.js入门/2.txt','hello nodejs',function (res) {
console.log(res);
})
1
2
3
4
5
6
2
3
4
5
6
__dirname
表示当前文件所处的目录
# Path路径模块
path.join()
方法,将多个路径片段拼接成一个完整的路径字符串
path.resolve()
方法,把一个路径或路径片段的序列解析为一个绝对路径;
path.basename()
方法,用来从路径字符串中,将文件名解析出来
path.extname()
方法,可以获取路径中的扩展名部分
path.dirname()方法
可以获取路径中的目录名
const path = require('path');
console.log(path.join('/a','/b/c','../','./d','e')); // \a\b\d\e
const fp = '/a/b/c/index.html'
console.log(path.basename(fp)); // index.html
console.log(path.basename(fp,".html")); // index
console.log(path.extname(fp)); // .html
console.log(path.dirname(fp)); // /a/b/c
console.log(path.resolve("/aa/bb","./cc/dd","./ee/ff.txt")); // E:\aa\bb\cc\dd\ee\ff.txt
console.log(path.resolve("/aa/bb","./cc/dd","/ee/ff.txt")); // E:\ee\ff.txt
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12