socket.io
的官方文档有一个从客户端导入和使用 socket.io
的示例,如下所示:
index.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
:
main.js
import io from "../socket.io/socket.io.js"
const socket = io()
// Some other code here...
在这种情况下,导入 socket.io
的正确形式是什么?
最佳答案
方法有很多种,最简单的一种:
您可以只使用socket.io-client
CDN或从 dist
文件夹提供服务 socket.io-client github repository .它会将 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
。您可以查看示例 here
为什么 import
不起作用?
因为 import
是一个 ES6 运算符。开箱即用的浏览器不支持它。哎呀,连 node 都不支持 import
和 export
。这就是为什么您需要将它们转译(转换)为 ES5 语法,以便浏览器也可以运行它。可以看看靠谱的Babel REPL
并自己将 Es6 转换为 Es5 以获得感觉。
关于javascript - 如何在 vanilla javascript 中从客户端导入 socket.io?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56707417/