概述
1.node.js不同版本 api不同
2.版本号:偶数为稳定版,奇数为不稳定版,建议选择最新的稳定版
模块
1.exports 对象 用来暴露方法
2.require 函数来导入 模块
3.把属性赋予exports的结果和赋予module.exports是一样的
方法
1.URI 是资源标识规范,URL是资源定位标记 url是uri的子集
2.url.parse 解析url地址,将其解析成一个对象
url.format 将一个url对象,格式化成为一个url字符串
url.resolve 也是用来解析的,有两个参数 通过域名与文件路径合成地址串
3.http://blog.csdn.net/fh13760184/article/details/6840696 nodejs中文api
url.parse()
url.format()
url.resolve()
url.parse()
query变成了一个对象
url.parse()如果不知道协议,用三个参数
在nodejs输入框中输入比较好
4.queryString 把序列化对象 格式化为 字符串
5.转意、反转意
6.http知识填坑
http客户端发起请求,创建端口
http服务端在端口监听客户端请求
http服务端向客户端返回状态和内容
nodejs 与v8的关系
http://www.tuicool.com/articles/2YvY3eB
V8是Google主导的一个开源项目,它是Chrome浏览器的核心。它首次公开发布是在2008年9月2日,这天也是Chrome浏览器的首个版本发布。它是浏览器性能的一次飞跃,它将浏览器技术推向了一个全新的高度。它使用C++写成,它革命性的创举是将Javascript源码预编译为机器码,而不是像以前那样将Javascript翻译为字节码,然后在运行时使用JIT动态执行代码。
Java编译后是字节码,C/C++以前全都是是机器码。
电脑只能运行机器码。Java在运行的时候把字节码变成机器码。
C/C++在编译的时候直接编译成机器码。
输入网址回车之后:
1.Chrome搜索自身的DNS
2.搜索操作系统自身的DNS缓存
3.读取本地的HOST文件
4.浏览器发起一个DNS的一个系统调用(
①宽带运营商服务器查看本身的缓存
②运营商服务器发起一个迭代DNS解析请求
)
5.浏览器获得域名对应的IP地址后,发起HTTP”三次握手”
6.TCP/IP连接建立起来后,浏览器就可以向服务器发送HTTP请求了
7.服务器端接收请求,根据路径参数,经过后端的一些处理,把处理后的一个结果的数据返还给浏览器
8.浏览器解析和渲染页面,里面的JS、CSS、图片静态资源同样经过上面的主要的7个步骤
7、http相关知识举例
用谷歌看http信息
network—》timing—》stalled等待时间
方法:
get 主流网站 输入网址访问一般都是get方式
post 表单提交 新建用户等 新增资源
put 更新资源 换头像
delete
head 与get有点像
trace
options
状态码
1xx 请求已经接受 继续处理
2xx 请求已经成功处理掉了
3xx 重定向 需要跳转
4xx 客户端错误
5xx 服务器端错误
具体常用状态码请自行百度
8、
1)异步:
settimeout
setinterval
2)IO
磁盘的写入读出
3)阻塞
非阻塞:等待过程中可以做别的
9.上下文和作用域
作用域:访问变量或函数的能力,局部作用域可以访问其外部或全局作用域下的变量或函数,外部或全局作用域访问不了局部作用域。JS是函数级作用域;
上下文:this变量的值及其指向。this :指向谁,可以打印出来看看
函数调用不同this指向不同:1.作为对象方法,this指向调用的对象自身 2.作为函数调用,this指向全局
作用域和上下文不同,作用域和变量的访问有关系,上下文跟this有关系。
call apply 改变this指定的对象的引用
b.setMessage.call(a,”a的消息”):a执行时,上下文对象调用b对象的setMessage方法,相当于a.setMessage(“a的消息”)。
另外,call和apply的区别在于:call将参数依次传递给借用的方法作参数;而apply直接将这些参数放到一个数组中再传递。
全局变量使用this,指向函数拥有者
构造函数使用this,指向新构建好的函数,实例对象。
call 和 apply 都是为了改变某个函数运行时的 context 即上下文而存在的,换句话说,就是为了改变函数体内部 this 的指向。
二者的作用完全一样,只是接受参数的方式不太一样。
例如,有一个函数 func1 定义如下:
var func1 = function(arg1, arg2) {};
就可以通过 func1.call(this, arg1, arg2); 或者 func1.apply(this, [arg1, arg2]); 来调用。其中 this 是你想指定的上下文,他可以任何一个 JavaScript 对象(JavaScript 中一切皆对象),call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。
JavaScript 中,某个函数的参数数量是不固定的,因此要说适用条件的话,当你的参数是明确知道数量时,用 call,而不确定的时候,用 apply,然后把参数 push 进数组传递进去。当参数数量不确定时,函数内部也可以通过 arguments 这个数组来便利所有的参数。
10.http性能测试
安装apache ab工具 http://jingyan.baidu.com/article/29697b912f6539ab20de3cf8.html
在apache/bin/目录下执行 ab -n1000 -c10 http://www.imooc.com/video/7964 进行测试
1、cheerio可以理解成一个 Node.js 版的 jquery,对语法不明白的先去学下jquery。
2、视屏中慕课网的html源码out了,class名之类的变了。
3、video的class名通过find找不到,不明白为什么,换成找标签可以。