2011-02-22 7 views
7

NodeJSを掘り下げながら、私が1つのコンセプトをあまり理解していないと言うのは正直なことです。この概念は、NodeJSを使用してサーバーとクライアントの間でコードを共有する方法です。これはどういう意味ですか?それは、クライアント側でおそらく呼び出す関数を書くことができ、リモートメソッドとして呼び出されるか、コードがクライアント側にコピーされて実行されることを意味するのでしょうか?Javascriptでサーバーとクライアントの間でコードを共有するのはどういう意味ですか?

誰かに私の頭を包み込むことができる直感的な例をいくつか教えてもらえますか?

答えて

5

サーバー側で使用されているコードを、該当する場合はHTML内に<script>として含めることもできます。実際の挑戦は、である機会を見つけることです。

1つの例は入力検証エンジンです。私たちは皆、サーバー上で実行される検証だけが信頼できることを知っていますが、依然としてクライアント側の検証はユーザーエクスペリエンスにとって望ましいものです。検証エンジンが一般的な方法で設計されている場合、クライアント側とサーバー側の両方で同じコードを使用することができ、重複した作業を避けることができます。

その他の例には、HTMLテンプレートライブラリ、データモデル、およびunderscore.jsなどのさまざまなユーティリティライブラリが含まれます。

0

これは間違いありません。サーバーとクライアントが同じプログラミング言語(この場合はJavaScript)を使用する場合は、関数/クラス/などの実装を1つ書くことができます。それをクライアントとサーバーの両方で使用してください。これは、Python/Java/etcを持つ他のほとんどのシナリオとは異なります。サーバー上で、JavaScriptはクライアント上で実行されます。

2

これは、コードがクライアント側でコピーされ、ブラウザでローカルに実行されることを意味します。

たとえば、サーバー上のPersonを表すjsファイルがパス/app/model/person.jsにあるとします。ファイルの内容は以下のとおりです。

// someFile.js 
include("/app/model/person"); 

function onLoad() { 
    var john = new Person(1, "John", "Malkovich"); 
}; 

同じコードは、それをロードすることによって、クライアント側で使用することができます。

function Person(id, firstName, lastName) { 
    this.id = id; 
    this.firstName = firstName; 
    this.lastName = lastName; 
} 

のNode.jsでは、あなたのようにいくつかのファイルで、このPersonオブジェクトを使用することができます同じ出典:

<script src="/app/model/person.js"></script> 
<script> 
    var john = new Person(1, "John", "Malkovich"); 
</script> 
関連する問題