Podcast: Téléchargement
Pour ce premier épisode de l’année 2015, Fabrice et Antoine échangent à propos de la plate-forme NodeJS et de son écosystème.
Principes :
Très bonne présentation des mécanismes de callback et Event Loop en JS : https://www.youtube.com/watch?v=8aGhZQkoFbQ
Outils :
- http://gruntjs.com/
- http://gulpjs.com/
- http://bower.io/
- https://www.npmjs.org/
- https://github.com/kripken/emscripten
- http://browserify.org/
Frameworks :
- Express : http://expressjs.com/
- StrongLoop : http://strongloop.com/
Alternatives :
- NodeJS vs Play! : http://fr.slideshare.net/brikis98/nodejs-vs-play-framework
- Dart : https://www.dartlang.org/
- Vert.x : http://vertx.io/
Bonjour,
Je viens d’écouter l’émission 🙂 merci au passage.
J’aimerais apporter une précision concernant la possibilité dans lancer des fonctions I/O bloquante.
Il existe sous NodeJS (pour les fonctions natives en tout cas) une version synchrone et donc bloquante des fonctions. Par exemple il est possible de lire le contenu d’un fichier de façon bloquante en utilisant la méthode readFileSync => http://nodejs.org/api/fs.html#fs_fs_readfilesync_filename_options
Alexandre.
Merci parrain de communiquer sur notre nouvelle aventure 😉
Pour nodejs, un truc un peu bizarre c’est la portée des variables avec les includes, les objets crée à partir d’un fichier inclus par exemple.
Pour exemple dans un de mes jeux:
var Map=require(‘./bombermanM_MapB.js’);
Et dans la classe incluse un « module.exports=Map; »
Attention à la phrase : « comme il n’y a pas de compilation, il y a des erreurs qui arrivent seulement pendant le runtime »
Je fais actuellement du C++ et j’ai beaucoup d’erreurs qui n’arrivent que dans le runtime 😉
Exemple tout bete: on défini un dictionnaire dans son .h sans l’instancier, dans une méthode on fait un ajout dans ce tableu, et bim erreur 🙂
En fait chaque include de fichier retourne un objet export sur lequel tu peux accrocher des variables ou fonctions. Cela permets de retrouver une mécanique de privé/public
C’est un peu la même ruse que en jQuery avec le pattern ou tu encapsule le ($)
Dans SARAH cela m’a permis de recharger à chaud des modules sans péter tout le soft
Merci pour le Podcast !
Un des arguments pour lesquels j’ai choisis NodeJS pour SARAH c’est
1. La simplicité: pas d’IDE, pas de compilation
2. La popularité tout le monde connait JS c’est le prochain Python
Le point qui bloque pour les gens c’est l’asynchrone quand ils veulent faire des choses un peu avancées
Le point « décevant » pour moi c’est l’asynchrone au niveau du serveur web. Cela impose de
1. Calculer ses données
2. Faire le rendu
Ce qui est une bonne approche dans la logique multi device car le backend va servir des données en REST qui seront habillées. Mais on perds en simplicité de rédaction des pages.
Ensuite il faut réinventer la roue:
– Sur l’authentification
– Les logs
– Le debug
– Le multilinguisme
– …
La gestion des NPM est une horreur car il n’y a pas cette phase de validation de Maven du coup c’est le bordel car on se retrouve avec un arbre de module avec potentiellement des modules redondants
Vous n’avez pas parlé de PhantomJS ou de Node Webkit ?
On peut faire des IO Bloquant mais on bloque tout, mais parfois cela a du sens.
– Au niveau API il existe des méthode « sycn » readSync()
– Et il y a des lib qui fournisse une manière d’imposer du code synchrone
Il y a des librairies JS qui sont ensuite compilée en C. Typiquement sur des moteurs 3D
A noter le Meetup NodeJS Paris
http://www.meetup.com/Nodejs-Paris/
Et l’initiative Freelance Academy
http://www.freelance-academy.fr/home