web-dev-qa-db-fra.com

Quand et comment utilisez-vous le JavaScript côté serveur?

Parfois, je recherche une aide JavaScript et je rencontre le terme "JavaScript côté serveur". Quand utiliseriez-vous JavaScript côté serveur? Et comment?

Mes expériences de JavaScript ont été dans le navigateur. Existe-t-il une version compilée de JS?

70
Johnno Nolan

Il y a le projet Phobos , qui est un framework JavaScript côté serveur.

Back In The Day, le serveur Web de Netscape offrait également du côté serveur Java.

Dans ces deux cas, JavaScript est utilisé comme vous utiliseriez n'importe quelle langue sur le serveur. Généralement pour gérer les requêtes HTTP et générer du contenu.

Rhino , qui est le système JavaScript de Mozilla pour Java, compile JavaScript en Java codes d'octets, que la JVM peut choisir de JIT. D'autres systèmes utilisent d'autres moyens pour exécuter = Java script, même au point que certains compilent JIT leurs codes internes de script Java.

Je prévois qu'il y aura de plus en plus de JavaScript sur le serveur. Lorsque vous écrivez des applications "épaisses" en JavaScript sur le client, vous pouvez aussi bien écrire votre logique en JavaScript sur le serveur afin de ne pas avoir à faire de sauts cognitifs d'une langue à l'autre. Les environnements seront différents, mais une grande partie de votre code et de vos connaissances seront partageables.

Enfin, JavaScript est probablement le langage singulier qui a le plus d'argent en ce moment en termes d'implémentations. D'Apple, Mozilla, Google et même Microsoft ainsi que les efforts pour en faire un langage encore plus avancé (c'est-à-dire essentiellement un schéma avec la syntaxe ALGOL sans macros).

La plupart de ces implémentations sont enterrées dans le navigateur, mais cela ne veut pas dire qu'il n'y a pas non plus de valeur côté serveur.

L'outillage est le plus grand endroit où JavaScript manque, en particulier du côté serveur, mais si vous considérez quelque chose comme Phobos, où vous pouvez déboguer votre JavaScript côté serveur dans l'IDE, c'est une grande avancée.

Personnellement, je lance JavaScript dans mes applications comme la peinture blanche. Il offre une extensibilité bon marché pour un coût très faible et est un excellent catalyseur.

25
Will Hartung

Ce n'est pas AJAX, sauf si les gens utilisent le terme de manière incorrecte. Comme son nom l'indique, SSJS est JavaScript qui s'exécute sur le serveur, interprété par un moteur JavaScript autonome (c'est-à-dire indépendant du navigateur), comme SpiderMonkey.

Pourquoi s'embêter? Eh bien, un domaine dans lequel je le vois actuellement sous-utilisé est la validation des données. Avec SSJS, vous écrivez un morceau de code qui est ensuite utilisé à la fois sur le serveur et le client. Ainsi, vous obtenez une rétroaction immédiate de l'utilisateur du JS côté client qui correspondra automatiquement à la vérification des données en cours sur le serveur.

27
Kev

Classic ASP a pu utiliser JavaScript sur le serveur, bien que la plupart des gens aient utilisé VBScript.

Une utilisation convaincante de JavaScript sur le serveur est un complément à la validation des données côté client. Par exemple, vous pouvez utiliser la même bibliothèque de validation JavaScript sur le client et sur le serveur. Cela garantit que vous utilisez la même logique sur le client que sur le serveur, mais évitez (potentiellement) un aller-retour inutile en effectuant une pré-validation côté client.

Wikipedia répertorie un certain nombre d'implémentations JavaScript côté serveur ici .

20
Lee Harold

NOUVELLES 2013

