所以,我知道node.js,但我正在学习如何使用socket.io和express.js,(几小时前刚刚开始使用express / socket)。
这不是一个大问题,但我喜欢我的代码是干净的,而且我试图将我的客户端代码分解出来,所以它只是作为src的脚本标记。例如,在我的index.html页面上,我有以下内容:
..
<head>
<title>Example Title</title>
<link href="./styles/index.css" rel="stylesheet" type="text/css" />
<script src="./scripts/index.js" type="text/javascript"></script>
<script src="/socket.io/socket.io.js" type="text/javascript"></script>
</head>
其中./scripts/index.js是index.html的javascript代码。它看起来像
var socket = io.connect("http://localhost:8000");
document.getElementById("sendBox").submit = function() {
var msg = document.getElementById("m");socket.emit("chat message", msg.value);
msg.value = "";
return false;
};
所有路由工作正常,但现在问题是当我尝试使用代码时,我收到错误“ReferenceError:io is not defined”。在socket.io的网站上,他们的示例总是只有一个脚本标记,其中嵌入了所有特定于页面的代码。我认为这很难看,这意味着我必须编辑一个html页面来编辑我的js页面。当我的编辑器中的突出显示和自动更正与html文件上的html对齐时,尤其令人烦恼,而不是js。这不是一个灾难性的事情,我可以在他们的例子中嵌入我的代码,例如socket.io节目,但我不想这样做。
对于那些让我感到困惑的人,Socket.io的初学者示例代码:
<head>
<title>Socket.IO Chat</title>
<script src="https://cdn.socket.io/socket.io-1.2.0.js"></script>
<script src="http://code.jquery.com/jquery-1.11.1.js"></script>
<script> // This is the code i want to look more like ^
var socket = io();
$('form').submit(function(){
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
</script> // End of the code I'd like to factor out.
总结一下,我如何使变量“io”可用于我的index.js脚本?
由于
答案 0 :(得分:0)
尝试交换js脚本标记
<head>
<title>Example Title</title>
<link href="./styles/index.css" rel="stylesheet" type="text/css" />
<script src="/socket.io/socket.io.js" type="text/javascript"></script>
<script src="./scripts/index.js" type="text/javascript"></script>
</head>
你拥有它的方式,它会在加载之前尝试运行io