我正在尝试创建一个简单的Io-web-chat。我最近想把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');
});
我还尝试将我的文件放在www.example.com示例中的公共类型结构中socket.io:
Chat
|-- Public
| |-- index.html
| `-- index.js
`-- server.js
在这种情况下,我改变了:html中的src="/index.js"
将/public/index.html
添加到server.js文件中,但没有成功。
这都是在本地主机上运行的。我哪里做错了?
5条答案
按热度按时间ylamdve61#
简单地将静态文件扩展名替换为这个扩展名。在我的例子中,文件夹名是
assets
,其中我有css
,js
,images
文件夹。8ulbf1ek2#
在我的例子中,
import { myFunc } from './config'
给予了我错误。使用import { myFunc } from './config.js'
解决了这个问题。xv8emn3q3#
如评论中所述:你需要一种方法来发送你的静态文件到客户端,这可以通过一个反向代理来实现,比如Nginx,或者简单地使用express.static()。
把你所有的“静态”(css,js,images)文件放在一个专用的文件夹里,不同于你放置“视图”(在你的例子中是html文件)的地方,我将它命名为
static
,完成后,在你的服务器代码中添加这一行:这将通过/static路由有效地服务于“static”文件夹中的每个文件。
因此,在客户端查询index.js文件将变为:
2hh7jdfx4#
我也遇到过类似的问题,通过省略代码中的前导斜杠解决了这个问题。例如,用
js/script.js
替换/js/script.js
。ej83mcc05#
在我的情况下,
取而代之