Partage
  • Partager sur Facebook
  • Partager sur Twitter

Node.js : Qu'est-ce que c'est ?

    16 janvier 2012 à 19:03:05

    Bonjour ! ^^

    Voilà, j'ai trouvé sur le net des articles qui parlent de node.js.

    Mais...
    Après quelques recherchez, je n'ai toujours pas trouvé de mots clairs et compréhensibles (même si je comprends l'anglais, dès fois, c'est trop 'high-level' pour moi )

    A quoi ça sert ?
    Comment ça marche ?
    Comment l'utiliser ?
    C'est bien ?
    ...

    Je sais qu'il y as des utilisateurs sur le SdZ, alors merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
      16 janvier 2012 à 21:25:37

      A quoi ça sert ?
      A faire du JavaScript server side.
      Comment ça marche ?
      Un programme qui utilise V8 (moteur JS de chrome) et qui propose des APIs que tout bon langage côté serveur se doit d'avoir. En gros pour toi tu codes en JS.
      C'est bien ?
      C'est assez subjectif comme question mais moi j'aime bien. Désormais au lieu d'utiliser Apache et PHP, j'utilise nodeJS et c'est sympa.

      Ça nécessite quelques bases à utiliser quand même. Sinon on retrouve parfaitement le côté asynchrone du JavaScript et ça c'est sympa. Par exemple sur deux codes PHP et JS :
      <?php
      $a = file_get_contents("foo.txt");
      $b = file_get_contents("bar.txt");
      echo $a ." ". $b;
      // Aller mettons qu'avec le temps d'accès disque cela fasse 25 ms.
      

      var fs = require('fs');
      
      var a = [];
      
      function callback(err, res){
          if (err) throw err;
      
          a.push(res);
      
         if (a.length === 2){
              console.log(a.join(" "));
         }
      }
      
      fs.readFile("foo.txt", "utf8", callback);
      fs.readFile("bar.txt", "utf8", callback);
      // Là on a genre 15 ms.
      
      • Partager sur Facebook
      • Partager sur Twitter
      Mon Twitter : @Amatewasu
        17 janvier 2012 à 16:47:30

        Ça a l'air génial ! :o

        Mais... Tu peux peut être m'aider à l'installer et à comprendre les bases ?
        • Partager sur Facebook
        • Partager sur Twitter
          17 janvier 2012 à 18:02:19

          Bien sûr, où bloque tu ?
          • Partager sur Facebook
          • Partager sur Twitter
          Mon Twitter : @Amatewasu
            17 janvier 2012 à 18:07:11

            Merci beaucoup. :)

            Tout d'abord j'ai "installé" node.js .
            Bon,à part Apache, je n'ai jamais installé de serveur HTTP, et je ne sais pas vraiment comment ça fonctionne.

            Tout d'abord, comment l'utiliser ?
            C'est un script à mettre sur une page ?
            Quelle est la syntaxe à utiliser ?
            Comment envoyer des paramètres à un script ?
            Comment le faire interagir avec ça ?
            ...
            • Partager sur Facebook
            • Partager sur Twitter
              17 janvier 2012 à 18:22:25

              En général les gros sites installent nginx en tant que serveur de fichiers statiques. Pour ma part j'utilise le framework web express donc j'utilise le serveur de fichiers statiques intégré d'express.

              En fait node ne remplace pas ton PHP mais bon ton PHP + apache (bon après pour des questions de perf' sur les gros sites, ils utilisent nginx par exemple pour les fichiers statiques).
              Donc tu créés un serveur qui écoute un port (8080 par exemple, le port par défaut d'HTTP est 80). Sur un système unix, en dessous de je ne sais plus quel port il faut lancer ton programme en root pour écouter ce port (genre pour qu'il écoute le port 80, il faut qu'il ai les droits root).

              Hum, tu lances ton script en ligne de commande. Genre sous linux tu fais :
              node mon_fichier

              Sinon, au niveau de la syntaxe c'est du JavaScript. Après tu as un système de module (avec require) qui te permet d'appeler des bibliothèques pour gérer les fichiers par exemple. Je te conseil de survoler la documentation histoire de voir les APIs que te propose node.

              Pour envoyer des paramètres à ton fichier tu peux les ajouter lors du lancement : (toujours avec linux)
              node mon_fichier foo bar

              // Et pour les récupérer dans ton code :
              process.argv[2]; // foo
              process.argv[3]; // bar
              

              Pour plus d'infos à ce sujet, regarde process.argv.

              Node.js ne te permet pas uniquement de faire un serveur web. Par exemple récemment j'ai fait un petit script qui te compte le nombre de lignes JavaScript contenu dans un dossier.
              • Partager sur Facebook
              • Partager sur Twitter
              Mon Twitter : @Amatewasu
                17 janvier 2012 à 18:32:59

                Si je veux appeler un script depuis une page HTMl, c'est possible ?
                Par exemple, un script ou l'utilisateur écrit une ligne d'un fichier,
                et tout le monde peux ajouter des lignes depuis la petite page HTML,
                c'est possible ? Et faisable comment ?

                Désolé si je pose trop de questions mais je suis vraiment débutant là-dessus, j'ai aucune notion mais ça m'intéresse beaucoup. :euh:
                • Partager sur Facebook
                • Partager sur Twitter
                  17 janvier 2012 à 18:55:27

                  Voici un petit bout de code (avec express désolé) qui fait ce que tu demandes (j'ai bien commenté histoire que tu comprennes ^^) :
                  var fs = require('fs'), // on charge le module de gestion de fichiers
                      express = require('express'), // on charge express (ici je ne précise pas le chemin du fichier parce que l'on suppose que j'utilise npm)
                      app = express.createServer(); // On créer notre serveur web avec express
                  
                  app.use(express.bodyParser()); // Pour pouvoir récupérer les variables POST après
                  
                  // La page HTML que l'on va envoyer, je l'ai écris vite fait hein 
                  var html = "<!DOCTYPE html><html><head><title>Foo</title><meta charset='utf-8' /></head><body><form method='post' action='/'><input type='text' name='txt' plaholder='Votre texte ici' /><input type='submit' value='Remplacer' /></form></body></html>";
                  
                  // On écoute les requête de type GET sur la racine
                  app.get('/', function (res, req){
                      res.header('Content-Type', 'text/html'); // On dit que le fichier est de type html
                      res.send(html, 200); // On envoi notre requête
                  });
                  
                  // On écoute les requêtes de type POST sur la racine (après soumission du formulaire)
                  app.post('/', function (res, res){
                      var txt = req.body.txt; // La valeur que contenait notre champs de type text
                  
                      // On écrit dans notre fichier ce que l'on a reçu
                      fs.writeFile("foo.txt", "utf-8", function (err){ // On voit bien ici la fonction de callback qui est appelée quand l'écriture du fichier est finie
                          if (err){ // Si on rencontre une erreur, on renvoi un code HTTP 500 (erreur du serveur)
                              res.send(500);
                          } else {
                              // Sinon on envoi notre page html
                              res.header('Content-Type', 'text/html');
                              res.send(html, 200);
                          }
                      });
                  });
                  
                  app.listen(80); // Une fois que notre serveur est initialisé, on peux commencer à écouter un port (ici 80)
                  
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Mon Twitter : @Amatewasu
                    17 janvier 2012 à 20:05:06

                    Erm. C'est pas un serveur web node.js hein...
                    C'est juste des API pour le JavaScript.
                    Avec, tu peux faire :
                    - des scripts utilisables comme des scripts shell
                    - des serveur web
                    - a peu pres n'importe que d'autre que tu pourrais faire dans un autre langage

                    Par contre, node est code de facon a etre tres bon sur l'IO (input / output) mais comme c'est du JS, c'est interprete et donc plus lent que le C.
                    Du coup, t'utilises nodeJS pour tout ce qui est recevoid les donnees etc. mais si t'as besoin de faire de gros calculs, tu appelle un programme en C (ou autre) avec nodejs pour que ce soit plsu rapide.
                    Enfin ca c'est si tu fais de gros calculs.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      18 janvier 2012 à 19:43:40

                      Grâce à un tuto en anglais, j'ai pu réaliser de petites choses,
                      mais un tuto sur le SdZ, ça ce serait génial... ^^

                      Merci Amatewasu, je vais voir ton script :)
                      • Partager sur Facebook
                      • Partager sur Twitter
                        18 janvier 2012 à 19:47:44

                        Si seulement j'avais le temps :/
                        M'enfin de toutes facons, c'est tellement large ce qu'on peut faire et ca evolue tellement vite que je ne pense pas que ce soit une bonne idee pour le moment. Mieux vaut attendre la version 1.0.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          18 janvier 2012 à 21:47:53

                          Oui un tuto ce serait sympa. C'est vrai que c'est large (pas facile de traiter beaucoup de choses). Cependant si quelqu'un est intéressé par Node, il y a de la ressource sur internet maintenant.
                          • Partager sur Facebook
                          • Partager sur Twitter
                          Mon Twitter : @Amatewasu
                            19 janvier 2012 à 23:25:39

                            Visiblement ici on aime pas trop les gens qui donnent leur avis sans poster des pavés de justification. Donc je vais justifier.

                            Le principal problème de node.js, c'est qu'il est en javascript.
                            Soyons sérieux deux minutes : javascript, c'est une espèce de bouse mal pensée, mal foutue, qui a à l'origine été développée dans son coin par Netscape sans vraie réflexion.
                            C'était prévu pour être simple à utiliser. C'est tellement vrai que c'est une horreur sans nom à utiliser sans un solide framework comme jQuery : n'importe quel intégrateur HTML de bas étage peut faire des jolis effets kikoolol en JS.

                            Mais là on parle de coller côté serveur un langage jamais vraiment conçu proprement et qui permet de faire à peu près n'importe quoi. Alors oui, c'est hype, c'est souple, on peut faire des émulateurs de n'importe quoi avec, on peut faire des serveurs web en 10 lignes.
                            Sauf que dès qu'on est plus de 1 et dès qu'on a plus de 100 lignes de code, ça devient une horreur sans nom à développer et à débugger.

                            Et vous savez quoi ? Il a des dizaines d'excellents langages éprouvés côté serveur, beaucoup plus efficaces et élégants, avec leurs frameworks et leurs domaines d'application : Python, Ruby, Erlang, ... même Java est plus propre que Javascript dès qu'on dépasse le stade de la démo technologique !

                            Alors oui, node.js c'est génial pour faire de la démo technologiquo-hype machin et tout, et pour certaines applications très spécifiques (en particulier avec des trucs asynchrones) quand on a pas la possibilité d'utiliser un vrai langage pour ça.
                            Mais c'est tout.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              20 janvier 2012 à 16:14:20

                              Tu peux peut être commencer par un peu plus respectueux :
                              moi, j'aime bien programmer en JavaScript et je trouve pas du tout que c'est une "espèce de bouse", si on exploite pas toutes ses capacités, on peux penser ça, mais si on va jusqu'au bout, utiliser notre matière grise, on peux obtenir des trucs très bons. ^^

                              Tu peux peut être expliquer pourquoi tu penses que JavaScript est une "espèce de bouse mal fichue" ? :o

                              Et bien moi, perso, je trouve que du JS côté serveur c'est :
                              1) mieux que PHP
                              2) pour le petit nouveau qu'est node.js c'est extra génial et ça ouvre la porte à une toute nouvelle façon de voir la programmation Web\Serveur.

                              Avant de finir ce message, je tiens à dire qu'en créant ce sujet, je ne voulais pas du tout créer une polémique autour d'un débat.
                              "JS est-il une bouse ?" Pour moi, ma réponse est non.
                              • Partager sur Facebook
                              • Partager sur Twitter
                                20 janvier 2012 à 17:08:37

                                Citation : Pyrofoux


                                "JS est-il une bouse ?" Pour moi, ma réponse est non.



                                Tout le monde le dit, meme chez Google, ils ont pas sortie GWT et bientot Dart pour rien.
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  20 janvier 2012 à 17:37:44

                                  Tout le monde c'est ? ... :o

                                  En tout cas, à mon avis, il faut éviter de balancer des

                                  Citation : Troll

                                  "JS c'est d'la bouse"

                                  sur la catégorie Javascript du forum... :-°
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    20 janvier 2012 à 19:34:03

                                    Citation : herve1234

                                    Citation : Pyrofoux


                                    "JS est-il une bouse ?" Pour moi, ma réponse est non.



                                    Tout le monde le dit, meme chez Google, ils ont pas sortie GWT et bientot Dart pour rien.


                                    Argument minable.
                                    Je peux te dire que Dart, c'est de la merde. Est-ce que c'en est plus vrai ?

                                    GWT c'est loin d'etre genial. Le seul "vrai" truc que j'ai vu developpe avec GWT, c'etait Google Wave, qui n'est plus.

                                    Que le JS qu'on peut utiliser dans les navigateurs soit limite, OK. Mais que les JS en soi soit nul, non.
                                    Quand tu code en JS, tu dois plus ou moins supporter IE 6 qui a 10 ans.
                                    Prends n'importe quel langage et code avec ce qu'il y avait il y a 10 ans... Tu vas forcement moins aimer. Et le JS est jeune donc en 10 ans il a encore plus evolue que les autres langages.

                                    Mais si tu code sous Node.js, tu t'en fous d'IE donc tu fais ce que tu veux avec tous les nouveaux features.
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      21 janvier 2012 à 13:58:12

                                      Pour Pyrofoux, j'ai fait un blog afin d'expliquer au mieux Node.js et qui contient plusieurs tutoriels afin de bien commencer:
                                      Il y a d'autres tutoriels sur comment communiquer avec MongoDB (base de données) mais ça c'est après avoir bien compris les premiers tutoriels. L'adresse du blog est http://www.atinux.fr


                                      Ensuite,

                                      Citation : herve1234

                                      Citation : Pyrofoux


                                      "JS est-il une bouse ?" Pour moi, ma réponse est non.



                                      Tout le monde le dit, meme chez Google, ils ont pas sortie GWT et bientot Dart pour rien.


                                      Si tu avais légèrement réfléchi, tu aurais compris ce que Google voulait faire au fond, ils savent très bien que Dart ne va pas être adopté, ils l'ont fait juste pour faire bouger la communauté JS.

                                      Pour "I hate candy", ça ne m'étonne pas ce genre de raisonnement, c'est principalement ceux qui n'ont pas réussi à bien comprendre le JavaScript qui ont ce genre de discours, encore plus ceux qui font des copié-collé de scripts jQuery qu'ils trouvent sur internet.
                                      Apparemment tu es à 70% de ton apprentissage de JavaScript, parce qu'il y a une fin peut-être ? Qu'est-ce qu'il se passe arrivé à 100% ?
                                      Sachant que le JavaScript ne fait qu'évoluer (ECMAScript 5th Edition ça te parles ?).

                                      Je présume d'ailleurs que tu connais forcement le chaînage des prototypes, le constructeur, le contexte d'exécution (avec la pile), l'objet des variables, l'objet d'activation, la chaîne des portées (Scope chain), les closures ?

                                      Certes le JavaScript a ses lacunes, comme n'importe quel langage, mais chaque nouvelle version pâlie ces lacunes, de plus comme Node.js utilise le moteur V8 de google et qu'il est régulièrement mis à jour, on a pas à se prendre la tête sur quelles méthodes on peut utiliser ou non (contrairement au coté client). C'est marrant aussi que tu ne parles des performances de Node.js vis à vis de ses concurrents, peut-être parce qu'il les bat quasiment tous ?

                                      Citation : I hate candy

                                      Sauf que dès qu'on est plus de 1 et dès qu'on a plus de 100 lignes de code, ça devient une horreur sans nom à développer et à débugger.



                                      Si on code et on pense comme toi surement :)
                                      Je travaille actuellement dans une startup et on code TOUT en JavaScript, on est une dizaines de développeur et ça a jamais été aussi bien de développer, il faut savoir bien penser son architecture avant tout. Surtout que l'on peut écrire les tests coté client comme coté serveur vu que l'on utilise le même langage (Mocha par exemple pour des tests TDD ou BDD). Ah et c'est pas une petite application "technologiquo-hype" comme tu le dis. Bref sans compter le fait que les développeur peuvent très bien travailler coté client que coté serveur, que node js est non bloquant....Donc donne de vrais arguments la prochaine fois au lieu de "troller" ;)

                                      Donc Pyrofoux, tu n'as pas besoin d'écouter ce genre de personnes qui sont fermés d'esprits qu'ils n'ont pas encore compris où est-ce que le web était en train d'évoluer. C'est vraiment une bonne chose que tu t’intéressse à Node js et n'hésites pas à me contacter si tu as du mal à comprendre certains points !
                                      • Partager sur Facebook
                                      • Partager sur Twitter

                                      Co-fondateur de Nuxt.js (nuxtjs.org)

                                        21 janvier 2012 à 18:29:55

                                        Merci atinux,
                                        J'étais justement entrain de lire le tutoriel sur Socket.io quand je passe sur le SdZ, et là, quelle surprise quand je vois que le nom du site et le nom de l'auteur de ce message (plus qu'encourageant d'ailleurs) sont identiques ! o_O

                                        Heureuse coïncidence donc.

                                        Citation : atinux

                                        Donc Pyrofoux, tu n'as pas besoin d'écouter ce genre de personnes qui sont fermés d'esprits qu'ils n'ont pas encore compris où est-ce que le web était en train d'évoluer. C'est vraiment une bonne chose que tu t’intéressse à Node js et n'hésites pas à me contacter si tu as du mal à comprendre certains points !



                                        Encore une fois, merci de ton aide, atinux.

                                        Et oui, JS c'est pas qu'un langage, c'est une communauté ! ^^
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          21 janvier 2012 à 23:04:39

                                          C'est avec grand plaisir :)
                                          • Partager sur Facebook
                                          • Partager sur Twitter

                                          Co-fondateur de Nuxt.js (nuxtjs.org)

                                            22 février 2012 à 15:47:51

                                            Citation : atinux


                                            Citation : herve1234

                                            Citation : Pyrofoux


                                            "JS est-il une bouse ?" Pour moi, ma réponse est non.



                                            Tout le monde le dit, meme chez Google, ils ont pas sortie GWT et bientot Dart pour rien.


                                            Si tu avais légèrement réfléchi, tu aurais compris ce que Google voulait faire au fond, ils savent très bien que Dart ne va pas être adopté, ils l'ont fait juste pour faire bouger la communauté JS.

                                            [...]

                                            Donc Pyrofoux, tu n'as pas besoin d'écouter ce genre de personnes qui sont fermés d'esprits qu'ils n'ont pas encore compris où est-ce que le web était en train d'évoluer.




                                            Mark S. Miller grand manitou JS chez google et membre ECMAScript : https://gist.github.com/1208618

                                            "The goal of the Dash ( Ancien nom de Dart ) effort is ultimately to replace JavaScript as the
                                            lingua franca of web development on the open web platform."


                                            Je te laisse lire le reste, surtout quand il parles des problèmes de conceptions insurmontable en JS, et de l'urgent de développer une techno libre alternative viable pour contrer les plate-forme propriétaire :

                                            "Javascript has fundamental flaws that cannot be fixed merely by evolving the
                                            language."


                                            "The web has succeeded historically to some extent in spite of the web
                                            platform, based primarily on the strength of its reach. The emergence of
                                            compelling alternative platforms like iOS has meant that the web platform
                                            must compete on its merits, not just its reach. Javascript as it exists
                                            today will likely not be a viable solution long-term. Something must
                                            change."


                                            "The cyclone of innovation is
                                            increasingly moving off the web onto iOS and other closed platforms.
                                            Javascript has been a part of the web platform since its infancy, but the
                                            web has begun to outgrown it. The web development community has been
                                            backed into using large amounts of JS largely to work around the
                                            deficiencies in the platform. Complex web apps--the kind that Google
                                            specializes in--are struggling against the platform and working with a
                                            language that cannot be tooled and has inherent performance problems."


                                            Sinon c'est une blague ton dernier paragraphe ? C'est toi la personne fermé d'esprits qui n'arrive pas a ouvrir les yeux. Vu ta vision bornée et ton profil GitHub, ca m'étonnerait que tu ais deja travaillé sur autre chose que des techno web.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              22 février 2012 à 17:14:42

                                              Salut à tous !

                                              Citation : Pyrofoux

                                              Avant de finir ce message, je tiens à dire qu'en créant ce sujet, je ne voulais pas du tout créer une polémique autour d'un débat.


                                              Laisse moi deviné, tu voulais avoir des conseils et des témoignages sur l'utilisation et la mise en route avec Node.js ? Je suis pas sur que tout le monde est vraiment compris..

                                              L'objectif n'étant pas de rebondir sur ce qui a été dit en tirant de grandes phrases / citations, je vais te donner mon opinion sur Node.js.

                                              Je n'ai utilisé cette techo qu'une seul fois lors du développement d'un serveur qui avait pour rôle de gérer les connexions pour un jeu Flash multijoueur en temps réel. Un des grands avantages de Node.js est qu'il est asynchrone, ce qui est très utile pour gérer le temps réel, je me souviens avoir eu des problème de concurrence entre différents threads en utilisant JAVA pour développer le même type de serveur.
                                              De plus je tire mon chapeau à Node.js, car après test de monté en charge, on se rend compte qu'il n'a pas à pâlir devant les autres technos web server side.

                                              Pour la prise en main, tu seras sans doute un peu dérouté au départ (d'autant plus si tu n'as jamais développé d'application server), mais cela vient assez vite en suivant quelques tuto. Avant de partir tête baissée, n'hésite pas à t’attarder sur les schémas de fonctionnement de communication client / serveur, qui est parfois plus complexe que ce que l'on pense..

                                              Voilà, en espérant t'avoir apporté quelque chose !

                                              A tte
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                25 février 2012 à 22:00:00

                                                Merci ! ^^

                                                Citation : Moi

                                                Chaque pierre de plus renforce la muraille de mon expérience

                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  26 février 2012 à 11:12:45

                                                  Bonjour,

                                                  Et bien je vais moi aussi apporter un peu de mon avis et expérience. Je ne pourrais pas argumenter si oui ou non node.js est l'avenir et si oui ou non javascript est "une bouse total", je n'aurais pas le niveau. Ce que je sais, c'est que j'ai appris le javascript il y a un an et l'ai utilisé pendant tout ce temps côté client, que j'ai découvert node.js il y a un mois et que j'ai adoré. Je te conseille express qui est un excellent framework très intuitif, et je te souhaite bon courage. Si tu as des difficultés, je te conseille d'aller voir le chan irc officiel de node.js : irc://irc.freenode.net/#node.js , ils parlent anglais, mais si tu as quelques notions, tu devrais y arriver. En te souhaitant bon courage :)
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter

                                                  Node.js : Qu'est-ce que c'est ?

                                                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                  • Editeur
                                                  • Markdown