欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Nodejs入门(一)

程序员文章站 2023-04-03 10:32:54
这一系列博客将记录我学Nodejs的过程,第一篇是关于Nodejs的介绍,让大家了解什么是Nodejs ......

一、nodejs介绍

1、nodejs是ecmascript的runtime

2、nodejs使用了event-driven(事件驱动)non-blocking i/o model(无阻塞的io模型)

  • 非阻塞:i/o时函数立即返回,进程不等i/o完成
  • event-driven:nodejs靠事件进行驱动

3、cpu密集 vs i/o密集

  • cpu密集:压缩、解压、加密、解密
  • i/o密集:文件操作、网络操作、数据库

因为js操作是i/o密集,所以nodejs是js在serves上面的runtime

4、高并发应对之道

  • 增加机器数
  • 增加每台机器的cpu数

5、nodejs单线程

  • 单线程只针对主进程,i/o操作系统底层多线程调度(nodejs自己是单线程,但它有一部分任务交给操作系统自己去做多线程)
  • 单线程不是单进程

6、nodejs应用场景

  • web server
  • 本地代码构建(编译之类)

二、nodejs开发环境与调试工具

1、环境

  • commonjs 规范
  • global 对象(类似于js里面的window对象)
  • process 当前执行的进程

2、commonjs规范

  • 每个文件都是一个模块,都有自己的作用域
  • 在模块内部module变量代表模块本身
  • module.exports属性代表模块对外接口(将模块的一些东西输出)
  • require规则
    • / 表示绝对路径,. / 表示相对于当前文件的
    • 支持js、json、node的拓展名
  • require特性
    • module被加载的时候会执行一遍,并进行缓存,第二次直接用缓存里面的结果
    • 当一个模块被循环加载(a依赖b,然后b又依赖a),那么只会输出已经执行的部分(a执行在b依赖a之前a该执行的部分)

3、global全局对象

  • commonjs
  • buffer、process、console
  • timer