2016-04-28 13 views
0

だから私はインストールされているsocket.ioNodeJS + SocketIOクライアント側のスクリプトは、次のコマンドを使用して

npm install --save socket.io 

私が正しく私のサーバーを設定している、と私は今、私のクライアントを設定しようとしています。クライアントがsocket.ioライブラリを使用するには、socket.ioライブラリをインポートする必要があります。伝統的に、私はそうのようにそれを行うだろう:私のすべてのsocket.ioものが彼らのルートとしてpublicフォルダを持っている私の見解からはアクセスできません私のサーバー、上node_modulesに住んでいることを除いて

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

。クライアントにsocket.ioをロードするにはどうすればよいですか?

これまでのところ、public/jsフォルダ内に貼り付けをコピーするだけで解決しましたが、フロントエンドのものをnpmにインストールするたびにこれを行うつもりはありません。私はBowerBrowserifyのようなものについてオンラインで読んだことがありますが、混乱は私がここに来てストレートな答えを求めることを決めたようなものでした。

答えて

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モジュールを使用していると、あなたの一般的な問題に対処していませんそれは機能するモジュールがスクリプトタグを使ってクライアントに含める準備が整っている必要がありますが、これには制限はなく、npmを使用しても機能や利点はありません。 dはまだどこかのディレクトリのスクリプトをインクルードする必要がありますが、その場合はvendorまたはnode_modulesと呼ばれていますか?

npmの利点は、はるかに大きなモジュールセットであり、より大きなモジュールセットは、より大きな品質モジュールセットになります。しかし、npm上のモジュールは、基本的にcommonSSであるノードのモジュールシステムに準拠することが期待されています。これには制限はなく、npmは有効で、有効なpackage.jsonファイルを持つものをホストします。

Browserifyのようなツールは、そのモジュールシステムをブラウザで動作する形式に変換します。それはすべてです。

あなたは、あなたがnode_modulesからロードに頼らなければなりませんあなたのフロントエンド用のビルドシステムを使用したくないなら、あなたのpublicフォルダに迅速にシンボリックリンクが十分であろう(あなたはおそらくそれについて賢くなりたいと思いますが) 。しかし、使用するモジュールがブラウザの準備ができていることを確認するための追加ステップを踏む必要があります。多くのモジュールはnodeを対象としているため、ブラウザでは必要ありません。多くのモジュールには、ブラウザビルドや何らかの種類のUMDが含まれているので、どこでも動作します。

関連する問題