1. ホーム
  2. ジャバスクリプト

[解決済み】Node.jsとブラウザ間でコードを共有するにはどうすればいいですか?

2022-04-17 19:44:56

質問

私は、JavaScriptクライアント(ブラウザで実行)とNode.jsサーバーで、WebSocketを使って通信する小さなアプリケーションを作成しています。

クライアントとサーバーの間でコードを共有したいのですが、どうすればいいですか?私はNode.jsを使い始めたばかりで、最近のJavaScriptの知識は、控えめに言っても少し錆びついた状態です。そのため、CommonJSのrequire()関数について、まだ頭を抱えています。もし私が'export'オブジェクトを使用してパッケージを作成しているなら、ブラウザで同じJavaScriptファイルをどのように使用できるのかわかりません。

メッセージのエンコードとデコード、およびその他のミラーリング作業を容易にするために、両端で使用されるメソッドとクラスのセットを作成したいのです。しかし、Node.js/CommonJSパッケージングシステムは、私が両側で使用できるJavaScriptファイルを作成することを妨げているようです。

また、よりタイトなOOモデルを得るためにJS.Classを使ってみましたが、提供されたJavaScriptファイルをrequire()で動作させる方法がわからず、あきらめました。何か見落としがあるのでしょうか?

解決方法は?

クライアントサイドとサーバーサイドの両方で使えるモジュールを書きたい場合、手軽で簡単な方法を短いブログ記事で紹介しています。 Node.jsとブラウザのために書く は、基本的に以下のようになります(ここで this と同じです。 window ):

(function(exports){

    // Your code goes here

   exports.test = function(){
        return 'hello world'
    };

})(typeof exports === 'undefined'? this['mymodule']={}: exports);

また、クライアント側に Node.js API を実装することを目的としたプロジェクトもあり、例えば Marak の ジェミニ .

こちらもご覧ください DNode これは、JavaScript の関数を公開し、シンプルな JSON ベースのネットワークプロトコルを使って他のマシンから呼び出せるようにするものです。