web-dev-qa-db-ja.com

サーバーサイドJavaScriptをいつ、どのように使用しますか?

たまにJavaScriptのヘルプを検索すると、「サーバーサイドJavaScript」という用語に出くわします。いつJavaScriptサーバー側を使用しますか?そしてどうやって?

JavaScriptの私の経験はブラウザーにありました。 JSのコンパイル済みバージョンはありますか?

70
Johnno Nolan

プロジェクト Phobos があります。これは、サーバー側のJavaScriptフレームワークです。

当時、Netscape Webサーバーはサーバー側Javaスクリプトも提供していました。

どちらの場合も、サーバーで任意の言語を使用するのと同じようにJavaScriptが使用されます。通常、HTTP要求を処理し、コンテンツを生成します。

Rhino (MozillaのJava用JavaScriptシステム)は、JavaScriptをJavaバイトコードにコンパイルします。JVMはこれをJITに選択できます。他のシステムは= Javaスクリプト。一部のJITがJavaスクリプトの内部コードをコンパイルしているところまで。

私は、サーバー上にますます多くのJavaScriptが存在すると予測しています。クライアントのJavaScriptで「厚い」アプリケーションを作成する場合、ある言語から別の言語に認知機能を飛躍させる必要がないように、サーバー上のJavaScriptでロジックを作成することもできます。環境は異なりますが、コードと知識の多くは共有可能です。

最後に、JavaScriptはおそらく、実装に関して現在最も多くのお金を持っている特異な言語です。 Apple、Mozilla、Google、さらにはMicrosoftからも、さらに高度な言語(つまり、基本的にALGOL構文とマクロを使用しないScheme)にするための努力から。

これらの実装のほとんどはブラウザに埋もれていますが、サーバー側にも価値がないというわけではありません。

ツールは、特にサーバー側でJavaScriptが不足している最大の場所ですが、IDEでサーバー側のJavaScriptをデバッグできるPhobosのようなものを検討する場合、それは大きな進歩です。

個人的には、白いペイントのようなアプリケーションでJavaScriptを使用しています。非常に少ないコストで安価な拡張性を提供し、優れたイネーブラーです。

25
Will Hartung

人々がこの用語を不適切に使用していない限り、AJAXではありません。その名前が示すように、SSJSはサーバーで実行されるJavaScriptであり、SpiderMonkeyなどのスタンドアロン(つまり、ブラウザーに依存しない)JavaScriptエンジンによって解釈されます。

なぜわざわざ?さて、私が現在それが十分に活用されていないのは、データ検証です。 SSJSを使用すると、サーバーとクライアントの両方で使用される1つのコードを記述できます。したがって、クライアント側のJSからユーザーのフィードバックを即座に取得し、サーバーで行われているデータチェックに自動的に一致させます。

27
Kev

Classic ASPはサーバーでJavaScriptを使用できましたが、ほとんどの人はVBScriptを使用していました。

サーバーでのJavaScriptの魅力的な使用法の1つは、クライアント側のデータ検証を補完するものです。たとえば、クライアントとサーバーで同じJavaScript検証ライブラリを使用できます。これにより、サーバー上と同じロジックをクライアント上で使用することが保証されますが、(潜在的に)クライアント側で事前検証することにより、不必要なラウンドトリップを回避できます。

ウィキペディアには、サーバー側のJavaScript実装が多数リストされています ここ

20
Lee Harold

JavaScriptを使用して、ページを再ロードせずにWebサーバーにメッセージを投稿することを意味する場合があります。つまり、AJAXです。

しかし、おそらく Aptana/Jaxer (または、今日、Node.js)のようなものを意味すると思います。これは、サーバーサイド言語にjavascriptを使用します。この場合、javascriptは単なる言語であることに注意してください。Webブラウザで使用されるDOMは一種のAPIです。サーバー側のjavascriptエンジンは、DBやファイルシステムアクセスなどのサーバー側のタスクに合わせた独自のAPIオブジェクトを提供します。

サーバー側のJavaScriptは、クライアント側の検証の問題のために興味深いアイデアです。サーバーに不要な要求を送信しないように、クライアント側の検証を実行する必要があります。これにより、サーバーのパフォーマンスが向上し、クライアントの待機時間が短縮されます。ただし、クライアントを信頼できないため、mustサーバー側で検証を行う必要があります。これにより、クライアントとサーバー間で多くのコードが重複します。

