0
点赞
收藏
分享

微信扫一扫

例会笔记(3)


nodejs工程的建立:(上次例会)

nodejs概念的理解:(上次例会)
异步:
程序执行的顺序可能不与代码编写顺序一样

eg:yibu.js

回调函数:
将函数座位参数传递,在指定的地方进行调用。
eg:
callback.js

node.js 的模块系统:

一个文件即为一个模块,该模块自成作用域,在此模块内定义的函数、变量等等都是私有的,
对外部模块不可见。但是每个模块内都有一个module对象,该对象即代表了当前模块,该对象
的exports属性是模块提供的对外的接口。即如果外部模块如想访问该模块内部的数据,该模块
需要通过module.exports导出,然后其他模块通过require导入之后才能使用。

eg:hello.js

核心模块&自定义模块导入方式:

var hello = require(‘./hello’)

var http = require(‘http’)

export export default exports module.exports区别与联系:

exports实际上是模块内部指向module.exports的一个变量。
即在模块内部实际上有一行代码var exports=module.exports,
故我们在用exports变量时应注意不要重新定义exports变量,
以免切断了两者之间的关联。
for reference:

http://zhangchongmy.cn/2017/09/28/export-export-default-exports-module-exports%E5%8C%BA%E5%88%AB%E4%B8%8E%E8%81%94%E7%B3%BB/

(先要知道)继承:
子类拥有父类的所有属性和方法(除了构造函数和析构函数)。

子类可以拥有父类没有的属性和方法。

http模块:
eg;http.js

①在http模块下的createServer里面匿名函数是什么时候调用执行的
②函数的参数req和res是什么时候生成的

解:

源码:https://github.com/nodejs/node/tree/v0.12
node v0.12分支 http.js模块下的createServer方法

①在私有模块_http_server,js中的parseOnIncoming 方法里面调用执行了匿名函数
self.emit 触发了该匿名函数
②在parseOnIncoming 里面传入
1.”request”是http.IncomingMessage的一个实例
req不是在parseOnIncoming 生成,是在调用parseOnIncoming传入的

parser.onIncoming = parseOnIncoming

parser = parsers.alloc();

parers = common.parsers;
common 来自_http_common 模块

在_http_common 调用了onIncoming 传入的第一个参数就是req 即parse.incoming.

parse.incoming 是IncomingMessage的一个实例

即req是IncomingMessage的一个实例
IncomingMessage 是私有模块_http_incoming下的IncomingMessage

2.”response”是http.ServerResponse的一个实例

私有模块_http_server里面的parseOnIncoming 生成ServerResponse的一个实例

ServerResponse继承自OutgoingMessage

即response 也是OutgoingMessage的一个实例

OutgoingMessage来自私有模块_http_outgoing.js, 模块中将OutgoingMessage作为接口暴露出去

OutgoingMessage继承自Stream,即为Stream(流)的一个子类

其实回调函数被执行了两次

另一次调用?
参考 net.js

关键字: 流 事件监听 调用 继承

如果还有时间:
网站接入QQ登录:
①connet.qq.com实名认证 获取 _get_user_info 接口
②设置回调页面,(登录之后返回的页面)
③在页面里面引入官方的js文件,触发登录窗口,等待用户授权
④授权后获取用户信息;其中最重要的是一个叫openId的信息

openId:腾讯为了区别不同用户,但又不想把用户的QQ账号透露出去,所以给每一个用户都
设置了一个openId来标识不同用户,此处我们可以获取登录者的openId

作业:又一次调用在哪里?
愚人节快乐!

以上为个人学习笔记,若发现错误或者有疑问可以一起探讨。


举报

相关推荐

0 条评论