##一、描述一个完整的HTTP事物(访问一个网址后都发生了什么?)
* 1、输入网址
* 2、解析域名(主机名),对应的IP地址
* 3、建立连接(三次握手)(双工信道:发送信道、接受信道)
* 4、发送
* 5、四次挥手,断开连接
##二##
计算机网络OSI模型分为:物理层、数据层、网络层、传输层、会话层、表示层、应用层
HTTP:超文本传输协议是互联网上应用最为广泛的一种网络协议。
无状态协议:每一次请求对于服务器来说都是新的
get:请求的数据放在请求头中;post:会把请求数据放在请求体中
##三、NodeJs##
Node.js是一个基于Chrome JavaScript运行时建立的平台, 用于方便地搭建响应速度快、易于扩展的网络应用
###1、模块化###
模块化用于解决变量名冲突和依赖问题
**expree框架**
通过应用生成器工具 express 可以快速创建一个应用的骨架。
* 运用npm下载安装
* -h 选项可以列出所有可用的命令行选项,可以用来检测是否安装好
* 创建一个命名为 myapp的文件
* 分别通过`$ cd myapp 和 $ npm install`安装所有依赖包
* `> set DEBUG=myapp & npm start`命令
* 在浏览器中打开 http://localhost:3000/ 网址
###2、CommonJs规范###
创建一个新的文件夹,引入CommonJs规范文件
Node程序由许多个模块组成,每个模块就是一个文件。Node模块采用了CommonJS规范。
根据CommonJS规范,一个单独的文件就是一个模块。每一个模块都是一个单独的作用域,也就是说,在一个文件定义的变量(还包括函数和类),都是私有的,对其他文件是不可见的。
当访问另一个JS文件时
`b.js //modle.export.add = add;
a.js //require(‘./b.js‘) `
**问题:null和undefined的区别**
相同:undefined和null在if语句中,都会被自动转为false,相等运算符甚至直接报告两者相等
不同:Undefined类型只有一个值,即undefined。当声明的变量还未被初始化时,变量的默认值为undefined。
Null类型也只有一个值,即null。null用来表示尚未存在的对象,常用来表示函数企图返回一个不存在的对象。null表示"没有对象",即该处不应该有值。典型用法是:
(1) 作为函数的参数,表示该函数的参数不是对象。
(2) 作为对象原型链的终点。
undefined表示"缺少值",就是此处应该有一个值,但是还没有定义。典型用法是:
(1)变量被声明了,但没有赋值时,就等于undefined。
(2) 调用函数时,应该提供的参数没有提供,该参数等于undefined。
(3)对象没有赋值的属性,该属性的值为undefined。
(4)函数没有返回值时,默认返回undefined。