11496 sujets

JavaScript, DOM et API Web HTML5

Salut à tous,

Y'a t-il des développeurs web sous windows qui se sont affranchi d'Apache en utilisant Node.JS pour faire du JavaScript façon coffeeScript ?

Je ne connais pas bien encore Node.JS. Est-il un substitut à Apache ? Peut-on y héberger un site entier contenant HTML5/CSS3/SASS(compass)/JavaScript(CoffeeScript)+PHP ?

en gros je travail déjà sous Windows avec Apache et HTML/CSS/SASS/PHP et Javascript mais j'aimerais pouvoir utiliser CoffeeScript mais apparemment pour cela j'aurais besoin de Node.JS

Merci de vos retours d'expérience à tous
Modérateur
miltone a écrit :
Je ne connais pas bien encore Node.JS. Est-il un substitut à Apache ?

Oui et non. Techniquement on peut s'en passer. Ce qui est très bien pour des système se voulant très léger. Mais pour un projet un peu conséquent, il est mieux d'avoir les deux (Apache en front ou à côté pour faire serveur de fichiers).

miltone a écrit :
Peut-on y héberger un site entier contenant HTML5/CSS3/SASS(compass)/JavaScript(CoffeeScript)+PHP ?

De base tout ça oui sauf php. C'est pas complètement impossible d'éxecuter du php avec node.js mais cela demanderait pas mal de travail/bricole. Alors pourquoi réinventer la roue? De nouveau l'Apache en front ou à côté fera ça très bien.

miltone a écrit :
en gros je travail déjà sous Windows avec Apache et HTML/CSS/SASS/PHP et Javascript mais j'aimerais pouvoir utiliser CoffeeScript mais apparemment pour cela j'aurais besoin de Node.JS

Par contre dans ce cas là tu peux t'affranchir de node.js en production, car tu n'utilisera que les js générés. Mais en développement oui c'est nécessaire. (Bien que il semble y avoir des compilateurs coffescript en php Smiley langue )
Administrateur
Bonjour,

j'allais répondre hier soir "que vient faire PHP là-dedans ?" et me suis rendu compte en cherchant un peu qu'il existait des projets comme node-php : est-ce que c'est pas utilisable, pas assez performant, autre problème ? (dans le cas d'un projet existant déjà avec du PHP)

Sinon node.js est un serveur et exécute du JS côté serveur donc oui pour le reste.
Pour SASS je n'ai pas testé (on part plutôt du côté de Prepros voire de grunt pour le dév et pas de SASS en production de toute façon : je travaille sur des pages statiques, des collègues sur WordPress, alsacreations.fr/.com c'est du Code Igniter... en CSS, en LESS, en SASS on a des projets bien différents Smiley cligne ).

Retour d'expérience : je ne suis pas développeur ni de formation ni au quotidien mais sais programmer jusqu'à un certain niveau et chercher l'info et la doc là où elle est. Et j'ai plus que des bases sur comment fonctionne un navigateur, un serveur, les échanges, mime-type, réécriture d'URL, toussa
J'ai commencé à coder un outil en interne devant faire appel au système de fichiers de l'OS et s'afficher dans un navigateur en codant un truc infâme en pur node.js puis en profitant des API d'Express.JS et là je rajoute jade pour des vues (donc au départ en node.js, je construisais le code HTML dans une chaîne. Plus crade c'est difficile mais ensuite je vois bien à quoi sert Express Smiley cligne ). J'ai l'impression que je suis déjà limité avec jade malgré la simplicité de mes vues (double boucle) ; faudra peut-être que j'utilise un autre moteur de templates.
Les docs sont tout à fait suffisantes avec un peu de Stack Overflow en plus (node.js en particulier est de bonne qualité) ; le fait que j'arrive à afficher un truc potable en si peu de temps est plutôt un bon signe !
C'est de toute façon un très bon exercice pour m'aguerrir en JS côté client mais je n'ai aucune contrainte vis-à-vis d'un client et ne m'occupe pas de mettre ça sur un serveur en prod donc mon retour s'arrête là Smiley smile

Quelques constatations "bas niveau", concrètes :
- les docs de node.js sont versionnées et Google renvoie d'anciennes versions avant la plus récente, attention
- je comprend bien comment fonctionne l'asynchrone et pourquoi mes variables "à la fin" contiennent pas ce à quoi je m'attend mais ça me donne pas pour autant la solution à chaque fois que j'ai un souci de ce côté-là (et j'en ai). Mais je suis pas dév, pas l'habitude de JS et d'en déboguer alors qu'en PHP à force je sais quelle piste explorer
- trouver un tuto pour express.js puis se référer à l'API (le paramétrage c'est un peu c/c en cherchant à quoi sert chaque ligne de l'exemple)
- j'aime bien la syntaxe de jade mais il a fallu que je cherche comment ça s'interfaçait avec node et express (comment on passe les variables, tout bêtement)
merci à tous pour vous qualité de réponse.

J'aimerais pouvoir au maximum comprendre pourquoi et comment mettre en place mon architecture d'appli WEB mais en même temps, tant que je n'essaie pas, je n'arriverais pas à tout comprendre. Et trouver le juste milieu entre réflexion et pratique est mon objectif.

Ma contrainte est de devoir également utiliser des solutions quasi-professionnelles et avec node.JS j'ai l'impression qu'on est vite borderline...Trop récent.

node-PHP est trop omega-alpha-super-beta-proof-of-concept comme dit le concepteur. Donc je ne préfère pas trop aborder cette piste.

La solution d'un Apache en Front d'un Node.JS me parait pas mal du tout mais ce qui j'ai du mal à cerner c'est comment je vais devoir travailler avec mon IDE si mon système ce base sur un Apache en Front d'un Node.JS ? La gestion du code va devenir vite atroce.

Après comment ce passe la distinction entre du code JS qu'on souhaite faire exécuter par l'utilisateur et ceux qu'on souhaite faire exécuter par le serveur ?

En tous cas j'ai quelques noms de technologies que je vais étudier rapidement pour mieux cerner le contexte général. En fait j'ai fait l'erreur d'apprendre CoffeeScript avant Node.JS donc je me pose plein de questions concernant ce nouveau principe de JS coté serveur.

En tout cas le sujet n'est pas clos et je reviendrais vers vous. Si vous avez d'autres remarque ou quelques pistes à me fournir concernant la façon de travail avec un Apache en Front et Node.JS derrière je suis très friant.
Modérateur
miltone a écrit :
Ma contrainte est de devoir également utiliser des solutions quasi-professionnelles et avec node.JS j'ai l'impression qu'on est vite borderline...Trop récent.

Node.js est utilisé dans des contextes tout à fait pros, généralement dans la situation suivante: Beaucoup de requêtes pour des processus légers. Son apparition pro est de plus en plus fréquente comme serveur de services pour des applis mobiles. (non seulement pour ses avantages mais aussi parce qu'il y a plus de nouveautés de ce côté là)

miltone a écrit :
node-PHP est trop omega-alpha-super-beta-proof-of-concept comme dit le concepteur. Donc je ne préfère pas trop aborder cette piste.

C'est pour ça que j'avais parlé de beaucoup travail/bricole Smiley langue

miltone a écrit :
La solution d'un Apache en Front d'un Node.JS me parait pas mal du tout mais ce qui j'ai du mal à cerner c'est comment je vais devoir travailler avec mon IDE si mon système ce base sur un Apache en Front d'un Node.JS ? La gestion du code va devenir vite atroce.

Pas vraiment, le but n'est évidemment pas de fournir une partie de la logique serveur en php et une autre en node.js mais plutôt d'utiliser apache comme serveur de fichiers (scripts, styles, images, etc.) et node.js pour la logique. ça se fait depuis des lustres avec du java, et même du php (avec deux apache).

miltone a écrit :
Après comment ce passe la distinction entre du code JS qu'on souhaite faire exécuter par l'utilisateur et ceux qu'on souhaite faire exécuter par le serveur ?

Comme la distinction entre un fichier javascript et un fichier php dans un site php. Y'a pas vraiment de rapport. Et ils seront idéalement bien séparés dans des dossiers à part pour éviter tout risque de confusion. Après on peut bien entendu imaginer de générer du javascript client avec du javascript serveur (comme on peut le faire avec du php), mais c'est toujours mieux si on peut éviter ce genre de bricole.

Et pour finir, tout cela dépend de ce que tu veux faire: Utiliser node.js comme language de serveur, utiliser php mais générer tes javascripts avec coffescript, utiliser les deux languages (dans une éventuelle logique de passer d'un serveur à l'autre progressivement) etc.

Et puis si tu explores la galaxie node.js, intéresse-toi assez rapidement à grunt. C'est un outil formidable pour travailler ses sites de manière moderne et collaborative.