nodejs

nodejs.org

npmjs.com

github.com

stackoverflow.com

nodejs:偶数是稳定版,奇数为非稳定版本

nodejs事件驱动模型

nodejs:是单线程的,通过回调来实现异步

nodejs:适合于高并发,io密集操作等

URL:

  url.parse('http://www.baidu.com',true):是把url地址解析成对象,第二个设为true后解析出来的query会变为对象,url.parse('www.baidu.com/know',true,true)第三个参数设为true时host和pathname将发生变化。

  url.format():跟上面的正好相反,它是把解析过后的对象转换成url地址

  url.resolve('http://www.baidu.com','/know'):可以将两个值拼接成合法的url地址

querystring用于处理参数:

  querystring.stringify(序列化参数):

  querystring.stringify({name:'hhm',course:['h','m'],from:''},',',':'):第一个参数表示要序列化的值,第二个参数表示序列化后的每个值用什么符号分割, 第三个参数表示序列化过后的key和value中间要用什么符号 

  querystring.parse('name=hhm&course=h&course=m&from='):与上面的作用相反,这里是反序列化(默认情况下分隔符是&,如果你要解析的不是的话,要传第二个参数表明你的分隔符是什么,键值对的符号不是=的话,也同样要给出明确的指定。这里还可以设置字符串最大长度)

  querystring.escape('<哈哈>'):转义你输入的值

  querystring.unescape('%2%3%5%8%1%32'):反转义你输入的值

http相关知识:

查看chrome缓存:chrome://net-internals/#dns

 发起http请求的过程以chrome浏览器为例:

1.chrome搜索自身的DNS缓存(无)

2.搜索操作系统自身的DNS缓存(浏览器没有找到缓存或缓存已经失效)

3.读取本地的HOST文件

4.浏览器发起一个DNS的一个系统调用

5.浏览器获得域名对应的IP地址后,发起HTTP“三次握手”

6.TCP/IP连接建立起来后,浏览器就可以向服务器发起HTTP请求了。使用了比如说,用HTTP的GET方法请求一个根域里的一个域名,协议可以采HTTP1.0的一个协议

7.服务器端接收到了这个请求,根据路径参数,经过后端的一些处理之后,把处理后的一个结果数据返回给浏览器,如果是慕课网的页面就会把完整的HTML页面代码返回给浏览器。

8.浏览器拿到了完成的HTML页面代码,在解析和渲染这个页面的时候,里面的js css 图片静态资源,他们同样也是一个个HTTP请求都需要经过上面的主要七个步骤

9.浏览器根据拿到的资源对页面进行渲染,最终把一个完整的页面呈现给用户

10.状态码:

  1XX:表示请求已经接收继续处理

  2XX:请求已经成功的接收处理掉了 200(成功 ok)

  3XX:重定向

  4XX:表示客户端错误,请求的时候有语法错误等,请求无法实现(400:客户端请求语法错  误,401:请求未经授权,403:服务器端收到这个请求,但是被拒绝提供服务,404:没有找到,有可能是输错了url地址,500:服务器端发生了不可预期的错误,503:服务器端还不能处理当前客服端的请求)

  5XX:表示服务器端的错误  

11.http的源码解读: 

  IncomingMessage和OutgoingMessage: 提供输入输出流的对象

 

posted @ 2017-05-25 09:36  吃草的虾米  阅读(152)  评论(0编辑  收藏  举报