理論は、クライアントとサーバーの言語が一致すれば、同じロジックの2つの実装はもう必要ないということです。実際には、ページリクエストのクライアントビューとサーバービューは大きく異なり、クライアントが使用するjavascriptエンジンを制御しないため、うまく機能しません。

6
Joel Coehoorn

ASP.NETとClassic ASPのどちらを話しているかは本当に異なります。 ASP.NETを使用している場合、Javascriptを使用する理由はあまりありません。

ASP Classicは別のケースです。 ASP VBScriptを使用するのと同じ方法でサーバー側でJavascriptを使用できます。VBScriptを使用した場合と同じようにApplication、Server、Request、Responseオブジェクトにアクセスできます。

VBScriptではなくASPでサーバー側でJavascriptを使用することには、実際のメリットがあります。これは、ブラウザーコードとサーバーコードの間でコードを共有できることを意味します。 2つの異なる言語を処理します。

サーバー側のJavascriptには、ASP=にいくつかの欠点があります。まず、文字列の連結ではサーバー側のVBScriptほど高速ではないようです。また、作成するほど良くありません。 COMオブジェクトへのVBScriptとしての呼び出し(out/byrefパラメーター経由ではなく、戻り値経由でのみCOM呼び出しからデータを取得できます)。

3
andynormancx

ブラウザーとサーバーの両方にいくつかの機能を持たせて、まったく同じ実装にすることができます。

例としては、Wiki構文のレンダラーがあります。これは、ブラウザーでWYSIWYGエディター用に、サーバーで実行して、結果のページをレンダリングします。これにより、両方の場合で、レンダリング結果がまったく同じになることがわかります。

どうやら Rhino はJavaScriptをJavaクラスにコンパイルできます。

2

従来、JavascriptはDocument Object Modelを中心に実行されます。しかし、Javaショップで働いていて、カスタムオブジェクトモデルの周りにスクリプトエンジンが必要な場合はどうなりますか?それがサーバー側のJavascriptが入ってくるときです。

http://en.wikipedia.org/wiki/Server-side_JavaScript

1
yogman

ASPではサーバーサイドJavaScriptを使用できます さまざまな方法で。私が最も一般的に使用する方法は、 検証のためにクライアントとサーバーで実行される同じコード を使用することです。

file.js

<!--//--><%

//javascript code
function example(){return "Hello, World!";}

//%>

file.html

<%@LANGUAGE="javascript"%>
<!-- METADATA TYPE="typelib" 
FILE="C:\Archivos de programa\Archivos comunes\System\ado\msado15.dll" -->
<!--#include file="file.js"-->
<html>
<head>
  <script language="javascript" src="file.js"></script>
</head>
<body>
<%=example();%>
<script language="javascript">alert(example());</script>
</body>
</html>

file.jsは、同じファイルを含めるための方法を開始および終了します。

1
Esteban Küber

私は Cocoon (ApacheのJava/XML/Javascript MVCフレームワーク)で覚えていますあなたはJavaでそれを書くことができると信じていますが、サーバー。

その時までにRhynoを使用していました。チェックしてください: http://peter.michaux.ca/articles/server-side-javascript-with-rhino-and-jetty

1
igorgue

ええ、私は ブログJohnResig という名前の男がSSJSについて読んだばかりです。

彼はJaxerと呼ばれるエンジンについて説明しています。彼は、「Firefoxの視覚的なレンダリング部分を取り除いて、代わりにApacheへのフックに置き換えることを想像してください。

ASP.NETを知っている人にはHTMLは見慣れている

<html>
<head>
  <script src="http://code.jquery.com/jquery.js" runat="both"></script>
  <script>
    jQuery(function($){
      $("form").submit(function(){
        save( $("textarea").val() );
        return false;
      });
    });
  </script>
 <script runat="server">
    function save( text ){
      Jaxer.File.write("tmp.txt", text);
    }
    save.proxy = true;

    function load(){
      $("textarea").val(
        Jaxer.File.exists("tmp.txt") ? Jaxer.File.read("tmp.txt") : "");
    }
  </script>
</head>
<body onserverload="load()">
   <form action="" method="post">
    <textarea></textarea>
    <input type="submit"/>
  </form>
</body>
</html>

Runat = "sever"およびrunat = "both"に注意してください

1
Johnno Nolan

http://steve-yegge.blogspot.com/2007/06/rhino-on-Rails.html

Steve YeggeがRhinoでサーバーサイドJavaScriptをどのように使用しているか、そしてその理由を確認してください。彼は、JavaScriptが近づいていると感じていることについて、たくさんのものを持っています。

1
Greg