2015-07-29 2 views
0

Итак, я знаю node.js, но я учусь как socket.io и express.js (только что начал express/socket несколько часов назад).факторинг кода на стороне клиента в socket.io

Это не огромная проблема, но мне нравится, чтобы мой код был чистым, и я пытаюсь разложить код своей клиентской стороны, так что это просто тег скрипта как src. Например, на моей странице index.html У меня есть следующие:

.. 
<head> 
    <title>Example Title</title> 
    <link href="./styles/index.css" rel="stylesheet" type="text/css" /> 
    <script src="./scripts/index.js" type="text/javascript"></script> 
    <script src="/socket.io/socket.io.js" type="text/javascript"></script> 
</head> 

Где ./scripts/index.js является Java-код index.html. Похоже

var socket = io.connect("http://localhost:8000"); 

document.getElementById("sendBox").submit = function() { 
    var msg = document.getElementById("m");socket.emit("chat message", msg.value); 
    msg.value = ""; 
    return false; 
}; 

Все маршрутизация работает, но теперь проблема в том, что я получаю ошибку «ReferenceError: ИО не определен», когда я пытаюсь использовать код. На веб-сайте socket.io в их примере всегда есть только тег скрипта со всем встроенным в него кодом страницы. Я думаю, что это уродливо и означает, что мне нужно отредактировать html-страницу, чтобы редактировать js для страницы. Это особенно раздражает, когда подсветка и автокоррекция в моем редакторе выравниваются по html в html-файле, а не js. Это не катастрофическая вещь, я МОГУ Вставить мой код, как socket.io показывает в своих примерах, но я бы предпочел не делать этого.

для тех, кто смущает то, что я имею в виду, начинающий пример кода Socket.io в:

<head> 
    <title>Socket.IO Chat</title> 
    <script src="https://cdn.socket.io/socket.io-1.2.0.js"></script> 
    <script src="http://code.jquery.com/jquery-1.11.1.js"></script> 
    <script> // This is the code i want to look more like^
    var socket = io(); 
    $('form').submit(function(){ 
     socket.emit('chat message', $('#m').val()); 
     $('#m').val(''); 
     return false; 
    }); 
    </script> // End of the code I'd like to factor out. 

Подводя итог, как я могу сделать переменную «Ио» доступна для моего index.js сценария?

Благодаря

+0

Правильно ли это: '<сценарий SRC = "/socket.io/socket.io.js" ...> '? Это будет ссылаться на каталог «socket.io» в корневом каталоге вашего сервера. Проверьте панель «Отладчик» браузера (F12) Net, чтобы узнать, загружена ли «socket.io.js». – Kenney

+0

На самом деле, socket.io немного странно, но они делают свой скрипт доступным в этом месте специально, поэтому независимо от того, где находится ваш веб-сайт, этот путь приведет вас к их сценарию. – masquarainian

ответ

0

попробуйте поменять теги JS скрипт

<head> 
    <title>Example Title</title> 
    <link href="./styles/index.css" rel="stylesheet" type="text/css" /> 
    <script src="/socket.io/socket.io.js" type="text/javascript"></script> 
    <script src="./scripts/index.js" type="text/javascript"></script> 
</head> 

, как ты был, он будет пытаться запустить И.О., прежде чем он был загружен

+0

Ой, это была проблема. Хороший звонок! благодаря – masquarainian