了解Nodejs文档

时间:2013-07-21 19:43:12

标签: javascript node.js

我可能在思考,但我无法消化Nodejs文档。我是javascript的新手,来自Java背景。

我的问题不是关于任何特定的nodejs功能只是整体理解。下面我举一个我想要了解的例子......

使用像Java这样的静态类型语言时,很清楚方法调用需要什么类型。一个简单的例子,如果我想对int的数组进行排序,我可以查看Arrays.sort并看到它需要一个int [](对于其他类型也是如此)。我也可以看到它返回void。

public static void sort(int[] a)

然而,javascript是一种动态语言,因此api调用没有类型。以crypto module

为例
crypto.pbkdf2(password, salt, iterations, keylen, callback)
Asynchronous PBKDF2 applies pseudorandom function HMAC-SHA1 to derive a 
key of given length from      the given password, salt and iterations. 
The callback gets two arguments (err, derivedKey).

因此,如果没有出去寻找示例代码,或者查看nodejs源代码,我如何知道函数的参数类型?我意识到可以通过查看名称来推导类型(即回调是一种函数类型),但还有其他方法吗?

例如,文档说回调有两个参数err和derivedKey。 derivedKey的类型是什么,类型或错误是什么?我错过了有关文档的内容吗?你怎么知道你是否传递了正确的类型?

注意:我已经知道derivedKey和err的类型是什么,所以我不需要像“derivedKey是......”这样的答案。我的问题是关于来自静态类型的人对Nodejs文档的整体理解语言并不是特定于crypto.pdkdf2。

2 个答案:

答案 0 :(得分:3)

嗯,你几乎在思考。如果没有明确解释,你必须猜测大部分。就像你可以猜测迭代和keylen是数字而不是字符串。 NodeJS docs在他们认为你无法猜测时明确地解释参数,或者你必须知道关于它的其他信息。就像在crypto.createCredentials(details)中一样,他们解释说细节是一本字典,你需要使用哪些键。 F.i.在err和derivedKey的情况下,由于没有明确的信息,我会假设两者都是字符串。如果事实证明它们不是,我会在回调函数中调试它们以查看它们是什么。

如果文档记下所有参数的类型但不知道是否值得付出努力,那么文档可以更加清晰。

答案 1 :(得分:1)

我有一些C#和Java的经验,并且已经编程了大约一年的JavaScript,所以我可能能够构建它。

物体

JavaScript的一个方面是你可以在现场制作这样的对象:

var options = {
    name: "something",
    age: 9,
    what: function() {
        return 8;
    }
};

每个人都利用这一点,因此它是理解JavaScript库的关键。

您也可以使用上面的options对象,然后按照以下步骤操作:

options.mood = "ok";

换句话说,对象只是属性的束,并且没有设置结构。您可以使用for ... in循环之类的语言结构来迭代它们。也就是说,err之类的“类型”基本上是一个关联数组。

回调

回调基本上无处不在,所以问题就变成了如何处理它们。常见的模式是function (err, maybeSomething)。大多数时候,你只关心err是“某事”。也就是说,你会经历这样的事情:

if (err) {
    ...
}

坦率地说,我做了很多console.log(err),看看我在开发过程中遇到了什么。

之后,这完全取决于文档。有些比其他更好。你真的没有遗漏任何东西。关于唯一的“技巧”是,有时一个文档将解释顶部的一切。

你会发现自己有时会找到一个库正在做什么,但97%的时间会有一些快速的猜测和检查会让你感动。