Node.js (voir aussi dans l'article Wikipedia ) est un succès, et sa communauté grandit !

MongoDB (sur le serveur), Chrome (sur le client) et Node.js (sur le serveur) utilisez V8 JavaScript moteur .

PS: vous ne pouvez utiliser qu'une seule langue, Javascript, pour tous vos modules de projet: API client, interface client, "hub serveur" et base de données serveur (ex. Procédures stockées). Tous les programmeurs "codent une fois"!


La principale distinction entre les langues "Server-Javascript" et "Client-Javascript" est expliquée dans http: //www.commonJS. org / , la bibliothèque standard pour Server-Javascript.

CommonJS existe depuis 2009, et aujourd'hui (2013) est un standard mature , utilisé dans les deux, MongoDB et Node.js.


NOTE HISTORIQUE: le paquet ouvert le plus ancien actif "client + serveur Javascript" (y compris l'utilisation de PostgreSQL) est vivant!
Sorti en 2001 et en développement continu depuis lors, Whitebeam est une technologie Javascript (et DOM) mature. La dernière mise à jour date de janvier 2016.


NOUVELLES 2016

Node.js le moteur continue comme un runtime construit sur Chrome JavaScript V8 ... Et maintenant, en fait, c'est une version consolidée Succès! Les dernières versions sont v7.0 et v6.8 LTS.

JSON , en tant que format d'échange de données, a suscité un intérêt croissant au cours des dernières années, ayant dépassé en 2016 l'intérêt pour XML (voir aussi dans le contexte scientifique, où dépassé en 2011 ). En tant que format Javascript natif, c'est également un bon indicateur de tendance linguistique.

Le (plus rapide) moteur V8 est également le plus utilisé depuis 2014: dans le plus populaire client ( Chrome sur les ordinateurs de burea et WebView sur Android) et populaire sur serveurs - Node.js comme runtime et PostgreSQL avec PL/V8 pour SQL et les procédures stockées.

... La contribution côté serveur la plus importante en 2016 a peut-être été une prise en charge rapide et robuste des bases de données pour JSON et Javascript: avec PostgreSQL 9.1+ (2016-10), vous pouvez charger PL/V8 (et des dialectes comme Coffeshop) via de simples CREATE EXTENSION commande; avec PostgreSQL 9.5+ (2016-10) le plus important, un ensemble orthogonal complet de fonctions et opérateurs JSON et JSONb .

Donc, en fait, il existe une solution rapide, résiliente et fiable pile de développement JavaScript unifiée.

20
Peter Krauss

Cela pourrait faire référence à l'utilisation de javascript pour publier des messages sur un serveur Web sans recharger la page: en d'autres termes, AJAX.

Mais plus probablement, je pense que cela signifie quelque chose comme Aptana/Jaxer (ou, aujourd'hui, Node.js), qui utilise javascript pour une langue côté serveur. Dans ce cas, rappelez-vous que javascript n'est qu'une langue: le DOM utilisé dans un navigateur web est une sorte d'API. Les moteurs javascript côté serveur fourniraient leurs propres objets API, adaptés aux tâches côté serveur comme la base de données et l'accès au système de fichiers.

Le javascript côté serveur est une idée intéressante à cause du problème de validation côté client: vous voulez faire de la validation côté client pour éviter d'envoyer des requêtes inutiles à votre serveur. Cela améliore les performances du serveur et réduit la latence sur le client. Mais vous devez faire de la validation côté serveur car vous ne pouvez pas faire confiance au client. Il en résulte beaucoup de code en double entre le client et le serveur.

La théorie est que si vos langues client et serveur correspondent, vous n'aurez plus besoin de deux implémentations de la même logique. En pratique, cela ne fonctionne pas si bien, car les vues client et serveur d'une demande de page sont très différentes et parce que vous ne contrôlez pas le moteur javascript utilisé par le client.

6
Joel Coehoorn

Cela dépend vraiment si vous parlez d'ASP.NET ou d'ASP classique. Si vous utilisez ASP.NET, il n'y a pas beaucoup de bonnes raisons d'utiliser Javascript.

ASP Classic est un cas différent. Vous pouvez utiliser Javascript côté serveur dans ASP de la même manière que vous utiliseriez VBScript. Vous pouvez accéder aux objets Application, Server, Request et Response de la même manière que via VBScript.

Il peut y avoir de réels avantages à utiliser Javascript côté serveur dans ASP plutôt que VBScript. Cela signifie que vous pouvez partager du code entre le code du navigateur et le code du serveur. Cela signifie également que vos développeurs n'ont pas besoin pour gérer deux langues différentes.

Il y a quelques inconvénients à Javascript côté serveur dans ASP cependant. Premièrement, il ne semble pas être aussi rapide que VBScript côté serveur à la concaténation de chaînes. Ce n'est pas aussi bon que de faire appels aux objets COM en tant que VBScript (vous ne pouvez récupérer les données des appels COM que via la valeur de retour, plutôt que via les paramètres out/byref).

3
andynormancx

Vous souhaiterez peut-être avoir certaines fonctionnalités à la fois dans le navigateur et dans le serveur pour avoir exactement la même implémentation.

Un exemple serait un moteur de rendu pour une syntaxe wiki, que vous exécutez dans le navigateur pour l'éditeur WYSIWYG et sur le serveur pour rendre la page résultante. De cette façon, vous savez que les deux résultats rendus seront exactement les mêmes dans les deux cas.

Apparemment Rhino peut compiler JavaScript pour Java classes.

2
Francisco Canedo

Traditionnellement, Javascript tourne autour du modèle d'objet de document. Mais que faire si vous travaillez pour une boutique Java et que vous souhaitez un moteur de script autour de votre modèle d'objet personnalisé? C'est à ce moment que Javascript côté serveur entre en jeu.).

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

1
yogman

Avec ASP, vous pouvez utiliser JavaScript côté serveur de plusieurs façons. La façon dont je l'utilise le plus souvent est d'avoir le même code s'exécutant sur le client et sur le serveur pour la validation .

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 démarre et termine comme il le fait pour permettre l'inclusion du même fichier.

1
Esteban Küber

Je me souviens avec Cocoon (framework MVC Java/XML/Javascript d'Apache) J'avais l'habitude d'utiliser Javascript côté serveur car il y avait quelque chose (je crois cforms) qui devait être écrit en Javascript et fonctionnait sur le serveur même si je pense que vous pouvez l'écrire en Java.

Nous avons utilisé Rhyno à ce moment-là, veuillez vérifier: http://peter.michaux.ca/articles/server-side-javascript-with-rhino-and-jetty

1
igorgue

Oui, je viens de lire sur SSJS sur un blog par un gars nommé JohnResig .

Il décrit un moteur appelé Jaxer, qui, selon lui, est "Imaginez que vous arrachez la partie de rendu visuel de Firefox et que vous la remplaciez par un crochet pour Apache - en gros, c'est ce que Jaxer est."

Pour ceux qui connaissent ASP.NET Le HTML semble familier

<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>

Notez les runat = "sever" et runat = "both"

1
Johnno Nolan

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

Découvrez comment Steve Yegge utilise JavaScript côté serveur avec Rhino et pourquoi. Il a un tas de trucs sur la façon dont il pense que JavaScript est à venir.

1
Greg