求好心的大佬。能教教我如何看API文档。 我看node.js的文档,头好晕。
发布于 5 年前 作者 Aaron009 5737 次浏览 来自 问答

求好心的大佬,耐心的带我看懂API文档。 以前是做c#的。node.js api 实在看不懂。懂的人教我下。

希望答主,能耐心解答一下。越全面越好,有助于我理解。


1543332567520.png 比如这里又中括号,又中括号加逗号,又是啥意思。


还有 返回参数 是一个 http.Server 的实例。 我看到代码是这样写的

var server = http.createServer();
server.on("request", function(){
   console.log("收到客户端链接"); 
});

1543332774664.png 但是API文档里面 没有on这个函数啊, 我大概能理解 on 应该是侦听 request 这个事件,那么移除事件怎么写呢? 我该如何从API文档上面找到,除了on,还有其他的什么函数。


还有其他的API,写的参数。看着头好晕,根本看不懂写的啥 1543333064336.png


还有我明明看到API文档里某个函数里,写的有4个参数,其中最后一个参数才是 callback 函数。 可以写实例代码的时候,却是第三个参数就是 callback 函数。 我感觉还是我 API文档理解的有问题,望好心人,耐心的解答一下。。。

谢谢啦。 只要API文档理解了,我应该就可以node.js入门啦。

我是在这里看的API文档:http://nodejs.cn/api/fs.html

14 回复

你需要 npm i -D @types/node 和 下载编辑器vscode,这之后在编辑器就能看到接口的接口要求,如果参数不对就会有提示了

中括号是可选参数的意思,逗号是参数分割 on的选项一般是在该类的event标签下面 剩下的就是多写多练和简单的英文能力了,比如说request.end的data明显是数据,encoding表示编码字符串,callback在js世界里指回调函数。多看示例慢慢就能懂了。

突然想起一件过往,我英语口语不好,所以都避免使用英语口语,但被别人发现了,嘲讽我node文档肯定看不懂,就问了我文档里面类或方法后面标记0,1,2是什么?由于一时不知道,顿时语塞。后来查了才知道0是标记遗弃的方法,1是标记实验性,2是稳定的。所以即使文档不是很明白,只要肯查,后天都是可以弥补的。

@zy445566

示例如:

request.end([data[, encoding]][, callback])

中括号是可选参数的意思,逗号是参数分割. 那么就分割成这样。

[data[, 
encoding]][, 
callback]

分割完了之后,怎么那么乱。 我感觉毫无规律可言。

然后,on的选项一般是在该类的event标签下面

1543366308635.png

以http为例,我并没有找到 on这个函数啊,我只看到一堆事件。 我想问的重点是,除了有 on 这个函数,还有没有其他我不知道的函数。如果有我如何在API文档中,去找。

node 的文档是所有语言 我见过最辣鸡的。。。。。 很不清晰 可以看看 微软的文档 msdn 这才是真正的 文档

@Aaron009 bar(a[,b[,c]]) 就表示如果填了b,则可以可选的传入c 但如果b都没传,c也不能传。

抄自:https://zhidao.baidu.com/question/1708473868829153660.html

@siyue543241338 同感啊。node.js api文档看着头好昏。

@liangtongzhuo

感谢啊。感觉快要接近了,但是还有一个问题。 a[ 表示啥意思,可填可不填。不填的话,就不能填 b[ 。

希望大佬能提供全面的讲解。这对我理解API,很重要。

中括号的 [], 参数都是可选类型 url[,type[,body]] url 必填,type 不写,body 也不能写。

//  假如 API 如下
function httpRequest (url, type, body){
	if(!type || type === 'get'){
    //发起 url get 请求
	}else if(type === 'post'){
	//发起 url post 请求,需要到 body 参数
	}
}


const url = 'www.baidu.com';
const body = {code: 1};
// 没有问题
httpRequest(url);
// 没有问题
httpRequest(url, 'get');
// 这样就很奇怪了,传了 url 与 body,没有 type 就会出错了
httpRequest(url, body);
// 没有问题
httpRequest(url, 'post', body);

@liangtongzhuo

http.createServer([options][, requestListener])

[options][
requestListener]

这个呢?难道真的是,只有我一个人看的晕?

@Aaron009 options,requestListener 都为可选参数,并没有依赖关系

@Aaron009 一般不看这个文档的,都是看 @types/node 里面的定义,只有不确定接口的含义才会看下

还有 nodejs.cn 并不是官方站点,里面的翻译有的地方翻的不好,具体哪里忘了,推荐英文文档开谷歌翻译看

我也跟着学了一波 哈哈哈 中括号的 [], 参数都是可选类型 url[,type[,body]] url 必填,type 不写,body 也不能写。

试答一下

问题1: http.createServer([option][, requestListener]) 2个参数都用中括号包着,代表2个都是可选参数 逗号用来分割参数,我想把逗号移出去会不会好理解一点

问题2: http.createServer返回http.Server的实例 http.Server继承net.Server net.Server继承EventEmitter on()就是EventEmitter提供的,可以去看看Events这一节 EventEmitter是Node.js很重要的类,很多类都是继承EventEmitter的

问题3: request.end([data[, encoding]][, callback]) 最外层2个中括号分成两部分,[data[, encoding]]和[, callback] 两部分都是可选参数,其中[data[, encoding]]里面又有一个中括号 encoding又是一个可选参数,就是说如果这一块你要传参,可以只传data不传encoding 但是要传encoding就必须先传data

所以可能情况: request.end() request.end(data) request.end(data, encoding) request.end(callback) request.end(data, callback) request.end(data, encoding, callback)

实现是这样的: (Node.js源码)

function end(chunk, encoding, callback) {
  if (typeof chunk === 'function') {
    callback = chunk;
    chunk = null;
  } else if (typeof encoding === 'function') {
    callback = encoding;
    encoding = null;
  }
  // ...
}

问题4: 理解问题3,callback是第3个参数 调用的时候却能是第1个,也能是第2个

大神我终于理解了,文档我也看懂了。 现在突然觉得以前写ActionScript3的时候,文档写的真好。至少文档里我能一眼看出来,改实例集成的是谁,总共有哪些方法。 不知道Node.js在这方面要是能优化一下,就好了。 给你们一个链接:https://help.adobe.com/zh_CN/FlashPlatform/reference/actionscript/3/flash/net/URLLoader.html 看看人家的文档,真心好。

回到顶部