[解決済み】Node.jsとブラウザ間でコードを共有するにはどうすればいいですか?
質問
私は、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 ベースのネットワークプロトコルを使って他のマシンから呼び出せるようにするものです。
関連
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] JavaScriptで "use strict "は何をするのか、その根拠は?
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] package.jsonのチルダ(~)とキャレット(^)の違いは何ですか?
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] CommonJSとAMDとRequireJSの関係?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】document.getElementByIDは関数ではありません。
-
[解決済み】webpack-dev-serverにリモート接続すると、「Invalid Host header」というメッセージが表示されます。
-
[解決済み】Javascriptのコールバック関数がFirefoxで「Callback is not a function」というエラーを投げる
-
[解決済み] ローカルファイルを開くことができません - Chrome: ローカルリソースのロードが許可されていません
-
[解決済み】WebSocket接続に失敗しました。WebSocket のハンドシェイク中にエラーが発生しました。予期しない応答コードです。400
-
[解決済み】PhantomJS 2.1.1を使用してReactJSアプリケーションをレンダリングできない理由とは?
-
[解決済み】TypeError: AngularJSで未定義のプロパティ'get'を読み取れない
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み】 \u003C とは何ですか?
-
[解決済み】Vueが定義されていない