Node.js
- node是一款对ES标准实现的JS引擎
- 通过node可以使js在服务器中运行
- node就是一款使用js编写的web服务器
- node底层是使用c++的编写的
- node的中js引擎使用的chrome的v8引擎
node的特点:
1.非阻塞、异步的I/O
2.事件和回调函数
3.单线程(主线程单线程,后台I/O线程池)
4.跨平台模块化(降低耦合性、方便代码复用)
- ES5中没有原生支持模块化,我们只能通过script标签引入js文件来实现模块化
在node中为了对模块管理,引入了CommonJS规范
模块的引用
使用 require()函数来引入一个模块
- 例子:
var 变量 = require(“模块的标识”);
- 例子:
模块的定义
- 在node中一个js文件就是一个模块
- 默认情况下在js文件中编写的内容,都是运行在一个独立的函数中,外部的模块无法访问
导出变量和函数
使用 exports
- 例子:
exports.属性 = 属性值;
exports.方法 = 函数;
- 例子:
使用module.exports
- 例子:
module.exports.属性 = 属性值;
module.exports.方法 = 函数;
module.exports = {};
- 例子:
模块的标识
模块的标识就是模块的名字或路径
我们node通过模块的标识来寻找模块的
对于核心模块(npm中下载的模块),直接使用模块的名字对其进行引入
var fs = require(“fs”);
var express = require(“express”);对于自定义的文件模块,需要通过文件的路径来对模块进行引入
路径可以是绝对路径,如果是相对路径必须以./或 ../开头
var router = require(“./router”);
Node仅仅对ES标准进行了实现,所以在Node中不包含DOM 和 BOM
Node中可以使用所有的内建对象
String Number Boolean Math Date RegExp Function Object Array
而BOM和DOM都不能使用
但是可以使用 console 也可以使用定时器(setTimeout() setInterval())Node可以在后台来编写服务器
Node编写服务器都是单线程的服务器- 进程
- 进程就是一个一个的工作计划(工厂中的车间)
- 进程负责为程序的运行提供必备的环境
- 线程
- 线程是计算机最小的计算单位,线程负责执行进程中的程序,线程是干活的
-线程相当于工厂中的工人
- 线程是计算机最小的计算单位,线程负责执行进程中的程序,线程是干活的
- 进程
传统的服务器都是多线程的
- 每进来一个请求,就创建一个线程去处理请求
Node的服务器单线程的
- Node处理请求时是单线程,但是在后台拥有一个I/O线程池