通过node.js在HTML中使用非内联javascript

时间:2012-06-10 03:19:41

标签: javascript node.js

我对node.js很新,所以如果这是一个很糟糕的问题我会道歉。我这里有一个简单的HTTP服务器:

var http = require('http');

http.createServer(function (request, response){

    response.writeHead(200, {"Content-Type":"text/html"});
//  response.write("<html><head><script type = 'text/javascript'>alert('hello');</script></head></html>");
    response.write("<html><head><script type = 'text/javascript' src = 'alerter.js'></script></head></html>");
    response.end();
}).listen(8000);

console.log("Server has started.");

alerter.js包含一行:

alert("hello");

为什么使用已注释掉的行正确引起警报,但调用alerter.js什么都不做?

2 个答案:

答案 0 :(得分:4)

正如Paul和Timothy指出的那样,你的问题是,当浏览器通过外部引用获取你的html时,它会回到服务器并要求它为alerter.js,期望将脚本传递给它。但是,无论请求请求是什么,您的服务器总会发送相同的内容,因此浏览器永远不会获取脚本。

您需要将服务器更改为至少处理alerter.js请求。实际上,我会使用Connect的静态文件处理程序来做到这一点;将脚本,样式表和图像等所有资源放在一个目录(通常称为“public”)中,并告诉静态处理程序从那里为它们提供服务。

答案 1 :(得分:3)

您缺少'结束类型属性。