如何更改socket.io聊天应用程序,使其使用外部javascript和css文件?
我为socket.io聊天应用程序做了演示,但在演示中,html文件中有javascript/jquery和css内联。我如何修改此应用程序,使内联脚本和css可以位于发送给客户端并由客户端使用的外部文件中 以下是服务器代码:如何更改socket.io聊天应用程序,使其使用外部javascript和css文件?,javascript,jquery,socket.io,Javascript,Jquery,Socket.io,我为socket.io聊天应用程序做了演示,但在演示中,html文件中有javascript/jquery和css内联。我如何修改此应用程序,使内联脚本和css可以位于发送给客户端并由客户端使用的外部文件中 以下是服务器代码: //index.js var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); app.get('/', fun
//index.js
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/public/index.html');
});
io.on('connection', function(socket){
socket.on('chat message', function(msg){
io.emit('chat message', msg);
});
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
这里是html:(我添加了一条注释,我想在一个单独的js文件中启动脚本)
//index.html
Socket.IO聊天
Socket.IO聊天应用程序
命令:“/nick”设置昵称,“/join”加入/创建聊天室,“/leave”离开聊天室
//以下是我希望在单独文件中的CSS:
*{边距:0;填充:0;框大小:边框框;}
正文{字体:13px Helvetica,Arial;}
表单{background:#000;填充:3px;位置:固定;底部:0;宽度:100%;}
表单输入{边框:0;填充:10px;宽度:90%;右边距:5%;}
窗体按钮{宽度:9%;背景:rgb(130224255);边框:无;填充:10px;}
#消息{列表样式类型:无;边距:0;填充:0;}
#消息li{padding:5px 10px;}
#信息李:第n个孩子(奇数){背景:#ddd;}
正文{背景色:白色;颜色:黑色;}
//下面是我希望位于单独文件中的JAVASCRIPT/JQUERY:
var nick=“”;
var房间=”;
$(函数(){
var socket=io();
$('form')。提交(函数(){
var消息={
尼克:尼克,
房间:房间,
消息:$('#m').val()
};
if($('#m').val()).startsWith(“/nick”)){
尼克=($('#m').val()).slice(6)+:“;
message.nick=nick;
控制台日志(尼克);
}
else if($('#m').val()).startsWith(“/join”)){
房间=($('#m').val()).slice(6);
message.room=房间;
控制台、日志(房间);
}
else if($('m').val()).startsWith(“/leave”)){
房间=”;
message.room=房间;
控制台、日志(房间);
}
否则{
emit('chat message',message);}
$('m').val('');
返回false;
});
socket.on('chat message',函数(msg){
console.log(“来自“+msg.nick+”房间中“+msg.room+”的消息,上面写着“+msg.Message”);
如果(msg.room==房间){
$(“#消息”).append($(“”).text(msg.nick+“”+msg.message));
}
});
});
发送
只需将所有代码移动到一个文件中,然后使用
。为什么您认为这与其他外部JS文件有任何不同?CSS也是如此。当我尝试获取:get 404(未找到)时,消息似乎很清楚,您要么将文件放在错误的位置,要么提供了错误的URL。您确定要将它与HTML放在同一个文档根目录中吗?
//index.html
<!doctype html>
<html>
<head>
<title>Socket.IO chat</title>
<header>
<center>
<h1>
Socket.IO Chat App
</h1>
<h4>
Commands: "/nick" to set nickname, "/join" to join/create chatroom, "/leave" to leave chatroom
</h4>
</center>
</header>
//HERE IS THE CSS THAT I WANT TO BE IN A SEPARATE FILE:
<style>
* { margin: 0; padding: 0; box-sizing: border-box; }
body { font: 13px Helvetica, Arial; }
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
form input { border: 0; padding: 10px; width: 90%; margin-right: .5%; }
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
#messages { list-style-type: none; margin: 0; padding: 0; }
#messages li { padding: 5px 10px; }
#messages li:nth-child(odd) { background: #ddd; }
body { background-color: white; color: black;}
</style>
</head>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
//HERE IS THE JAVASCRIPT/JQUERY THAT I WANT TO BE IN A SEPARATE FILE:
<script>
var nick = "";
var room = "";
$(function () {
var socket = io();
$('form').submit(function(){
var message = {
nick: nick,
room: room,
message: $('#m').val()
};
if(($('#m').val()).startsWith("/nick ")){
nick = ($('#m').val()).slice(6) + ": ";
message.nick = nick;
console.log(nick);
}
else if(($('#m').val()).startsWith("/join ")){
room = ($('#m').val()).slice(6);
message.room = room;
console.log(room);
}
else if(($('#m').val()).startsWith("/leave")){
room = "";
message.room = room;
console.log(room);
}
else{
socket.emit('chat message', message);}
$('#m').val('');
return false;
});
socket.on('chat message', function(msg){
console.log("Message from " + msg.nick + " in room " + msg.room + " saying: " + msg.message);
if(msg.room == room){
$('#messages').append($('<li>').text(msg.nick + " " + msg.message));
}
});
});
</script>
<body>
<ul id="messages"></ul>
<form action="">
<input id="m" autocomplete="off" /><button>Send</button>
</form>
</body>
</html>