>socket.io
的官方文档有一个从客户端导入和使用socket.io
的示例,如下所示:
索引.html
<body>
<script src="/socket.io/socket.io.js"></script>
<script src="https://code.jquery.com/jquery-1.11.1.js"></script>
<script>
$(function () {
var socket = io();
// Some other code in here...
});
</script>
</body>
现在我正在尝试将我的js
代码放在main.js
文件中(在public
文件夹中的index.html
旁边(。这就是我所做的,它给了我Unexpected identifier
:
主.js
import io from "../socket.io/socket.io.js"
const socket = io()
// Some other code here...
在这种情况下,导入socket.io
的正确形式是什么?
你可以这样做:
把它放在你的索引中.html :
<body>
<script src="/socket.io/socket.io.js"></script>
<script src="main.js">
// some code here...
</body>
并把它放在你的主要.js :
var socket = io()
有多种方法,最简单的一种:
您可以只使用socket.io-client
CDN 或从dist
文件夹 socket.io 客户端 github 存储库提供服务。它会将io
对象添加到window
。这在数学上意味着io
将是您可以使用的全局变量。
您需要使用 script
标记将其添加到您的 html 页面。
您可以将其用作:
<script src="/socket.io/socket.io.js"></script>
<script type="text/javascript">
var socket = io('http://localhost');
socket.on('news', function (data) {
console.log(data);
socket.emit('my other event', { my: 'data' });
});
</script>
或者,您可以使用webpack
或browserify
来构建JS文件并将其导入index.html
中。您可以在此处查看示例
为什么import
不起作用?
因为import
是ES6运算符。开箱即用的浏览器不支持这一点。哎呀,即使是节点也不支持import
和export
。这就是为什么您需要将它们转译(转换(为 ES5 语法,以便即使是浏览器也可以运行它。您可以查看可靠的Babel REPL
并将 Es6 转换为 Es5 以获得感觉。
如果您遵循 socket.io 文档,则应添加这些行
<body>
<ul id="messages"></ul>
<form id="form" action="">
<input id="input" autocomplete="off" /><button>Send</button>
</form>
</body>
<script src="/socket.io/socket.io.js"></script>
<script src="main.js"></script>
</html>
并确保将这些行添加到索引中.js
const path = require("path"); app.use(express.static(__dirname));
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.7.4/socket.io.js">
</script>
<script>
var socket = io(SOCKET_ENDPOINT);