基础
事件驱动、
事件驱动:发布者、订阅者
单线程
node.js的单线程只是说的主线程是单线程。但是异步其实是有线程池的。
应用场景
适合处IO密集型理高并发的场景
不适合处理数据较多的业务场景
node.js实现api服务
node 项目初始化
typescript 的安装
tsc -init初始话 生成配置文件
ts-node 的安装 可以用node执行ts文件 ts-node xxx.ts
安装如下三个插件:
"cross-env": "^7.0.3",
"ts-node": "^10.7.0",
"typescript": "^4.6.4"
cross-env 是处理兼容性的,兼容的是ts-node 和 typescript
一般插件是 ts-node 和 typescript 统一是本地 或者统一是 线上模式。
安装express
需要安装两个 一个是 express 一个是 @types/express -D
ts文件是不支持.json文件的,但是可以通过修改配置文件完成:
"resolveJsonModule": true,
在ts中使用require的问题
如果在ts中使用require的可能会报错
所以尽量使用import的方式
全局对象
__filename 文件的位置
__dirname 目录的位置
process 与当前的进程相关
timer 执行顺序和事件循环
module,exports 处理模块的导出
require 实现模块的加载
全局对象是global,在node里边是没有this的。
在node的js文件中的this是空的。而放在(function(){})();中的this和 global是相等的。这个其实是node给我们做了一个处理。
console.log(this);//{}
(function(){ //放入自执行函数里就相等了
console.log(this===global);//true
})();
process
全局变量
process是和进程有关系的全局变量
内存:memoryUsage
console.log(process.memoryUsage());
{
rss: 19234816,
heapTotal: 4509696, //内存的总大小
heapUsed: 2376920, //使用内存的大小
external: 803681, //可以扩展内存的大小
arrayBuffers: 9386 //独立的buffer内存大小,我们之后创立的buffer大小是在这个大小的基础上增加的。
}
查看cup的使用:
console.log(process.cpuUsage);//查看cup的使用情况
查看目录、node环境、cup架构、用户环境、系统平台
//当前环境的运行目录,以下两个方法返回的绝对路径是相等的
console.log(process.cwd()); //当前工作目录 current work diraction
console.log(__dirname);
console.log(process.version);//当前node版本
console.log(process.versions)//当前node版本以及环境的版本,包括引擎版本等
console.log(process.arch);//当前cup的架构,例如电脑是64为还是32位的
console.log(process.env.NODE_ENV);//用户环境,一般是生产环境或者是开发环境,可以通过常量NODE_ENV查看
console.log(process.env.PATH) //系统环境变量的获取
console.log(process.platform);//当前系统平台是window还是mac
启动参数 pid 运行时间
console.log(process.argv);//获取传入的参数
console.log(process.argv0);//获取第一个参数
console.log(process.pid);//当前的应用运行的id
console.log(process.uptime());//当前文件运行的时间,单位秒