我有这段代码(https://gist.github.com/2402116):
server.get('/', function(request, response) {
var k = fs.readFileSync('./index.html','utf8');
response.send( k );
});
尝试阅读此文件:
https://gist.github.com/2402070
并且浏览器继续加载并且永远不会结束。
但如果我从html文件中删除所有js include工作正常。
我做错了什么?
答案 0 :(得分:2)
您的current server implementation除了index.html
对基本网址的请求({1}}提供服务外,不做任何事情。您需要编写更多代码/路由,以便在'/'
中为js包含请求,即index.html
和'/app.js'
中的各种js文件。
现在,要点中的路由实现非常粗糙,并且不支持url匹配的许多方面。原始代码显然只是为没有资源的单个页面站点展示了一个概念。您将看到很快就会使代码工作变得繁重,因为您将有效地为每个资源请求编写路由,例如
'/js/'
你最好看看已经存在的node.js url路由库(例如director)或者express等内部支持routing的网络框架(和静态文件服务)。
答案 1 :(得分:1)
完成向浏览器发送数据后,您需要response.end()
。
实际上,由于您要一次发送所有数据,因此只需将response.send(k)
替换为response.end(k)
即可。虽然不推荐这种方法。我强烈建议您异步读取文件并将其发送到客户端块。
另请参阅:http://nodejs.org/api/http.html#http_response_end_data_encoding
答案 2 :(得分:1)
在k上尝试.toString
而不是发送.end
response.end( k.toString() );
也许有些奇怪的事情发生了,他试图评估代码