Nodejs金沙官网线上 入门

二、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

nodejs 是什么

nodejs is a JavaScript runtime built on Chrome's V8
nodejs 并不是一门语言,而是一个运行环境
特点:

  • 事件驱动
  • 非阻塞 I/O

一、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
  • 本地代码构建(编译之类)

CommonJS

  • 每个文件是一个模块,有自己的作用域,比如上面栗子,外面包裹了一个函数,就变成了局部作用域了。
  • 在模块内部 module 变量代表模块本身。
  • module.exports 属性代表模块对外的接口

一个栗子

金沙官网线上 1

image

nodejs 自动帮我们做了,外面包了一个函数,实现模块化。

global 全局对象

  • CommonJS
  • Buffer:处理二进制数据流
  • process:进程
  • console
  • timer

把变量赋给 global 对象作为属性,则所有的文件都能拿到该变量。

为什么前端偏爱nodejs

  • 前端职责范围变大,统一开发体验
  • 在处理高并发,I/O密集场景性能优势明显

CPU密集 VS I/O密集

  • CPU密集: 压缩、解压、加密、解密
  • I/O密集: 文件操作、网络操作、数据库

require 规则

  • / 表示绝对路径,./ 表示相对于当前文件的相对路径
  • 支持 js、json、node 拓展名,不写的话就会依次尝试。
  • 不写路径则认为是 build-in 内部自带的模块或者各级 node_modules 内的第三方模块。

require 特性

  • module 被加载的时候执行,加载后缓存,也就第一次加载并执行,第二次有缓存就不加载了。
  • 一旦出现某个模块被循环加载,就只输出已执行的部分,还未执行的部分不会输出。(太绕了,要避免循环引用)

nodejs 内置模块

api文档

  • fs 文件系统模块,用来做文件的读写,

本文由金沙官网线上发布于Web前端,转载请注明出处:Nodejs金沙官网线上 入门

您可能还会对下面的文章感兴趣: