CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : Node.js ? Bah bien sûr copain !

DébutPage précedente
12345
Page suivanteFin
Thymotep Thymotep
MP
Niveau 10
27 juillet 2014 à 21:43:39

J'ai fais du ménage, n'hésitez pas à m'envoyer un MP si jamais il y a des insultes :ok:

PauIWalker PauIWalker
MP
Niveau 10
28 juillet 2014 à 04:18:49

Il va falloir que j'apprenne le node.js moi :-)

nounoursheureux nounoursheureux
MP
Niveau 10
28 juillet 2014 à 09:55:55

Lisarael :d) merci, en effet j'avais pas vu que ma question avait déjà été posée :)
Sinon je vois que certains d'entre vous utilisent CoffeeScript, ça a quel(s) avantage(s) par rapport à du JS vanilla ?

nounoursheureux nounoursheureux
MP
Niveau 10
28 juillet 2014 à 10:01:11

Je suis allé voir sur Internet, et ça change radicalement la syntaxe en effet. Mais ça q l'air sympa :oui:

XzZy XzZy
MP
Niveau 10
28 juillet 2014 à 11:58:08

Le CoffeeScript est assez sympa, mais dans la réalité les gains ne sont pas si énormes. C'est intéressant de l'apprendre tout de même, c'est assez simple et peut-être que tu vas adorer. Par contre il faut connaitre le JS de toute manière.

Caletlog Caletlog
MP
Niveau 10
28 juillet 2014 à 13:52:12

Et puis si tu développes avec les frameworks des langages dont le coffee s'inspire (Ruby/Python/Haskell essentiellement), ça permet de rester dans un développement 'uniforme', sans avoir à changer radicalement de syntaxe entre les parties de l'application.
Pour du Ruby par exemple, avec le cycle de travail typique de Rails où on fait un peu 'tout' à la suite sur un élément puis on passe au suivant, c'est fatiguant de passer sans arrêt d'une syntaxe do/end et indentation à une syntaxe style C avec des accolades. Unifier le tout avec du Coffee permet d'alléger un peu le temps 'perdu' quand on cycle rapidement entre les langages.

lisarael lisarael
MP
Niveau 13
28 juillet 2014 à 14:13:33

