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: 提供输入输出流的对象