我是一名学习Javascript(Node.js)的Java开发人员。
这是我尝试运行的第一段代码:
var sys = require("sys"),
my_http = require("http");
my_http.createServer(function(request,response){
response.writeHeader(200, {"Content-Type": "text/plain"});
response.write("Hello World");
response.end();
}).listen(8080);
如果没有文档,我怎么知道createServer需要一个以请求和响应为参数的函数?我问这个是因为我想为我将很快开始面对的所有未记录的代码做好准备。以下是createServer函数的源代码:
function createServer(options) {
var bunyan = require('./bunyan_helper');
var InternalError = require('./errors').InternalError;
var Router = require('./router');
var Server = require('./server');
var opts = shallowCopy(options || {});
var server;
opts.name = opts.name || 'restify';
opts.log = opts.log || bunyan.createLogger(opts.name);
opts.router = opts.router || new Router(opts);
server = new Server(opts);
server.on('uncaughtException', function (req, res, route, e) {
if (this.listeners('uncaughtException').length > 1 ||
res._headerSent) {
return (false);
}
res.send(new InternalError(e, e.message || 'unexpected error'));
return (true);
});
return (server);
}
我理解Javascript是一种动态类型语言,但想知道人们如何在不知道类型的情况下调试或理解彼此的代码。
答案 0 :(得分:2)
关于javascript的好处是它的解释意味着你总是可以访问实际的源代码本身。对于节点,您可以查看node_modules/blah
来阅读源代码,但是npm上的绝大部分内容也是github上的开源代码,您也可以在那里阅读源代码。
在浏览器中,如果您遇到缩小的代码,开发人员工具会有一个自动格式按钮,但在节点中通常不需要,因为代码是未发送的。
也就是说,有些东西记录得很好,有时文档是错误的或过时的,有时阅读源代码既不快也不简单。但是,如果某些事情对您来说确实存在问题并且没有文档记录并且难以阅读,那么您可以并且应该在npm上切换到其他内容,因为“不是没有人有时间”。
答案 1 :(得分:0)
使用JavaScript时,您必须非常熟悉api。例如,document.getElementById(id)。代码中的id没有任何提示,但是很容易理解。