Il faut se dire que CoffeeScript est à JavaScript ce que less/sass/Stylus sont à css : une syntaxe alternative qui ajoute des raccourcis et une prise en charge plus uniforme de certains aspects du langage.
Le CoffeeScript est très proche du python et du ruby, assez verbeux, facile à lire et à coder. Mais, comme dit plus haut, il vaut mieux bien connaître javascript avant de faire du Coffee (comme il vaut mien bien connaître css avant d'utiliser less/sass/Stylus).

Personnellement, depuis que je me suis mis à CoffeeScript, je fais tout mes développements ou presque avec.
Les deux seuls cas où je repasse au javascript "nature", c'est quand je dois donner cours, et quand je fais de la sous-traitance, où là je m'adapte au workflow de l'équipe que je rejoins.

Ce qui est intéressant avec CoffeeScript, c'est de prendre un peu de temps, au début, pour bien lire le code javascript généré : il est propre, clair, et utilise toutes sortes d'astuces pour optimiser au maximum le code final. C'est très instructif.

Enfin, tant qu'on parle de performances, les performances entre un fichier js "vanille" et un fichier coffee compilé, sont sensiblement égales : j'ai fait des tests il y a quelques temps, et en fonction des navigateurs, c'est parfois le js vanille qui est plus rapide (de très peu), parfois l'inverse. Un impact négligeable, donc.

Si vous voulez vous lancer et essayer CoffeeScript, je vous conseille le cours de CodeSchool, qui est très bien fait et ce boucle en une heure ou deux maximum (y a 5 ou 6 courts chapitres et les exercices qui s'y réfèrent).

nounoursheureux nounoursheureux
MP
Niveau 10
28 juillet 2014 à 15:20:22

Bah les cours de CodeSchool ont l'air vraiment bien, mais c'est carrément pas donné :peur:

lisarael lisarael
MP
Niveau 13
28 juillet 2014 à 17:01:30

Pas donné ?
Ça dépend comment tu t'y prends. Tu peux t'abonner pour un mois et arrêter juste avant le second mois. Du coup, tu peux rusher les cours sur un mois et en profiter pour télécharger les slides et vidéos des cours que tu as suivi, pour les garder comme archives.

Et si tu t'organises bien, sur un mois, y a moyen de te faire tous les cours du site, et donc de rentabiliser à crever ton abonnement.

Vu comme ça, 20$, c'est franchement pas cher :)

nounoursheureux nounoursheureux
MP
Niveau 10
28 juillet 2014 à 21:00:16

Bah je pense que ce que je vais faire c'est d'abord voir leurs cours gratuits, et si j'aime bien leur façon de faire j'essaierai de rusher comme tu l'as dit :oui: . Merci pour ces précisions :)

Kimpeek Kimpeek
MP
Niveau 10
29 juillet 2014 à 02:23:03

Je ne vais pas utiliser ce code mais juste pour savoir

Pourquoi ce code marche pour accéder à /jean/ ?

function user(app){
app.get('/jean/',function(req,res){res.end("yeah")
;});

return function(req,res,next){

res.write("ok");
next();
}
}

app.use(user(app));

Mais celui non ?

function user(app){

return function(req,res,next){
app.get('/jean/',function(req,res)
{res.end("yeah");});
res.write("ok");
next();
}
}

app.use(user(app));

lisarael lisarael
MP
Niveau 13
29 juillet 2014 à 04:43:43

Dans le second exemple, tu retournes une fonction, comme demandé, sauf que comme elle n'est assignée à aucune route, elle ne sera jamais appelée.

lisarael lisarael
MP
Niveau 13
29 juillet 2014 à 04:45:41

Ceci étant, à la relecture du code, je suis un peu perplexe... Faudrait tracer un peu pour voir ce qu'il se passe... "app" désigne quel module ?

Kimpeek Kimpeek
MP
Niveau 10
29 juillet 2014 à 12:30:08

J'ai défini app comme ceci :

var express = require('express');
var app = express();

La fonction retournée est bien appelée (car affiche "ok"), mais jamais je n'entre dans le "app.get"..

Alors qu'en plaçant cette instruction en dehors de la fonction retournée, cela fonctionne bien.

De toute façon j'utiliserai cette méthode pour les routes :
http://scotch.io/tutorials/javascript/learn-to-use-the-new-router-in-expressjs-4

--

Mais j'aimerais bien savoir techniquement où est mon erreur.

lisarael lisarael
MP
Niveau 13
29 juillet 2014 à 13:57:26

app.use() sert à déclarer des middlewares.
Idéalement, tu devrais éviter de déclarer des routes dans des middlewares, puisque ces middleware sont appelés pendant l'exécution d'une route.

Kimpeek Kimpeek
MP
Niveau 10
29 juillet 2014 à 14:32:42

Oui mais comme je l'ai dit je cherche juste à comprendre pourquoi cela marche dans un cas mais pas dans l'autre...

--

Quant à déclarer des routes dans un middleware, ce gars fait aussi dans cette vidéo.

http://vimeo.com/56166857

Et c'est qualifié de "meilleure approche" par "avetisk" : http://stackoverflow.com/questions/6059246/how-to-include-route-handlers-in-multiple-files-in-express

lisarael lisarael
MP
Niveau 13
29 juillet 2014 à 15:32:49

Dans le lien sur stack overflow, il déclare ses routes dans un module spécifique, pas dans un middleware. Et ça, on est d'accord, c'est bien (malgré tout, le post en question date un peu, et express a beaucoup évolué depuis).

Quant à ta question, c'est simplement pasque les middleware sont exécutés lors du traitement de la requête, au moment de la recherche de route qui répondent aux critères de la requête actuelle. Du coup, déclarer une route alors qu'on est en train de la traiter, c'est logique qu'il ne la voit pas.

Tes routes doivent être déclarée au chargement de ton process, pas lors du traitement de la requête.

Kimpeek Kimpeek
MP
Niveau 10
29 juillet 2014 à 15:56:25

Quant à ta question, c'est simplement pasque les middleware sont exécutés lors du traitement de la requête, au moment de la recherche de route qui répondent aux critères de la requête actuelle. Du coup, déclarer une route alors qu'on est en train de la traiter, c'est logique qu'il ne la voit pas.

:d) D'ac, c'est l'idée semblable vers laquelle je m'étais orientée entretemps en testant ce code ci (qui marche)

Bref, il est clair qu'il s'agit uniquement de tests et rien d'autre pour visualiser le "parcours" de la requête.

--

var express = require('express');

var b = function(app){
return function(req,res,next){
var a = express();
a.get('/',function(req,res){res.end("middleware")}
);

return a(req,res,next);
}
}

var app = express();

app.use(b(app));
app.listen(4000);

Kimpeek Kimpeek
MP
Niveau 10
29 juillet 2014 à 16:01:27

Passer "app" en paramètre ne sert à rien dans ce code là. Mais c'est parce que j''ai remplacé "app" par "var a = express()"

Retourner un app(req,res,next) ne fonctionne pas, mais
a(req,res,next) oui.

Maintenant je comprends mieux pourquoi. (c'est tout ce que je voulais)

Kimpeek Kimpeek
MP
Niveau 10
29 juillet 2014 à 16:09:31

(malgré tout, le post en question date un peu, et express a beaucoup évolué depuis).

:d) Tu as un exemple de comment c'est organisé aujourd'hui, pour les larges projets ?

DébutPage précedente
Page suivanteFin
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : Thymotep
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment