2016-04-28 2 views
0

Так я установил socket.io с помощью следующей команды:NodeJS + SocketIO стороне клиента сценарий

npm install --save socket.io 

Я настроил мой сервер правильно, и сейчас я пытаюсь настроить мой клиент. Чтобы мой клиент мог использовать библиотеку socket.io, мне нужно импортировать библиотеку socket.io. Традиционно, я бы сделал это так:

<script src="/path/to/socket.io.js"></script> 

За исключением, что все мои socket.io материал живет в node_modules на моем сервере, который не доступен из моих взглядов, которые имеют папку public как их корень. Как я могу загрузить socket.io в моем клиенте?

Для других вещей в прошлом я решил просто скопировать вставку в папку public/js, но я не желаю этого каждый раз, когда я устанавливаю файлы frontend с помощью npm. Я читал онлайн о таких вещах, как Bower и Browserify, но путаница была такой, что я решил приехать сюда и попросить прямой ответ.

ответ

2

Socket.IO добавляет свой собственный маршрут для публичной части, и вы должны использовать его как:

<script src="/socket.io/socket.io.js"></script> 

Он должен работать как шарм :)

2

Вы также можете загрузить с CDN, хотя что вряд ли обращается ваш общий вопрос с помощью NPM модулей на клиенте

<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/1.4.5/socket.io.js"></script> 

Bower отдельный менеджер пакетов из npm, ll он устанавливает модули в определенную папку с наклоном, которые модули, которые он обслуживает, должен быть готов для включения на клиенте с использованием тегов сценариев, при этом нет ограничений на это, и он не предлагает никаких функций и преимуществ по сравнению с использованием npm, d все равно придется включать скрипты из каталога где-нибудь, какое это имеет значение, если его называют vendor или node_modules?

Преимущество, которое вы получаете с помощью npm, - гораздо больший набор модулей, а с большим набором модулей поставляется более широкий набор качественных модулей. Тем не менее, модули на npm, как ожидается, будут придерживаться модульной системы узла, которая в основном является обычнойJS, опять же нет ограничений на это, npm может и будет размещать что-либо с действительным package.json файлом.

Такие инструменты, как Browserify, преобразуют эту модульную систему в формат, который может работать в браузере, вот и все, что они делают.

Если вы не хотите использовать систему сборки для своего интерфейса, то вам необходимо прибегнуть к загрузке с node_modules, быстрая символическая ссылка в вашей папке public была бы достаточной (хотя вы, вероятно, захотите быть умнее об этом) , Тем не менее, вам придется пройти дополнительный шаг к тому, чтобы модули, которые вы хотите использовать, были готовы для браузера, многие модули в пределах npm ориентированы на node, поэтому они не будут работать в браузере. Многие модули будут включать в себя сборку браузера или что-то вроде UMD, чтобы они работали повсюду.

Смежные вопросы