node.js(一)

127 阅读2分钟

基础部分

Nodejs应用场景

  1. IO密集型高并发请求,Nodejs作为中间层(Bff层),接收客户端Http请求,格式化数据,渲染html页面,合并接口请求,解决跨域,数据缓存
  2. 操作数据库提供API服务
  3. 实时聊天程序
  4. Nodejs更加适合IO密集型任务

Nodejs全局对象

与浏览器平台的 window 不完全相同,Nodejs全局对象上挂载许多属性,全局对象是JavaScript中的特殊对象,Nodejs中全局对象是global,不需要提前定义,Global的根本作用就是作为宿主,全局对象可以看做是全局变量的宿主
  1. __filename:返回正在执行脚本文件的绝对路径
  2. __dirname:返回正在执行脚本所在目录
  3. timer类函数:执行顺序与事件循环间的关系
  4. process:提供与当前进程互动的接口
  5. require:实现模块的加载
  6. module,export:处理模块的导出
console.log('tag', __filename) // 返回一个完整的路径
//C:\Users\Administrator\Desktop\learn\node-learn\node基础\node-global.js
console.log('tag', __dirname) // 返回所在目录
////C:\Users\Administrator\Desktop\learn\node-learn\node基础

//默认情况下 this 是空对象,和 global 并不是一样的
console.log('tag', this)

console.log(
  'tag',
  this === global
)(
  // false

  function () {
    console.log('tag', this === global) // true
  }
)()

全局变量-process

  1. 无需 require 可直接使用
  2. 可以获取进程信息:环境,cpu,内存
  3. 可以执行进程操作
// 1 资源:cpu 内存
/* console.log('tag', process) */

//console.log('tag', process.memoryUsage()) // 获取内存
/* rss: 18702336,   常驻内存
heapTotal: 4247552, 堆区
heapUsed: 2330368,  现在使用的内存大小
external: 788505,   底层占据的空间大小
arrayBuffers: 9382  一个独立的空间大小  可以通过 Buffer.alloc  改变*/

//console.log('tag', process.cpuUsage()) //获取cpu

// 2.运行环境 :运行目录,node环境,cpu架构,用户环境,系统平台

console.log('tag', process.cwd()) // 获取工作路径
console.log('tag', process.version) // node环境(版本)
console.log('tag', process.versions) // node v8 uv zlib brotli ares modules nghttp2 napi 的版本
console.log('tag', process.arch) // cpu架构  x64
console.log('tag', process.env) // 用户环境(生产环境或者开发环境)
console.log('tag', process.platfrom) //系统平台

// 3.运行状态:启动参数,PID,运行时间
console.log('tag', process.argv) // 获取启动参数,返回一个数组(路径等)
console.log('tag', process.pid) // 获取PID
console.log('tag', process.uptime()) // 运行时间

// 4.事件

process.on('exit', (code) => {
  //监听退出事件,里面不能执行异步代码
  console.log('tag', code)
})

process.on('beforeExit', (code) => {
  //监听退出之前事件,可以写异步代码
  console.log('tag', code)
})

process.exit() // 执行退出,不会触发 beforeExit,并且在这后面的代码也不会执行

// 5 标准输出 输入 错误

console.log = function (data) {
  // 输出
  process.stdout.write('---' + data + '\n')
}

// 输入
process.stdin.pipe(process.stdout)