我正在尝试创建一个简单的Io网络聊天。
我最近想将我的html文件中的<script>
分离为一个外部js文件。
这是我非常简单的文件夹结构:
Chat
|-- index.html
|-- index.js
`-- server.js
html文件的相关部分:
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script src="index.js"></script>
</body>
</html>
index.js文件的相关部分:
$(function() {
//Initialize variables
var $messageArea = $('#messages');
var $InputMessage = $('#InputMessage');
var $InputName = $('#InputName');
//Initialize Socket
var socket = io();
//Send server Your message
socket.emit('chat message', $InputMessage.val());
});
server.js文件的相关部分:
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
我还尝试将文件放入socket.io示例中具有的公共类型结构中:
Chat
|-- Public
| |-- index.html
| `-- index.js
`-- server.js
在这种情况下,我更改了:
HTML中的src="/index.js"
已将/public/index.html
添加到server.js文件中
但没有运气。
所有这些都在localhost中运行。 我在这里做什么错了?
答案 0 :(得分:2)
如评论中所述:您需要一种将静态文件发送到客户端的方法。这可以通过Nginx之类的反向代理来实现,也可以简单地使用express.static()。
将所有“静态”(css,js,图像)文件放置在专用于其的文件夹中,这与放置“视图”(此处是html文件)的位置不同。在示例中,我将其称为static
。完成后,在服务器代码中添加以下行:
app.use("/static", express.static('./static/'));
这将通过/ static路由有效地服务“静态”文件夹中的每个文件。
在客户端中查询index.js文件将变为:
<script src="static/index.js"></script>